Page History
Table of Contents | ||
---|---|---|
|
Tip |
---|
도커는 매우 빨리 변화와 업데이트가 이루어 짐으로 설명되는 명령어는 참조만 하며, 상세 설명 및 업데이트 관련해서는 도커의 공식 사이트를 참조한다. 또한 도커의 명령어에 대한 자세한 내용은 기본적으로 제공되는 도움말 기능을 이용한다. "--help" 인자를 명령어와 함께 사용하거나 docker help 명령어를 이용하면 도움말 기능을 이용할 수 있다. |
Docker run
컨테이너의 시작과 관련된 명령어인 만큰 가장 복잡하면서 많은 인자들을 지원하고 있다.
인자에서 지원하는 대표적인 기능에는 이미지를 실행하는 방법, 도커파일 설정, 네트워크설정, 컨테이너의 권한과 리소스 설정등이 있다.
옵션 | 설명 |
---|---|
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
–name | 컨테이너 이름 설정 |
–rm | 프로세스 종료시 컨테이너 자동으로 삭제 |
-it | -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
–link | 컨테이너 연결 [컨테이너명:별칭] |
-i | 일반적으로 대화형 컨테이너 섹션을 시작하기 위함. |
-t | 가상 tty 를 할당 |
도커 정보
docker history
docker history 명령을 통해 이미지가 어떤 레이어로 어떻게 생성되었는지 출력한다.
docker info
도커 설치 및 사용방법 에 대한 상세 정보 출력.
docker help
명령어의 사용법과 도움말 출력.
docker version
컴파일에 사용된 버전 및 클라이언트 , 서버 버전 정보 출력.
컨테이너 관리
docker create
이미지를 이용하여 컨테이너를 생성하지만 컨테이너를 시작하지 않음.
docker run 에서 사용되는 대부분의 인자를 사용할 수 있음.
생성된 도커를 시작하려면 docker start 로 시작.
docker cp
컨테이너와 호스트간의 파일과 디렉토리를 복사.
docker attach
시작한 컨테이너에 접속한다.
다음 명령을 실행하면 Bash 쎌이 표시된다.
Code Block |
---|
# sudo docker attach hello root@6338ce52d07c:/# |
※ Bash 셸에서 exit 또는 Ctrl+D를 입력하면 컨테이너가 정지되며, Ctrl+P, Ctrl+Q를 차례대로 입력하여 컨테이너를 정지하지 않고, 컨테이너에서 빠져나오게 된다.
docker exec
컨테이너 명령어 실행하기 (exec) 또는 실행중인 컨테이너 내부에 접속하기.
실행중인 컨테이너에 들어가보거나 컨테이너의 파일을 실행하고 싶을 때 사용한다.
컨테이너 명령어를 실행하는 방법은 다음과 같다.
Code Block |
---|
# docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
run
명령어와 유사해 보이지만, 차이는 run
은 새로 컨테이너를 만들어서 실행하고 exec
는 실행중인 컨테이너에 명령어를 내리는 정도이다.
docker kill
실행중인 컨테이너를 강제로 중지하거나 전원을 끌때 사용된다.
Code Block |
---|
# docker kill [option] <container...> |
docker pause
실행중인 컨테이너 내부에 있는 모든 프로세스들을 일시 중지 한다.
중지된 프로세스는 어떠한 신호도 받을수 없으며 컨테이너 종료 또는 정리될 수 있다.
중지된 컨테이너를 다시 시작하려면 docker unpause 를 실행하면 된다.
docker start
중지 또는 종료된 컨테이너를 시작함, 또는 전원을 켠다.
Code Block |
---|
# docker start [options] <container...> |
docker restart
실행중인 컨테이너를 재시작할때 사용된다.
Code Block |
---|
# docker restart [option] <container...> |
docker stop
실행중인 컨테이너를 중지하건, 전원을 종료할때 사용된다.
Code Block |
---|
# docker stop [option] <container...> |
docker rm
컨테이너를 완전히 삭제 또는 폐기한다.
Code Block |
---|
# docker rm [option] <container...> |
다음의 명령을 사용하여 나머지 컨테이너들을 한번에 삭제 또는 폐기 할 수 있다.
Code Block |
---|
# docker rm $(docker ps -aq) CONTAINER ID CONTAINER ID CONTAINER ID ... |
※ NOTE : 중지된 컨테이너 정리하기
Code Block |
---|
# docker rm -v $(docker ps -a -q -f status=exited)</p> |
중지된 컨테이너를 개별로 삭제하는게 힘들다면, 위의 명령어와 같이
중지된 컨테이너 ID를 가져와서 한번에 삭제가 가능하다.
docker rmi
images 를 완전히 삭제 또는 폐기한다.
images를 통해 얻은 이미지 목록에서 이미지 ID를 입력하면 삭제됨.
다음은 이미지를 삭제하는 rmi 명령이다. 태그를 지정하지 않으면 latest 태그를 삭제함.
Code Block |
---|
# sudo docker rm hello
# sudo docker rm hello:0.1
# sudo docker rm exampleuser/hello:0.1
# sudo docker rm 192.168.0.39:5000/hello:0.1
# sudo docker rm exampleregistry.com:5000/hello:0.1 |
다음 명령은 실행되고 있는 이미지를 강제로 삭제합니다.
Code Block |
---|
# sudo docker run -i -t -d --name hello ubuntu:14.04 /bin/bash
# sudo docker rm -f hello |
모든 이미지를 한꺼번에 삭제하려면
다음과 같이 docker images
명령의 -a
, -q
옵션을 사용하여 이미지 ID를 구한 뒤 docker rmi
명령을 실행한다.
Code Block |
---|
# sudo docker rmi `sudo docker images -aq`
# sudo docker rmi $(sudo docker images -aq) |
-a
,-q
처럼 짧은 옵션은 서로 붙여 쓸 수 있습니다.
-f, --force=false: 이미지를 강제로 삭제합니다.
--no-prune=false: 태그가 없는 부모 이미지를 삭제하지 않습니다.
※ 컨테이너가 실행중인 이미지는 삭제되지 않는다. 컨테이너는 이미지들의 레이어를 기반으로 실행중이므로 삭제가 불가능 하다.
※ 이름이 없는 모든 이미지를 삭제하는 방법은 다음과 같다.
Code Block |
---|
[root@localhost ~]# docker rmi $(docker images -q -f dangling=true) |
컨테이너 정보
docker ps
현재 실행되고 있는 컨테이너들의 상세 정보들을 반환.
Code Block |
---|
[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 사이사이에 출력결과를 깔끔하게 확인 할 수 있다.
Code Block |
---|
# docker ps -a --format "table {{.ID}}\t{{.IMAGE}}\t{{.NAME}}" |
docker ps -a
중지된 컨테이너 (공식적으로 종료된 컨테이너라고 함) 를 포함한 모든 컨테이너의 목록을 반환.
docker diff
컨테이너의 파일시스템 변경사항 확인 반환, 시작된 이후에 변경된 파일의 목록이 반환된다.
즉 이미지로부터 컨테이너가 생성된 이후 컨테이너의 파일시스템에 적용된 변경사항을 반환 한다.
삭제된 또는 이동된 폴더 및 이동된 또는 추가된 모든 파일들과 저장소 드라이버와 관련되어서 생성된 파일들이 이에 해당된다.
Code Block |
---|
# docker diff [option] <container> |
Code Block |
---|
[root@localhost ~]# docker diff relaxed_blackwell A /basket A /basket/bash A /basket/cat A /basket/chgrp ... |
docker events
데몬의 실시간 이벤트 출력
Ctrl + C 누르면 종료.
docker inspect
docker inspect 명령어는 컨테이너뿐만 아니라 네트워크, 볼륨, 이미지등 모든 도커 단위의 상세 정보를 얻을 때 사용한다.
Code Block |
---|
# docker inspect [option] <container | image | ID ...> |
이름이 중복되는 경우 컨테이너에 대해 먼저 수행되며 이는 --type 을 명시하는것이 좋다.
아래의 예시는 relaxed_blackwell 이름으로 생성되었으며, --name 인수를 사용하여 이름을 직접 지정할 수 있다.
(예 : docker run --name boris debian echo "BOO")
Code Block |
---|
[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 인수를 사용하여 원하는 정보만을 필터하여 출력할 수 있다.
Code Block |
---|
[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 logs
컨테이너의 로그보기
Code Block |
---|
# docker logs [option] <container> |
로그는 컨테이너이름으로 실행하게 되면 컨테이너 내부에서 발생된 모든 작업 로그를 확인 할 수 있다.
Code Block |
---|
[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 ... |
docker port
컨테이너 노출된 포트 매핑 목록 반환.
내부 컨테이너 포트와 프로토콜 이용한 검색가능.
Code Block |
---|
# docker run -P <images> |
docker top
지정된 컨테이너에 실행중인 프로세스들의 대한 정보 반환.
ps 와 동일한 옵션을 사용할 수 있으며, 기본적으로 -ef 가 사용된다.
Code Block |
---|
# docker top [option] <container> [ps option] [root@localhost ~]# ID=$(docker run -d redis) [root@localhost ~]# docker top $ID UID PID PPID C STIME TTY TIME CMD polkitd 4021 4010 0 16:58 ? 00:00:00 redis-server *:6379 |
이미지 관리
docker images
도커 이미지 목록 확인하기
Code Block |
---|
# docker images [option] # docker images | head -4 |
docker pull
도커 이미지를 다운로드 하기
Code Block |
---|
# docker pull [option] <image> |
※ run 명령어를 입력하면 이미지가 존재하지않을대 자동으로 다운로드 된다.
pull은 도커 이미지의 최신버전을 다시 다운받을때 사용한다.
같은 태그일경우 이미지가 업데이트 된 경우 pull 명령어를 통하여 새로운 최신 버전을 다운로드 받는다.
※ 도커 허브에서 nginx 가 기본적으로 설치되어 있는 이미지를 내려받으면,
Code Block |
---|
# docker pull nginx # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx latest 61e8f94e1d65 39 hours ago 492.7 MB ... # docker run -d -p 80:80 nginx ... |
docker search
도커 허브에서 이미지 검색하기
Code Block |
---|
# docker search [option] <team> |
docker push
도커 허브에 이미지 올리기
Code Block |
---|
# docker push [option] <image> |
docker build
도커파일을 이용하여 이미지를 생성한다
docker commit
컨테이너로부터 이미지를 생성한다. docker commit은 유용한 명령어이긴한데, 쉽게 재사용할 수 있는 docker build 를 사용한다.
docker export
컨테이너의 파일 시스템 내용을 STDOUT 에 tar 형식으로 저장.
저장된 결과는 import 명령어를 이용하여 로드후 이미지를 재생성 할 수 있다.
docker import
docker export 에 의하여 생성된 이미지를 파일시스템을 포함하여 재생성 한다.
docker history
이미지의 각 계층에 대한 정보를 반환한다.
레지스트리 관리
도커는 자격 증명을 홈 디렉토리에 .dockercfg 확장자를 가진 파일로 저장한다.
docker login
지정된 레지스트리 서버를 등록하거나 로그인한다.
서버가 지정되지 않으면 도커허브를 사용하는것으로 간주한다.
docker logout
도커 레지스트리로부터 로그아웃한다.