15 poleceń Dockera do zarządzania kontenerami [Lista, Stop, Start, Usuń i więcej]

Opublikowany: 2021-08-17

Docker 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.