You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

도커는 매우 빨리 변화와 업데이트가 이루어 짐으로 설명되는 명령어는 참조만 하며, 상세 설명 및 업데이트 관련해서는 도커의 공식 사이트를 참조한다. 

또한 도커의 명령어에 대한 자세한 내용은 기본적으로 제공되는 도움말 기능을 이용한다. "--help" 인자를 명령어와 함께 사용하거나 docker help 명령어를 이용하면 도움말 기능을 이용할 수 있다.

docker run 

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

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

-a, --attach

주어진 스트림을 터미널에 연결

옵션이 지정되지 않으면 stdout, stderr 가 연결됨.

옵션을 지정하지 않고 컨테이너가 대화형 모드(-i, interactive) 로 시작되었다면 stdin도 연결됨.

-d, --detach컨테이너 분리모드로 실행, 컨테이너를 백그라운드로 실행시키고 컨테이너 ID로 반환.
-i, --interactiveStdin을 열어둔 상태로 유지, 일반적으로 대화형 컨테이너 섹션을 시작하기 위해서 -t 와 같이 사용됨. (# docker run -it debian /bin/bash)
-t, --tty가상  tty  를 할당, 일반적 대화형 컨테이너를 시작하기 위해서 -i 와 같이 사용됨. 
--restart

도커가 종료된 컨테이너가 어떤 경우에 재시작할지 구성함.

no  인자는 컨테이너를 재시작하지 않으며, always 는 종료상태에 상관없이 항상 재시작을 시도한다는 의미.

on-failure 인자는 컨테이너가 0이 아닌 상태로 종료된 경우에만 컨테이너를 재시작을 시도함. 

docker run --restart onfailure:10 postgres 명령은 postgres 컨테이너를 시작하고, 0이 아닌 코드로 종료된 경우에는 재시작 10번을 시도한다는 의미.

--rm컨테이너가 종료되면 자동으로 컨테이너 삭제. (-d 와 같이 사용될 수 없음)
-e , --env컨테이너 내부의 환경변수들을 설정함.
-h, --hostname컨테이너의 유닉스 호스트 이름을 설정 (# docker run -h "myhost" debian hostname)
--name NAME NAME  이라는 이름을 컨테이너에 할당. 여기에 할당된 이름은 다른 도커 명령어에서 해당 컨테이너를 찾을 때 사용됨



볼륨

-v --volume : 볼륨은 두가지 인자방식으로 사용하여 구성됨. 첫번재는 디렉토리만 명시하는것, 두번째는 바인드할 호스트 디렉토리 지정.

--volumes-from : 지정된 컨테이너의 볼륨을 마운트

네트워크

--expose :  도커파일의 EXPOSE 설정과 동일 -p 와 함께 사용됨.

--link :  지정된 컨테이너에 사설 네트워크 인터스페이스를 구성.

-p, --publish : 호스트에서 컨테이너로 접근할 수 있도록 컨테이너에 포트를 게시. (docker port 로 확인 가능)

-P, --publish-all : 컨테이너에서 노출된 모든 포트들을 호스트로 노출.

그외 기타

--entrypoint :  도커파일의  ENTRY POINT  설정은 모두 무시하고 주어진 인자를 이용하여 컨테이너의 엔트리포인트 설정.

-u , --user :  명령을 실행할 사용자 이름 또는 UID를 설정. 도커파일의 USER 설정을 무시하고 재정의됨.

-w, --workdir :  지정된 경로를 컨테이너의 작업 디렉토리로 설정.


컨테이너 관리 명령어

docker create

이미지를 이용하여 컨테이너를 생성하지만 컨테이너를 시작하지 않음.

docker run 에서 사용되는 대부분의 인자를 사용할 수 있음.

생성된 도커를 시작하려면 docker start  로 시작.

docker cp

 컨테이너와 호스트간의 파일과 디렉토리를 복사.

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 rm

컨테이너를 삭제하는 명령어.

docker rm [옵션] [NAME]

[root@localhost ~]# docker rm relaxed_blackwell
relaxed_blackwell

다음의 명령을 사용하여 나머지 컨테이너들을 삭제 할 수 있다.

# docker rm $(docker ps -aq)
CONTAINER ID
CONTAINER ID
CONTAINER ID
...


TIP : 중지된 컨테이너 정리하기 

내용입력





docker inspect [NAMES] OR [ID]

docker inspect 를 실행하면 컨테이너에 대한 자세한 정보를 확인 할 수 있다.

위의 이름은 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,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
.
.

위의 자세한 정보는 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 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

쉘에서 빠져 나오기.





  • No labels