컨테이너를 관리하는 15가지 Docker 명령 [목록, 중지, 시작, 제거 등]

게시 됨: 2021-08-17

Docker는 컨테이너화된 애플리케이션을 빌드하고 실행하는 데 널리 사용되는 도구입니다. 여러 플랫폼에서 사용할 수 있으며 Kubernetes의 백엔드 컨테이너 기술 중 하나로 사용됩니다.

Docker에서 애플리케이션을 컨테이너로 실행하기 위해 자체 이미지를 빌드하거나 Docker 리포지토리에서 수천 개의 공개 이미지를 가져와서 프로젝트에서 사용할 수 있습니다. 이미지가 준비되면 해당 이미지를 사용하여 컨테이너를 시작할 수 있습니다. 컨테이너는 Docker 이미지의 실행 중인 인스턴스입니다.

Docker 컨테이너 관리는 Docker 호스트/컨테이너를 관리하는 시스템 관리자로서 돌봐야 할 가장 중요한 측면 중 하나입니다.

이 기사에서는 docker 명령을 사용하여 컨테이너를 관리하는 데 중점을 둘 것입니다.

명령을 실행

docker run 명령은 Image ID 또는 Repository 및/또는 Tag 이름을 지정하여 이미지에서 컨테이너를 실행하는 데 사용됩니다.

 $ docker run {image}

예시:

 $ docker run nginx

위 명령은 도커 호스트에서 <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span> 애플리케이션 의 인스턴스가 이미 있는 경우 이를 실행합니다. Docker 호스트에 존재하지 않는 경우 Docker 허브(기본값)로 이동하여 이미지를 아래로 가져옵니다. 그러나 이것은 처음으로 수행됩니다. 이후에는 동일한 이미지가 재사용됩니다.

특정 버전의 이미지를 실행하려면 해당 버전을 콜론으로 구분하여 지정하십시오. 이것을 Tag 라고 합니다. 태그를 지정하지 않으면 docker는 기본적으로 태그를 최신 태그로 간주합니다.

또한 Docker가 컨테이너를 시작한 후 프롬프트로 돌아가도록 분리된 모드에서 백그라운드에서 컨테이너를 실행하려면 -d 플래그를 사용하십시오.

예시:

 $ docker run nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 33847f680f63: Pull complete dbb907d5159d: Pull complete 8a268f30c42a: Pull complete b10cf527a02d: Pull complete c90b090c213b: Pull complete 1f41b2f2bf94: Pull complete Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method 2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1 2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:13:23 [notice] 1#1: start worker processes 2021/08/15 12:13:23 [notice] 1#1: start worker process 33 2021/08/15 12:13:23 [notice] 1#1: start worker process 34

ps 명령

docker ps 명령은 실행 중인 모든 컨테이너와 이에 대한 몇 가지 기본 정보를 나열합니다. 컨테이너 ID, 이미지 이름, 컨테이너 생성 시간, 현재 상태, 컨테이너 이름과 같습니다. 각 컨테이너는 임의의 이름(명시적으로 지정되지 않은 경우)과 ID를 얻습니다.

예시:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion

실행 중인 모든 컨테이너와 실행 중이 아닌/종료된 컨테이너를 한 번에 나열하려면 다음을 사용할 수 있습니다.

 $ docker ps -a

예시:

 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka 6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley

ls 명령

ps 명령과 마찬가지로 ls 도 컨테이너를 나열하는 데 사용할 수 있습니다. -a 플래그를 사용하여 실행 중인 컨테이너뿐만 아니라 모든 컨테이너를 나열할 수 있습니다.

 $ docker container ls

예시:

 $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann 904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new $

중지 명령

docker stop 명령은 실행 중인 컨테이너를 중지하는 데 사용됩니다. 여기에 컨테이너 이름 또는 ID를 함께 넣어야 합니다.

 $ docker stop {container-id}

성공하면 도커 이름 또는 ID를 반환합니다.

예시:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion

그러면 컨테이너를 중지하는 데 사용할 수 있는 CONTAINER ID 가 반환됩니다.

 $ docker stop 133f5 133f5

이 예제와 다음 예제에서는 CONTAINER ID 의 전체 값을 지정할 필요가 없습니다. Docker가 중지할 컨테이너를 알고 있으므로 실행 중인 다른 컨테이너 중에서 고유하게 만드는 부분까지 허용합니다.

rm 명령

