도커는 매우 빨리 변화와 업데이트가 이루어 짐으로 설명되는 명령어는 참조만 하며, 상세 설명 및 업데이트 관련해서는 도커의 공식 사이트를 참조한다.
또한 도커의 명령어에 대한 자세한 내용은 기본적으로 제공되는 도움말 기능을 이용한다. "--help" 인자를 명령어와 함께 사용하거나 docker help 명령어를 이용하면 도움말 기능을 이용할 수 있다.
Docker ps
현재 실행되고 있는 컨테이너들의 상세 정보들을 반환.
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 29a503dbbb6c debian "/bin/bash" About a minute ago Up About a minute relaxed_blackwell
도커는 호스트를 구분할 수 있도록 컨테이너에 이름을 부여한다.
셸의 화면이 작아서 ps 명령어의 출력결과가 줄바꿈되어 보기 어려울때..
--format 옵션에 {{.ID}}\t{{.Status}} 와 같은 원하는 속성만 입력하여 정보를 출력 할 수 있다.
\t는 탭을 의미하며, \t 사이사이에 출력결과를 깔끔하게 확인 할 수 있다.
# docker ps -a --format "table {{.ID}}\t{{.IMAGE}}\t{{.NAME}}"
docker ps -a
중지된 컨테이너 (공식적으로 종료된 컨테이너라고 함) 를 포함한 모든 컨테이너의 목록을 반환.
Docker start
종료된 컨테이너를 시작함.
Docker stop
실행중인 컨테이너를 중지함.
Docker rm
컨테이너를 완전히 삭제함.
docker rm [옵션] [NAME]
[root@localhost ~]# docker rm relaxed_blackwell relaxed_blackwell
다음의 명령을 사용하여 나머지 컨테이너들을 삭제 할 수 있다.
# docker rm $(docker ps -aq) CONTAINER ID CONTAINER ID CONTAINER ID ...
Docker rmi
images 를 완전히 삭제함.
images를 통해 얻은 이미지 목록에서 이미지 ID를 입력하면 삭제됨.
※ 컨테이너가 실행중인 이미지는 삭제되지 않는다. 컨테이너는 이미지들의 레이어를 기반으로 실행중이므로 삭제가 불가능 하다.
TIP : 중지된 컨테이너 정리하기
# docker rm -v $(docker ps -a -q -f status=exited)
중지된 컨테이너를 개별로 삭제하는게 힘들다면, 위의 명령어와 같이
중지된 컨테이너 ID를 가져와서 한번에 삭제가 가능하다.
Docker run
컨테이너의 시작과 관련된 명령어인 만큰 가장 복잡하면서 많은 인자들을 지원하고 있다.
인자에서 지원하는 대표적인 기능에는 이미지를 실행하는 방법, 도커파일 설정, 네트워크설정, 컨테이너의 권한과 리소스 설정등이 있다.
옵션 | 설명 |
---|---|
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
–name | 컨테이너 이름 설정 |
–rm | 프로세스 종료시 컨테이너 자동으로 삭제 |
-it | -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
–link | 컨테이너 연결 [컨테이너명:별칭] |
-i | 일반적으로 대화형 컨테이너 섹션을 시작하기 위함. |
-t | 가상 tty 를 할당 |
Docker create
이미지를 이용하여 컨테이너를 생성하지만 컨테이너를 시작하지 않음.
docker run 에서 사용되는 대부분의 인자를 사용할 수 있음.
생성된 도커를 시작하려면 docker start 로 시작.
Docker images
도커 이미지 목록 확인하기
Docker pull
도커 이미지를 다운로드 하기
※ run 명령어를 입력하면 이미지가 존재하지않을대 자동으로 다운로드 된다.
pull은 도커 이미지의 최신버전을 다시 다운받을때 사용한다.
같은 태그일경우 이미지가 업데이트 된 경우 pull 명령어를 통하여 새로운 최신 버전을 다운로드 받는다.
docker cp
컨테이너와 호스트간의 파일과 디렉토리를 복사.
Docker inspect [NAMES] OR [ID] ★★★
docker inspect 명령어는 컨테이너뿐만 아니라 네트워크, 볼륨, 이미지등 모든 도커 단위의 정보를 얻을 때 사용한다.
이름이 중복되는 경우 컨테이너에 대해 먼저 수행되며 이는 --type 을 명시하는것이 좋다.
아래의 예시는 relaxed_blackwell 이름으로 생성되었으며, --name 인수를 사용하여 이름을 직접 지정할 수 있다.
(예 : docker run --name boris debian echo "BOO")
[root@localhost ~]# docker inspect relaxed_blackwell [ { "Id": "29a503dbbb6ce4e6965c9324dc35a27e116e905ec7079aea8ba1ec8fe9475c77", "Created": "2018-01-27T07:48:41.643491195Z", "Path": "/bin/bash", "Args": [], "State": { "Status": "running", "Running": true, ...
TIP : 보다 자세한 정보는 grep 또는 --format 인수를 사용하여 원하는 정보만을 필터하여 출력할 수 있다.
[root@localhost ~]# docker inspect relaxed_blackwell | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", [root@localhost ~]# docker inspect --format {{.NetworkSettings.IPAddress}} relaxed_blackwell 172.17.0.2
docker diff
컨테이너가 시작된 이후에 변경된 파일의 목록이 반환된다.
삭제된 또는 이동된 폴더 및 이동된 또는 추가된 모든 파일들과 저장소 드라이버와 관련되어서 생성된 파일들이 이에 해당된다.
[root@localhost ~]# docker diff relaxed_blackwell A /basket A /basket/bash A /basket/cat A /basket/chgrp A /basket/chmod A /basket/chown A /basket/cp A /basket/dash A /basket/date ...
Docker history [NAMES] OR [ID]
docker history 명령을 통해 이미지가 어떤 레이어로 어떻게 생성되었는지 출력한다.
docker log
로그는 컨테이너이름으로 실행하게 되면 컨테이너 내부에서 발생된 모든 작업 로그를 확인 할 수 있다.
[root@localhost ~]# docker logs relaxed_blackwell root@CONTAINER:/# mv /bin /basket root@CONTAINER:/# ls bash: ls: command not found root@CONTAINER:/# ll bash: ll: command not found ...
exit
쉘에서 빠져 나오기.
컨테이너 명령어 실행하기 (exec)
실행중인 컨테이너에 들어가보거나 컨테이너의 파일을 실행하고 싶을 때 사용한다.
컨테이너 명령어를 실행하는 방법은 다음과 같다.
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
run
명령어와 유사해 보이지만, 차이는 run
은 새로 컨테이너를 만들어서 실행하고 exec
는 실행중인 컨테이너에 명령어를 내리는 정도이다.