도커(docker) 안에는 수 많은 명령어들이 있지만 기본적으로 다루기 위해 사용하는 일부 명령어만 정리 해본다.

도커(docker) 설치 관련

도커 설치 관련하여서는 아래 포스팅을 참조한다.

컨테이너 제어 명령어

컨테이너 내려받기

예시로 nginx 컨테이너를 받는다면 다음과 같이 적을 수 있다. latest 태그는 가장 최신 버전의 컨테이너 이미지를 가져온다.

# docker pull NAME[:TAG]
$ docker pull nginx:latest

컨테이너 실행

컨테이너 실행은 일반적으로 docker run 명령어를 사용하며 다음과 같은 형식을 가진다. ubuntu:16.04 컨테이너를 실행한다면 다음과 같이 실행할 수 있다.

# docker run [OPTION] IMAGE[:TAG] [COMMAND]
$ docker run -i -t ubuntu:16.04 /bin/bash

포어그라운드(fore-ground) 실행

t 옵션은 tty를 할당하고 i옵션은 표준 입출력을 사용한다. 예시로 ubuntu 16.04 버전의 컨테이너를 -i, -t 옵션을 주어 생성하고 해당 컨테이너의 기본 커맨드인 /bin/bash를 실행한다. 해당 커맨드는 입력해주지 않아도 같은 동작을 예상한다.

$ docker run -i -t ubuntu:16.04 bin/bash

데몬으로(detached) 실행

-d 옵션을 통해 데몬으로 실행한다. 일반적으로 웹서버 컨테이너 등을 해당 모드들로 실행한다. 예시로 nginx 컨테이너를 실행한다.

$ docker run -d -p 80:80 nginx

컨테이너 이름 할당

컨테이너를 명령어로 관리하기 위해 --name 옵션을 통해 이름을 지정한다. 이름을 지정하지 않으면 랜덤하게 이름이 부여되지만 관리하기는 어려우니 주의하자.

$ docker run -i -t --name my_ubuntu ubuntu:16.04 /bin/bash

컨테이너 포트 포워딩

생성 시에 -p 옵션 부여한다. 위의 데몬 실행 예시에서 nginx 컨테이너에 80포트를 노출하였는데 여러개를 노출 시키려면 -p를 여러개 사용하면 된다.

$ docker run -d --name my_nginx -p 80:80 -p 3306:3306 nginx:latest

컨테이너 종료 & 나오기

주로 컨테이너 내에서 터미널을 통해 입력하는데 exitCtrl + P,Q 2가지로 나뉜다. exit 명령어는 컨테이너를 아예 종료한다. Ctrl + P,Q 명령어는 현재 컨테이너 상태를 그대로 두고 본인의 연결만 빠져나온다.

# 컨테이너 종료
$ exit

컨테이너를 종료 시키지않고 백그라운드로 전환하고 싶을 때에는 Ctrl을 누른 상태에서 PQ를 순차적으로 눌러서 빠져나온다.

# 컨테이너 나오기 
$ Ctrl + P,Q

컨테이너 관리 명령어

컨테이너 목록 확인

docker ps 명령어를 통해 현재 가동되고 있는 컨테이너의 정보를 출력한다.

$ docker ps

모든 컨테이너 목록 확인

docker ps 명령어는 가동이 중지된 컨테이너는 출력하지 않는다. -a 옵션을 포함하면 만들어져 있는 모든 컨테이너 정보를 출력한다.

$ docker ps -a

컨테이너 재시작 및 연결

docker start 명령어를 통해 기존 실행이 중지 된 컨테이너를 시작할 수 있다. 그 후 docker attach 명령어를 통해 해당 컨테이너에 접속한다.

$ docker start my_ubuntu

start 한 컨테이너에 내부에 attach를 통해 붙는다.

$ docker attach my_ubuntu

컨테이너 정지

docker stop 명령어를 통해 현재 실행되고 있는 컨테이너를 구동 정지한다.

$ docker stop my_ubuntu

컨테이너 삭제

docker rm 명령어를 통해 실행을 중지 한 컨테이너를 컨테이너 목록에서 삭제한다. 삭제하지 않고 구동만 정지한 컨테이너는 스토리지 어딘가에 남아있어 용량을 차지한다.

$ docker rm my_ubuntu

정지와 삭제를 한번에

docker rm -f 옵션을 통해 가동 되고 있는 컨테이너를 한번에 정지 및 삭제를 할 수 있다.

$ docker rm -f my_ubuntu 

컨테이너 목록에 있는 모든 컨테이너 삭제

컨테이너 목록에 있는 모든 컨테이너를 한번에 지울 수 있다. 항상 모든, 강제라는 용어가 들어간 명령어를 사용할 때는 다시 확인하고 주의해서 사용하자.

$ docker container prune

컨테이너 종료 시 자동 삭제 옵션

docker run --rm 옵션을 통해 컨테이너를 종료하면 자동으로 삭제되도록 설정한다.

$ docker run -i -t --rm ubuntu:16.04

위 명령어는 우분투 16.04 컨테이너를 실행하고 내부에서 작업을 마치고 exit 명령어로 컨테이너 종료 시 해당 컨테이너를 자동으로 삭제한다.

컨테이너 자세한 상태 정보 출력

docker inspect 명령어를 통해 해당 컨테이너의 자세한 정보 및 상태를 알 수 있다. 컨테이너가 비정상 종료 된 원인 혹은 컨테이너의 세부 정보를 보고 싶을 때 주로 사용한다.

# docker inspect [container]
$ docker inspect my_ubuntu

이미지 관련 명령어

도커 이미지 목록

docker pull 명령어를 통해 내려받은 도커 이미지 들의 목록을 출력한다.

$ docker images

도커 이미지 삭제

컨테이너도 더 이상 사용하지 않고 해당 이미지도 사용하지 않아 삭제하게 된다면 docker rmi 명령어를 통해 이미지를 삭제할 수 있다.

# docker rmi IMAGE[:TAG]
$ docker rmi ubuntu:16.04

참고: 도커 공식 레퍼런스 페이지

Leave a comment