docker rm 명령은 중지되거나 종료된 컨테이너를 제거합니다.

 $ docker rm {CONTAINER NAME or ID}

예시:

 $ docker rm 133f5 133f5 $

실행 명령

exec 명령을 사용하여 실행 중인 컨테이너 내부로 이동할 수 있습니다. 이것은 실행 중인 컨테이너를 디버그하거나 컨테이너 내에서 몇 가지 작업을 수행하는 데 유용합니다.

 $ docker exec –it {container} {command}

예시:

대화형 모드에서 unruffled_meninsky 라는 컨테이너 내에서 bash 셸(이미지에 Bash를 사용할 수 있다고 가정하면 다른 사용 가능한 셸도 사용할 수 있음)을 시작하려는 경우 다음을 사용합니다.

 $ docker exec –it unruffled_meninsky /bin/bash

이것은 bash 쉘의 컨테이너 내부에 착륙해야 합니다. 여기서 플래그 -i 는 대화식 모드를 나타내고 -t 는 터미널을 나타냅니다. 하나 이상의 명령을 실행하고 컨테이너에서 나가려면 다음을 사용할 수 있습니다.

 $ docker exec unruffled_meninsky cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 cd2eed4acf34

로그 명령

컨테이너가 분리 모드로 시작되고 로그를 보고 싶은 경우 logs 명령을 사용하여 로그를 검토할 수 있습니다.

 $ docker logs {CONTAINER NAME or ID}

예시:

 $ docker logs 7da6dcebaf9c /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method 2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1 2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:14:09 [notice] 1#1: start worker processes 2021/08/15 12:14:09 [notice] 1#1: start worker process 31 2021/08/15 12:14:09 [notice] 1#1: start worker process 32 $

cp 명령

컨테이너와 localhost 파일 시스템 간에 파일을 복사하려면 cp 명령을 사용할 수 있습니다.

 $ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-

예시:

 $ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp

내보내기 명령

Docker 컨테이너 명령은 컨테이너의 파일 시스템을 TAR 파일로 내보내는 옵션을 제공합니다.

 $ docker container export {CONTAINER NAME or ID}

검사 명령

다음과 같이 inspect 명령을 사용하여 컨테이너에 대한 자세한 정보를 확인할 수 있습니다.

 $ docker inspect {CONTAINER NAME or ID}

또는

$ docker container inspect {CONTAINER NAME or ID}

죽이기 명령

실행 중인 컨테이너는 선택적 --signal 또는 -s 플래그와 함께 kill 명령을 사용하여 종료할 수 있습니다. 여러 컨테이너를 지정하여 한 번에 종료할 수 있습니다.

 $ docker kill {CONTAINER NAME or ID} [--signal VAL]

예시:

 $ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $

통계 명령

컨테이너의 리소스 사용량에 대한 실시간 스트림을 표시하려면 stats 명령을 사용할 수 있습니다.

 $ docker container stats {CONTAINER NAME or ID}

예시:

 $ docker container stats thirsty_volhard CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3

상단 명령

Linux의 top 명령과 마찬가지로 Docker와 함께 사용하여 실행 중인 프로세스 목록을 가져올 수 있습니다.

 $ docker container top {CONTAINER NAME or ID}

예시:

 $ docker container top thirsty_volhard UID PID PPID C STIME TTY TIME CMD root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process $

이름 바꾸기 명령

기존 컨테이너의 이름을 바꾸려면 이름 rename 명령을 사용합니다.

 $ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}

예시:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container $ docker container rename nginx_container nginx_new $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new $

diff 명령

diff 명령을 사용하여 컨테이너의 파일 시스템에 있는 파일 또는 디렉토리의 변경 사항을 검사할 수 있습니다.

 $ docker container diff {CONTAINER NAME or ID}

예시:

 $ docker container diff nginx_new C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/uwsgi_temp A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp C /etc C /etc/nginx C /etc/nginx/conf.d C /etc/nginx/conf.d/default.conf C /run A /run/nginx.pid $

요약

결론적으로, Doker는 컨테이너 생성에서 파괴에 이르기까지 컨테이너를 관리하기 위한 광범위한 명령 세트를 제공합니다. 이 기사에서는 도커 컨테이너 관리에 대한 좋은 아이디어를 제공하는 몇 가지 중요한 명령과 사용법을 다루었습니다.

다음으로 DevOps를 배울 수 있는 몇 가지 리소스를 찾으십시오.