15 poleceń Dockera do zarządzania kontenerami [Lista, Stop, Start, Usuń i więcej]
Opublikowany: 2021-08-17Docker to popularne narzędzie do tworzenia i uruchamiania aplikacji kontenerowych. Jest dostępny dla wielu platform i używany jako jedna z technologii kontenerów zaplecza w Kubernetes.
W Dockerze albo tworzysz własne obrazy, aby uruchomić aplikację jako kontener, albo możesz pobrać i użyć tysięcy publicznych obrazów z repozytorium Dockera i użyć ich w swoim projekcie. Gdy obraz jest gotowy, możesz uruchomić swoje kontenery za pomocą tych obrazów. Kontener to uruchomiona instancja obrazu Docker.
Zarządzanie kontenerami platformy Docker to jeden z najważniejszych aspektów, którymi należy się zająć jako administrator systemu, który zarządza hostami/kontenerami platformy Docker.
W tym artykule skupimy się na zarządzaniu kontenerami za pomocą polecenia docker.
Uruchom polecenie
Polecenie docker run
służy do uruchamiania kontenera z obrazu przez określenie Image ID
lub nazwy Repository
i/lub Tag
.
$ docker run {image}
Przykład:
$ docker run nginx
Powyższe polecenie uruchamia wystąpienie aplikacji <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>
na hoście platformy Docker, jeśli już istnieje. Jeśli nie istnieje na hoście platformy Docker, przechodzi do centrum platformy Docker (domyślnie) i ściąga obraz w dół. Ale robi się to tylko po raz pierwszy. W kolejnych czasach ten sam obraz jest ponownie wykorzystywany.
Jeśli chcesz uruchomić określoną wersję obrazu, określ jej wersję oddzieloną dwukropkiem. Jest to znane jako Tag
. Jeśli nie określisz żadnego tagu, docker domyślnie uzna go za najnowszy.
Ponadto, jeśli chcesz uruchomić kontener w tle w trybie odłączonym, aby wrócić do monitu po uruchomieniu kontenera przez Docker, użyj flagi -d
.
Przykład:
$ 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 Polecenie
Polecenie docker ps
wyświetla listę wszystkich uruchomionych kontenerów i kilka podstawowych informacji na ich temat. Podobnie jak identyfikator kontenera, nazwa obrazu, czas utworzenia kontenera, aktualny stan i nazwa kontenera. Każdy kontener otrzymuje losową nazwę (jeśli nie określono wprost) i identyfikator.
Przykład:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion
Aby wyświetlić jednocześnie wszystkie uruchomione i nieuruchomione/zamknięte kontenery, możesz użyć:
$ docker ps -a
Przykład:
$ 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 Command
Podobnie jak polecenie ps
, ls
może być również używany do wyświetlania kontenerów. -a
flaga może być użyta do wylistowania wszystkich kontenerów (nie tylko uruchomionych).
$ docker container ls
Przykład:
$ 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 $
zatrzymaj polecenie
Polecenie docker stop
służy do zatrzymywania działającego kontenera. Tutaj musimy umieścić nazwę lub identyfikator kontenera wraz z tym.
$ docker stop {container-id}
Po pomyślnym zakończeniu zwróci nazwę lub identyfikator dockera.
Przykład:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion
Spowoduje to zwrócenie CONTAINER ID
, którego możesz użyć do zatrzymania kontenera.
$ docker stop 133f5 133f5
W przypadku tego i kolejnych przykładów pamiętaj, że nie musisz określać pełnej wartości CONTAINER ID
. Zaakceptuje do części, co czyni go wyjątkowym wśród innych uruchomionych kontenerów, ponieważ Docker wie, który kontener zatrzymać.
rm Command
docker rm
polecenie usuwa zatrzymany lub zamknięty kontener.
$ docker rm {CONTAINER NAME or ID}
Przykład:
$ docker rm 133f5 133f5 $
exec Polecenie
Możemy użyć polecenia exec
, aby wejść do działającego kontenera. Jest to przydatne do debugowania działających kontenerów lub wykonywania pewnych czynności w kontenerze.

$ docker exec –it {container} {command}
Przykład:
Załóżmy, że chcesz uruchomić powłokę bash
(zakładając, że obraz ma dostępny Bash, możesz również użyć innych dostępnych powłok) w kontenerze o nazwie unruffled_meninsky
w trybie interaktywnym, użyj:
$ docker exec –it unruffled_meninsky /bin/bash
To powinno wylądować w pojemniku na bash
shell. Tutaj flaga -i
oznacza tryb interaktywny, a -t
terminal. Jeśli chcesz po prostu wykonać jedno lub więcej poleceń i wyjść z kontenera, możesz użyć:
$ 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
Polecenie logów
W przypadku, gdy kontener jest uruchamiany w trybie odłączonym i chcemy zobaczyć jego logi, możemy użyć polecenia logs
, aby przejrzeć jego logi:
$ docker logs {CONTAINER NAME or ID}
Przykład:
$ 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 Polecenie
Aby skopiować pliki między kontenerem a systemem plików localhost, możesz użyć polecenia cp
.
$ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-
Przykład:
$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp
polecenie eksportu
Polecenie kontenera Docker oferuje opcję eksportu systemu plików kontenera jako pliku TAR.
$ docker container export {CONTAINER NAME or ID}
sprawdź dowództwo
Szczegółowe informacje o kontenerze możemy sprawdzić za pomocą polecenia inspect
jako:
$ docker inspect {CONTAINER NAME or ID}
LUB
$ docker container inspect {CONTAINER NAME or ID}
zabij polecenie
Działający kontener można zabić za pomocą polecenia kill
z opcjonalną flagą --signal
lub -s
. Można określić wiele kontenerów, aby zabić je za jednym zamachem.
$ docker kill {CONTAINER NAME or ID} [--signal VAL]
Przykład:
$ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $
statystyki Polecenie
Aby wyświetlić transmisję na żywo z wykorzystania zasobów przez kontener, możesz użyć polecenia stats
:
$ docker container stats {CONTAINER NAME or ID}
Przykład:
$ 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
górne polecenie
Podobnie jak top
command w Linuksie, możemy go użyć z Dockerem, aby uzyskać listę uruchomionych procesów.
$ docker container top {CONTAINER NAME or ID}
Przykład:
$ 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 $
zmień nazwę polecenia
Aby zmienić nazwę istniejącego kontenera, użyj polecenia rename
.
$ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}
Przykład:
$ 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 Polecenie
Możemy sprawdzić zmiany w plikach lub katalogach w systemie plików kontenera za pomocą polecenia diff
.
$ docker container diff {CONTAINER NAME or ID}
Przykład:
$ 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 $
Streszczenie
Podsumowując, Doker oferuje obszerny zestaw poleceń do zarządzania kontenerami od ich utworzenia do zniszczenia. W tym artykule omówiliśmy niektóre ważne polecenia i ich zastosowanie, co powinno dać dobry pomysł na zarządzanie kontenerami dockera.
Następnie zapoznaj się z niektórymi zasobami do nauki DevOps.