Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3


Tip

도커는 매우 빨리 변화와 업데이트가 이루어 짐으로 설명되는 명령어는 참조만 하며, 

상세 설명 및 업데이트 관련해서는 도커의 공식 사이트를 참조한다. 

또한 도커의 명령어에 대한 자세한 내용은 기본적으로 제공되는 도움말 기능을 이용한다.

"--help" 인자를 명령어와 함께 사용하거나 docker help 명령어를 이용하면 도움말 기능을 이용할 수 있다.

docker run 

컨테이너의 시작과 관련된 명령어인 만큰 가장 복잡하면서 많은 인자들을 지원하고 있다.

인자에서 지원하는 대표적인 기능에는 이미지를 실행하는 방법, 도커파일 설정, 네트워크설정, 컨테이너의 권한과 리소스 설정등이 있다.

옵션설명
-ddetached 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 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를 입력하면 삭제됨.

※ 컨테이너가 실행중인 이미지는 삭제되지 않는다. 컨테이너는 이미지들의 레이어를 기반으로 실행중이므로 삭제가 불가능 하다.

※ 이름이 없는 모든 이미지를 삭제하는 방법은 다음과 같다.

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

Docker

images

도커 이미지 목록 확인하기

Code Block
# Dockerdocker images [option]
Docker

# 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

docker search

도커 허브에서 이미지 검색하기

Code Block
# docker search [option] <team>
Docker

docker push

도커 허브에 이미지 올리기

Code Block
# docker push [option] <image>
Docker

docker build 

도커파일을 이용하여 이미지를 생성한다

Docker

docker commit

컨테이너로부터 이미지를 생성한다. docker commit은 유용한 명령어이긴한데, 쉽게 재사용할 수 있는 docker build 를 사용한다.

docker export

컨테이너의 파일 시스템 내용을 STDOUT 에 tar 형식으로 저장.

저장된 결과는 import 명령어를 이용하여 로드후 이미지를 재생성 할 수 있다.

docker import

docker export 에 의하여 생성된 이미지를 파일시스템을 포함하여 재생성 한다.

docker history

이미지의 각 계층에 대한 정보를 반환한다.




레지스트리 관리

도커는 자격 증명을 홈 디렉토리에 .dockercfg 확장자를 가진 파일로 저장한다.

docker login

지정된 레지스트리 서버를 등록하거나 로그인한다.

서버가 지정되지 않으면 도커허브를 사용하는것으로 간주한다.

docker logout

도커 레지스트리로부터 로그아웃한다.