Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

nomad-programmer

[DevOps/Docker] Docker Container Commands (create, run, ls, ps, stats, start, stop, restart, pause, unpause) 본문

DevOps/Docker

[DevOps/Docker] Docker Container Commands (create, run, ls, ps, stats, start, stop, restart, pause, unpause)

scii 2020. 11. 24. 00:06

이미지가 만들어졌으면 컨테이너를 생성할 수 있다. 여기서는 컨테이너의 생성 및 시작을 수행하는 명령에 대해 설명한다.

Docker 컨테이너의 라이프 사이클

컨테이너에는 라이프 사이클이 있다. 컨테이너는 다음과 같은 상태로 변화한다.

Docker 컨테이너 상태

컨테이너를 조작하기 위한 기본 명령은 다음 네 가지이다.


컨테이너 생성 (docker container create)

이미지로부터 컨테이너를 생성한다. 이미지의 실체는 'Docker에서 서버 기능을 작동시키기 위해 필요한 디렉토리 및 파일들' 이다. 구체적으로는 Linux의 작동에 필요한 /etc 나 /bin 등과 같은 디렉토리 및 파일들이다.

docker container create 명령을 실행하면 이미지에 포함될 Linux의 디렉토리와 파일들의 스냅샷을 취한다.

스냅샷 (Snapshot) 이란?

스냅샷이란 스토리지 안에 존재하는 파일과 디렉토리를 특정 타이밍에서 추출한 것을 말한다.

docker container create 명령은 컨테이너를 작성하기만 할 뿐 컨테이너를 시작하지는 않는다. 즉, 컨테이너를 시작할 준비가 된 상태가 된 것이다.

Docker 컨테이너 생성


컨테이너 생성 및 시작 (docker container run)

이미지로부터 컨테이너를 생성하고, 컨테이너 상에서 임의의 프로세스를 시작한다. 예를 들면 Linux의 프로세스 관리와 마찬가지로 Nginx 등의 서버 프로세스를 백그라운드에서 항시 실행하거나 경우에 따라서는 강제 종료하는 일도 가능하다. 포트 번호와 같은 네트워크도 설정함으로써 외부에서 컨테이너의 프로세스에 액세스할 수 있다.

Docker 컨테이너 생성 및 시작

 

Docker 컨테이너의 생성 및 시작은 docker container run 명령으로 실행한다.

docker container run [옵션] 이미지명[:태그명] [인수]

지정할 수 있는 주요 옵션

옵션 설명
--attach, -a 표준 입력 (stdin), 표준 출력 (stdout), 표준 에러 (stderr) 에 어태치한다.
--cidfile 컨테이너 ID를 파일로 출력한다.
--detach, -d 컨테이너를 생성하고 백그라운드에서 실행한다.
--interactive, -i 컨테이너의 표준 입력을 연다.
--tty, -t 단말기 디바이스를 사용한다.

다음의 명령을 살펴보자. 아래의 명령은 컨테이너를 생성하고 컨테이너 안에서 명령을 실행하여 결과를 콘솔 상에 출력한다.

docker container run -it --name "test1" centos:7 /bin/cal
  1. docker container run : 컨테이너를 생성 및 실행
  2. -it : 콘솔에 결과를 출력하는 옵션
  3. --name "test1" : 컨테이너명
  4. centos:7 : 이미지명
  5. /bin/cal : 컨테이너에서 실행할 명령

먼저 centos:7 이라는 이름의 이미지를 바탕으로 test1이라는 이름의 컨테이너를 실행하고, 컨테이너 안에서 /bin/cal 명령을 실행한다. /bin/cal 명령은 Linux의 표준 명령으로 달력을 콘솔에 표시하는 명령이다.

컨테이너의 이름은 --name 다음에 임의의 이름으로 지정한다. --name 옵션을 생략하면 컨테이너명이 랜덤으로 자동 설정된다.

-i 옵션은 컨테이너의 표준 출력을 연다는 뜻이며, -t 옵션은 tty (단말 디바이스) 를 확보한다는 뜻이다.

docker container run -it --name "test1" centos:7 /bin/cal 

// 결과
    November 2020   
Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

docker container run 명령으로 컨테이너 안에서 쉘 (/bin/bash)을 실행할 수도 있다.

$ docker container run -it --name "test2" centos:7 /bin/bash
[root@c643c25ae50d /]#

test2 라는 이름의 컨테이너를 시작하여 /bin/bash 를 실행하면 콘솔의 프롬프트가 [$] 에서 [#] 으로 바뀌는 것을 볼 수 있다. 이로써 컨테이너 안에서 보통의 Linux 서버와 똑같은 명령 조작을 할 수 있따.

컨테이너를 종료시키려면 exit 명령을 입력하여 쉘을 종료시킨다.


컨테이너의 백그라운드 실행 (docker container run)

Docker를 이용하는 경우의 대부분은 컨테이너에 서버 기능을 가지게 해서 실행하는 경우이다.

docker container run [실행 옵션] 이미지명[:태그명] [인수]

지정할 수 있는 옵션

옵션 설명
--detach, -d 백그라운드에서 실행
--user, -u 사용자명을 지정
--restart=[no | on-failure | on-failure:횟수 n | always | unless-stopped 명령의 실행 결과에 따라 재시작을 하는 옵션
--rm 명령 실행 완료 후에 컨테이너를 자동으로 삭제

백그라운드에서 실행할 때의 옵션은 -d 이다. 다음과 같이 명령을 실행한다.

docker container run -d centos:7 /bin/ping localhost
  1. docker container run : 컨테이너를 생성 및 실행
  2. -d : 백그라운드에서 실행하는 옵션
  3. centos:7 : 이미지명
  4. /bin/ping localhost : 컨테이너에서 실행할 명령

이 명령은 centos:7 이라는 이름의 이미지를 바탕으로 하여 컨테이너를 생성하고, localhost에 대해 ping 명령을 실행한다. 옵션 -d는 컨테이너를 백그라운드에서 실행한다는 뜻이다. 백그라운드에서 실행하는 것을 디태치(detach) 모드라고 한다. 

// ping 명령의 실행에 의한 컨테이너의 백그라운드 시작
$ docker container run --detach centos:7 /bin/ping localhost

// 결과
aab35533f23d197d370c081f548ecdefedc732c10424dd4d1cc0d756ea298432

대화식으로 명령을 실행한 경우는 명령의 결과가 콘솔에 표시되었지만, 이번에 ping 결과는 콘솔에 표시되지 않는 대신 시작된 컨테이너의 컨테이너 ID가 표시된다.

백그라운드에서 실행되고 있는지 아닌지를 확인할 때는 docker container logs 명령을 사용한다. docker container logs 명령은 컨테이너의 로그를 확인하는 명령이다. 로그를 확인하고 싶은 컨테이너 식별자를 지정하여 실행한다. -t 옵션은 타임스탬프를 표시하는 것이다.

// 컨테이너의 로그 확인
docker container -t logs aab3

// 결과
2020-11-24T08:30:11.131042472Z PING localhost (127.0.0.1) 56(84) bytes of data.
2020-11-24T08:30:11.131099739Z 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.038 ms
2020-11-24T08:30:12.143421227Z 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.032 ms
2020-11-24T08:30:13.167407003Z 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.035 ms
2020-11-24T08:30:14.191518375Z 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.040 ms
2020-11-24T08:30:15.215487976Z 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.043 ms
...

위와 같이 컨테이너가 백그라운드에서 실행되는 있다는 로그를 확인할 수 있다. 또한 명령을 실행한 후에도 컨테이너는 남는다. 실행 후의 컨테이너를 자동으로 삭제하고 싶을 때는 --rm 옵션을 지정한다.

명령의 실행 결과에 따라 컨테이너를 재시작할 때는 --restart 옵션을 지정한다. --restart 옵션으로는 다음과 같은 값을 지정할 수 있다.

설정값 설명
no 재시작하지 않는다.
on-failure 종료 상태가 0이 아닐 때 재시작한다.
on-failure:횟수n 종료 상태가 0이 아닐 때 n번 재시작한다.
always 항상 재시작한다.
unless-stopped 최근 컨테이너가 정지 상태가 아니라면 항상 재시작한다.

예를 들어 다음의 명령을 실행하면 명령 안에서 /bin/bash를 exit 명령으로 종료해도 자동으로 컨테이너를 재시작한다.

// 컨테이너를 항상 재시작
$ docker container run -it --name="test1" --restart=always centos:7 /bin/bash
[root@5d74a22e7c77 /]# exit
exit

$ docker container ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
5d74a22e7c77        centos              "/bin/bash"         16 seconds ago      Up 7 seconds                            test

또한 --rm 옵션과 --restart 옵션은 동시에 사용할 수 없으므로 주의해야 한다.


컨테이너의 네트워크 설정 (docker container run)

컨테이너의 네트워크를 설정하기 위한 명령의 구문은 다음과 같다.

docker container run [네트워크 옵션] 이미지명[:태그명] [인수]

지정할 수 있는 주요 옵션

옵션 설명
--add-host=[호스트명:IP 주소] 컨테이너의 /etc/hosts 에 호스트명과 IP 주소를 정의
--dns=[IP 주소] 컨테이너용 DNS 서버의 IP 주소 지정
--expose 지정한 범위의 포트 번호를 할당
--mac-address=[MAC 주소] 컨테이너의 MAC 주소를 지정
--net=[bridge | none | container:<name | id> | host | NETWORK] 컨테이너의 네트워크를 지정
--hostname, -h 컨테이너 자신의 호스트명을 지정
--publish, -p[호스트의 포트 번호]:[컨테이너의 포트 번호] 호스트와 컨테이너의 포트 매핑
--publish-all, -p 호스트의 임의의 포트를 컨테이너에 할당

컨테이너를 시작할 때 네크워크에 관한 설정을 할 수 있다. 컨테이너의 포트 번호와 호스트 OS의 포트 번호를 매핑할 때는 다음과 같은 명령을 실행한다.

// 컨테이너의 포트 매핑
$ docker container run -d -p 8080:80 nginx

이 명령은 nginx라는 이름의 이미지를 바탕으로 컨테이너를 생성하고, 백그라운드에서 실행한다. 이 때 호스트의 포트 번호 8080과 컨테이너의 포트 번호 80을 매핑시킨다.

이 명령을 실행하고 호스트의 8080 포트에 액세스하면, 컨테이너에서 작동하고 있는 Nginx(80번 포트)의 서비스에 액세스할 수 있다.

또한 지정한 범위로 포트 번호를 할당하고 싶을 때는 --expose 옵션을 사용하고, 호스트 머신의 임의의 포트를 할당할 때는 -p 옵션을 사용한다.

포트 전송

DNS 서버를 설정할 때는 다음과 같은 명령을 실행한다. DNS 서버는 IP 주소로 지정해야 한다.

// 컨테이너의 DNS 서버 지정
$ docker container run -d --dns 192.168.1.1. nginx

컨테이너에 MAC 주소를 설정할 때는 다음과 같은 명령을 실행한다.

// MAC 주소 지정
$ docker container run -d --name="test" --mac-address="85:dd:ac:0a:29:33" centos:7

$ docker container inspect --format="{{ .Config.MacAddress }}" test

// 결과
85:dd:ac:0a:29:33

docker container inspect 명령을 실행하고 컨테이너 안의 네트워크 구성을 확인하면 컨테이너 안의 MAC 주소가 "85:dd:ac:0a:29:33" 으로 설정되어 있는 것을 알 수 있다.

다음의 명령을 사용하면 컨테이너 안의 /etc/hosts에 호스트명과 IP 주소를 정의할 수도 있다.

// 호스트명과 IP 주소 정의
$ docker container run -it --add-host test.com:192.168.1.1 centos:7

아래의 명령을 실행하고 컨테이너 안의 /etc/hosts 를 확인하면 컨테이너 자신의 호스트명이 www.test.com과  node1.test.com(192.168.1.1) 으로 정의되어 있는 것을 알 수 있다.

// 호스트명 설정
$ docker container run -it --hostname www.test.com --add-host node1.test.com:192.168.1.1 centos:7

$ docker container exec -it <컨테이너명> cat /etc/hosts
127.0.0.1  localhost
...
192.168.1.1 	node1.test.com
172.17.0.2 		www.test.com

또한, Docker 에서는 기본적으로 호스트 OS와 브릿지 연결을 하지만 --net 옵션을 사용하면 다음과 같은 네트워크 설정이 가능하다.

--net 옵션의 지정

설정값 설명
bridge 브릿지 연결(기본값)을 사용한다.
none 네트워크에 연결하지 않는다.
container:[name | id] 다른 컨테이너의 네트워크를 사용한다.
host 컨테이너가 호스트 OS의 네크워크를 사용한다.
NETWORK 사용자 정의 네크워크를 사용한다.

사용자 정의 네트워크는 docker network create 명령으로 작성한다. 이 네트워크를 작성하려면 Docker 네트워크 드라이버 또는 외부 네트워크 드라이버 플러그인을 사용해야 한다. 
똑같은 네트워크에 대해 여러 컨테이너가 연결을 할 수 있다. 사용자 정의 네트워크에 연결하면 컨테이너는 컨테이너의 이름이나 IP 주소로 서로 통신을 할 수 있다.
그리고 오버레이 네트워크나 커스텀 플러그인을 사용하면 멀티호스트에 대한 연결을 할 수 있다. 컨테이너가 동일한 멀티호스트 네트워크에 연결되어 있으면 이 네트워크를 통해 통신이 가능하다.

아래의 예는 브릿지 네트워크 드라이버를 사용하여 'webap-net' 이라는 이름의 네트워크를 작성하고, 작성한 네트워크 상에서 컨테이너를 실행한다.

// 사용자 정의 네트워크 작성
$ docker network create -d bridge webap-net
$ docker container run --net=webap-net -it centos:7

자원을 지정하여 컨테이너 생성 및 실행 (docker container run)

CPU나 메모리와 같은 자원을 지정하여 컨테이너를 생성 및 실행하는 명령의 구문은 다음과 같다.

docker container run [자원 옵션] 이미지명[:태그명] [인수]

지정할 수 있는 주요 옵션

옵션 설명
--cpu-shares, -c CPU의 사용 배분 (비율)
--memory, -m 사용할 메모리를 제한하여 실행 (단위는 b, k, m, g 중 하나)
--volume=[호스트의 디렉토리]:[컨테이너의 디렉토리], -v 호스트와 컨테이너의 디렉토리 공유

컨테이너를 시작할 때 CPU와 메모리의 자원 이용을 제한할 수 있다. 메모리의 사용량은 --memory 옵션으로 지정한다. CPU 시간은 --cpu-shares 옵션을 사용하면 상대 비율을 지정할 수 있다. 
기본값으로는 cpu-shares에 1024가 들어가므로, 예를 들어 CPU 시간을 그 반으로 할당하고 싶을 때는 cpu-shares의 값을 512로 설정한다.

// CPU 시간의 상대 비율과 메모리 사용량을 지정
$ docker container run --cpu-shares=512 --memory=1g centos:7

호스트 OS와 컨테이너 안의 디렉토리를 공유하고 싶을 때는 -v(--volume) 옵션을 지정한다. 예를 들어 호스트의 /home/scii/shareDir 디렉토리를 컨테이너의 /usr/share/nginx/html 디렉토리와 공유하고 싶을 때는 다음의 명령을 실행한다.

// 디렉토리 공유
$ docker container run -v /home/scii/shareDir:/usr/share/nginx/html nginx

컨테이너를 생성 및 시작하는 환경을 지정 (docker container run)

컨테이너의 환경변수나 컨테이너 안의 작업 디렉토리 등을 지정하여 컨테이너를 생성/실행하는 명령의 구문은 다음과 같다.

docker container run [환경설정 옵션] 이미지명[:태그명] [인수]

지정할 수 있는 주요 옵션

옵션 설명
--env=[환경변수], -e 환경변수를 설정한다.
--env-file=[파일명] 환경변수를 파일로부터 설정한다.
--read-only=[true | false] 컨테이너의 파일 시스템을 읽기 전용으로 만든다.
--workdir=[패스], -w 컨테이너의 작업 디렉토리를 지정한다.
-u, --user=[사용자명] 사용자명 또는 UID를 지정한다.

컨테이너를 시작할 때 환경변수를 설정하려면 다음과 같이 명령에 -e 옵션을 지정하여 실행한다.

// 환경변수 설정
$ docker container run -it -e foo=bar centos:7 /bin/bash

[root@1508ec7a2e54 /]# set
BASH=/bin/bash
...
foo=bar

환경변수를 정의한 파일로부터 일괄적으로 등록하고 싶은 경우, 다음과 같은 명령을 실행한다. env_list라는 이름의 파일 안에 환경변수를 정의해 놓고 있다.

// 환경변수의 일괄 설정
$ cat env_list
haha=hoho
foo=bar
unreal=good
unity=good

$ docker container run -it --env-file=env_list centos:7 /bin/bash

[root@32612ac9b000 /]# set
BASH=/bin/bash
...
haha=hoho
foo=bar
unreal=good
unity=good

컨테이너의 작업 디렉토리를 지정하여 실행하고 싶은 경우는 다음의 명령을 실행한다. 이 예에서는 컨테이너의 /tensionflow를 작업 디렉토리로 하고 있다.

// 작업 디렉토리 설정
$ docker container run -it --workdir=/tensorflow centos:7 /bin/bash

[root@090b9ae16322 tensorflow]# pwd
/tensorflow

또한 컨테이너를 시작할 때 파일 시스템을 읽기 전용으로 하고 싶을 때는 --read-only 옵션을 설정한다.


가동 컨테이너 목록 표시 (docker container ls)

Docker 상에서 작동하는컨테이너의 가동 상태를 확인할 때는 docker container ls 명령을 사용한다. 이 명령을 실행하면 가동 중인 컨테이너의 상태가 목록으로 표시된다. 

docker container ls [옵션]

지정할 수 있는 주요 옵션

옵션 설명
--all, -a 실행 정지 중인 것도 포함하여 모든 컨테이너를 표시
--filter, -f 표시할 컨테이너 필터링
--format 표시 포맷을 지정
--last, -n 마지막으로 실행된 n건의 컨테이너만 표시
--latest, -l 마지막으로 실행된 컨테이너만 표시
--no-tunc 정보를 생략하지 않고 표시
--quiet, -q 컨테이너 ID만 표시
--size, -s 파일 크기 표시
// 컨테이너 목록 표시 (-a 옵션으로 정지중인 컨테이너도 표시)
$ docker container ls -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
150e31d7e99b        alpine/git          "git clone https://g…"   2 weeks ago         Exited (0) 2 weeks ago                       repo

명령의 실행 결과의 의미는 다음과 같다.

항목 설명
CONTAINER ID 컨테이너 ID
IMAGE 컨테이너의 바탕이 된 이미지
COMMAND 컨테이너 안에서 실행되고 있는 명령
CREATED 컨테이너 작성 후 경과 시간
STATUS 컨테이너의 상태 (restarting | running | paused | exited)
PORTS 할당된 포트
NAMES 컨테이넝 이름

Docker 컨테이너에는 컨테이너마다 CONTAINER ID가 할당된다. 실행 예를 보면 repo 라는 컨테이너(CONTAINER ID: 150e31d7e99b) 가 있다는 것을 알 수 있다. 또한 docker container ls 명령에 -a 옵션을붙이면 정지 중인 컨테이너도 모두 표시된다.
표시할 컨테이너를 필터링할 때는 -f 옵션을 지정한다. 필터링 조건은 key=value로 지정한다. 예를 들면 컨테이너명이 test1인 것을 조건으로 할 때는 다음과 같이 지정한다.

$ docker container -a -f name=test1

또한 STATUS에 종료 코드가 0인 것을 표시할 때는 다음과 같이 지정한다.

$ docker container -a -f exited=0

출력 형식을 변경하고 싶을 때는 --format 옵션을 지정한다. 출력 형식으로는 다음과 같은 플레이스 홀더를 지정할 수 있다.

플레이스 홀더 설명
.ID 컨테이너 ID
.Image 이미지 ID
.Command 실행 명령
.CreatedAt 컨테이너가 작성된 시간
.RunningFor 컨테이너의 가동 시간
.Ports 공개 포트
.Status 컨테이너의 상태
.Size 컨테이너 디스크 크기
.Names 컨테이너명
.Mounts 볼륨 마운트
.Networks 네트워크명

예를 들어 컨테이너 ID(ID)와 가동 중인지 아닌지의 상태(status)를 콜론으로 구분하여 표시하려면 다음과 같은 명령을 실행한다.

$ docker container ls -a --format "{{.Names}}: {{.Status}}"

repo: Exited (0) 2 weeks ago

또한 출력 항목을 표 형식으로 하고 싶을 때는 다음의 명령처럼 --format 옵션에 table을 지정한다.

// 컨테이너 목록을 표 형식으로 출력한다.
$ docker container ls -a --format "table {{.Names}}\t{{.Status}}\t {{.Mounts}}"

NAMES               STATUS                    MOUNTS
repo                Exited (0) 2 weeks ago    ccf3dae40bf718…

컨테이너 가동 확인 (docker container stats)

Docker 상에서 작동하는 컨테이너 가동 상태를 확인할 때는 docker container stats 명령을 사용한다. 이 명령을 실행하면 컨테이너 가동 상태가 목록으로 표시된다.

docker container stats [컨테이너 식별자]

예를 들어 webserver라는 이름의 컨테이너 가동 상황을 확인하고 싶을 때는 다음과 같이 명령을 실행한다.

// 컨테이너 가동 확인
$ docker container stats webserver

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
52a6e2342e10        webserver           0.00%               4.52MiB / 1GiB      0.44%               111kB / 35kB        0B / 8.19kB         2

명령의 실행 결과의 의미는 다음과 같다.

항목 설명
CONTAINER ID 컨테이너 식별자
NAME 컨테이너명
CPU % CPU 사용률
MEM USAGE/LIMIT 메모리 사용량/컨테이너에서 사용할 수 있는 메모리 제한
MEM % 메모리 사용률
NET I/O 네트워크 I/O
BLOCK I/O 블록 I/O
PIDS PID (Windows 컨테이너 제외)

상태의 확인이 끝나면 Ctrl+C 를 눌러 명령을 종료시킨다.

또한 컨테이너에서 실행 중인 프로세스를 확인할 때는 docker container top 명령을 사용한다. 다음의 명령은 'webserver' 라는 이름의 컨테이너에서 작동하고 있는 프로세스를 확인하는 예이다.

// 프로세스 확인
$ docker container top webserver

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                12377               12361               0                   23:06               ?                   00:00:00            nginx: master process nginx -g daemon off;
systemd+            12448               12377               0                   23:06               ?                   00:00:00            nginx: worker process

컨테이너 시작 (docker container start)

정지하고 있는 컨테이너를 시작할 때는 docker container start 명령을 사용한다.

docker container start [옵션] <컨테이너 식별자> [컨테이너 식별자]

지정할 수 있는 주요 옵션

옵션 설명
--attach, -a 표준 출력, 표준 오류 출력을 연다.
--interactive, -i 컨테이너의 표준 입력을 연다.

예를 들면 컨테이너 ID가 abcd5~ 인 컨테이너를 시작하려면 다음의 명령을 실행한다.

// 컨테이너 시작
$ docker container start abcd5

여러 개의 컨테이너를 한꺼번에 시작하고 싶을 때는 인수에 컨테이너 식별자를 여러 개 지정한다.


컨테이너 정지 (docker container stop)

실행 중인 컨테이너를 정지할 때는 docker container stop 명령을 사용한다. 이 명령의 구문은 다음과 같다.

docker container stop [옵션] <컨테이너 식별자> [컨테이너 식별자]

지정할 수 있는 옵션

옵션 설명
--time, -t 컨테이너의 정지 시간을 지정 (기본값은 10초)

예를 들어 컨테이너 ID가 abcd5~인 컨테이너를 2초 후에 정지시키려면 다음과 같은 명령을 실행한다.

// 컨테이너 정지
$ docker container stop -t 2 abcd5

강제적으로  컨테이너를 정지시킬 때는 docker container kill 명령을 사용한다.


컨테이너 재시작 (docker container restart)

컨테이너를 재시작할 때는 docker container restart 명령을 사용한다.

$ docker container restart [옵션] <컨테이너 식별자> [컨테이너 식별자]

지정할 수 있는 주요 옵션

옵션 설명
--time, -t 컨테이너의 재시작 시간을 지정 (기본값은 10초)

예를 들어 컨테이너명이 'webserver' 인 컨테이너를 2초 후에 재시작하려면 다음과 같은 명령을 실행한다.

// 컨테이너 재시작
$ docker container restart -t 2 webserver

또한 컨테이너 안에서 실행하는 명령의 종료 status (정상 종료되었는지 유무) 에 따라 컨테이너를 자동으로 재시작하고 싶은 경우는 docker container run 명령에서 --restart 옵션을 사용한다.


컨테이너 삭제 (docker container rm)

정지하고 있는 컨테이너를 삭제할 때는 docker container rm 명령을 사용한다.

docker container rm [옵션] <컨테이너 식별자> [컨테이너 식별자]

지정할 수 있는 주요 옵션

옵션 설명
--force, -f 실행 중인 컨테이너를 강제로 삭제
--volumes, -v 할당한 볼륨을 삭제

예를 들어 컨테이너명이 abcd5~ 인 컨테이너를 삭제하려면 다음과 같이 명령한다.

$ docker container rm abcd5

정지 중인 모든 컨테이너를 삭제하려면 docker container prune 명령을 사용한다.


컨테이너 중단 / 재개 (docker container pause / docker container unpause)

실행중인 컨테이너에서 작동 중인 프로세스를 모두 중단시킬 때는 docker container pause 명령을 사용한다.

docker container pause <컨테이너 식별자>

예를 들어 컨테이너명이 webserver인 컨테이너를 일시 중단시키려면 다음의 명령을 실행한다. 중단된 컨테이너는 docker container ls 명령으로 확인하면 [STATUS]가 (Paused)로 되어 있다는 것을 알 수 있다.

// 컨테이너 중단
$ docker container pause webserver

$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                  NAMES
e6d7e7594e66        nginx               "/docker-entrypoint.…"   3 hours ago         Up 8 minutes (Paused)   0.0.0.0:8080->80/tcp   webserver

중단시킨 webserver의 컨테이너를 재개하려면 다음의 명령을 실행한다.

$ docker container unpause webserver
Comments