15 comenzi Docker pentru a gestiona containerele [List, Stop, Start, Remove and More]

Publicat: 2021-08-17

Docker este un instrument popular pentru a construi și rula aplicații containerizate. Este disponibil pentru mai multe platforme și este folosit ca una dintre tehnologiile de containere back-end din Kubernetes.

În Docker, fie vă creați propriile imagini pentru a rula aplicația ca container, fie puteți extrage și utiliza mii de imagini publice din depozitul Docker și le utilizați în proiectul dvs. Odată ce imaginea este gata, vă puteți lansa containerele folosind acele imagini. Un container este o instanță care rulează a unei imagini Docker.

Gestionarea containerelor Docker este unul dintre cele mai importante aspecte de care trebuie să aveți grijă ca administrator de sistem care gestionează gazde/containere Docker.

În acest articol, ne vom concentra pe gestionarea containerelor folosind comanda docker.

executa comanda

Comanda docker run este utilizată pentru a rula un container dintr-o imagine prin specificarea Image ID -ului imaginii sau a Repository și/sau a numelui Tag .

 $ docker run {image}

Exemplu:

 $ docker run nginx

Comanda de mai sus rulează o instanță a aplicației <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span> pe o gazdă docker, dacă aceasta există deja. Dacă nu există pe gazda Docker, se iese în hub-ul docker (în mod implicit) și trage imaginea în jos. Dar asta se face doar prima dată. Pentru perioadele ulterioare, aceeași imagine este reutilizată.

Dacă doriți să rulați o anumită versiune a unei imagini, specificați versiunea acesteia, separată prin două puncte. Aceasta este cunoscută sub numele de Tag . În cazul în care nu specificați nicio etichetă, docker o va considera implicit cea mai recentă.

În plus, dacă doriți să rulați containerul în fundal într-un mod detașat, astfel încât să reveniți la prompt după ce Docker lansează containerul, utilizați -d flag.

Exemplu:

 $ 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

Comanda ps

Comanda docker ps listează toate containerele care rulează și câteva informații de bază despre acestea. La fel ca ID-ul containerului, numele imaginii, ora în care este creat containerul, starea curentă și numele containerului. Fiecare container primește un nume aleatoriu (dacă nu este specificat în mod explicit) și un ID.

Exemplu:

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

Pentru a enumera toate containerele care rulează și nu rulează/ieșise simultan, puteți utiliza:

 $ docker ps -a

Exemplu:

 $ 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

Comanda ls

Ca și comanda ps , ls poate fi folosit și pentru listarea containerelor. -a steag poate fi folosit pentru a lista toate containerele (nu doar pe cele care rulează).

 $ docker container ls

Exemplu:

 $ 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 $

Comanda oprire

Comanda de docker stop este utilizată pentru a opri un container care rulează. Aici trebuie să punem numele containerului sau ID-ul împreună cu acesta.

 $ docker stop {container-id}

La succes, va returna numele sau ID-ul dockerului.

Exemplu:

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

Aceasta va returna CONTAINER ID pe care îl puteți folosi pentru a opri containerul.

 $ docker stop 133f5 133f5

Pentru acest exemplu și pentru cele viitoare, rețineți că nu trebuie să specificați o valoare completă a CONTAINER ID . Va accepta până la piesa, ceea ce o face unică printre alte containere care rulează, deoarece Docker știe ce container să oprească.

Comanda rm

Comanda docker rm elimină un container oprit sau ieșit.

 $ docker rm {CONTAINER NAME or ID}

Exemplu:

 $ docker rm 133f5 133f5 $

Comanda exec

Putem folosi comanda exec pentru a intra într-un container care rulează. Acest lucru este util pentru a depana containerele care rulează sau pentru a face unele lucruri într-un container.

 $ docker exec –it {container} {command}

Exemplu:

Să presupunem că doriți să lansați shell-ul bash (presupunând că imaginea are Bash disponibil, puteți utiliza și alte shell-uri disponibile) într-un container numit unruffled_meninsky în modul interactiv, utilizați:

 $ docker exec –it unruffled_meninsky /bin/bash

Acest lucru ar trebui să vă aterizeze în interiorul containerului pe o carcasă de bash . Aici steagul -i reprezintă modul interactiv și -t pentru terminal. Dacă doriți doar să executați una sau mai multe comenzi și să ieșiți din container, puteți utiliza:

 $ 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

Comandă logs

În cazul în care un container este lansat în modul detașat și dorim să-i vedem jurnalele, putem folosi comanda logs pentru a-și revizui jurnalele:

 $ docker logs {CONTAINER NAME or ID}

Exemplu:

 $ 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 $

Comanda cp

Pentru a copia fișiere între un container și un sistem de fișiere localhost, puteți utiliza comanda cp .

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

Exemplu:

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

Comanda de export

Comanda containerului Docker oferă o opțiune de a exporta sistemul de fișiere al unui container ca fișier TAR.

 $ docker container export {CONTAINER NAME or ID}

inspectați comanda

Putem verifica informații detaliate despre un container folosind comanda inspect ca:

 $ docker inspect {CONTAINER NAME or ID}

SAU

$ docker container inspect {CONTAINER NAME or ID}

Comanda ucidere

Un container care rulează poate fi ucis folosind comanda kill cu un semnal opțional --signal sau -s . Pot fi specificate mai multe containere pentru a le ucide dintr-o singură mișcare.

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

Exemplu:

 $ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $

Comanda statistici

Pentru a afișa un flux live al utilizării resurselor unui container, puteți utiliza comanda stats :

 $ docker container stats {CONTAINER NAME or ID}

Exemplu:

 $ 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

Comanda de sus

La fel ca comanda top în Linux, o putem folosi cu Docker pentru a obține o listă a proceselor care rulează.

 $ docker container top {CONTAINER NAME or ID}

Exemplu:

 $ 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 $

redenumiți Comanda

Pentru a redenumi un container existent, utilizați comanda rename .

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

Exemplu:

 $ 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 $

Comanda diff

Putem inspecta modificările aduse fișierelor sau directoarelor din sistemul de fișiere al unui container cu comanda diff .

 $ docker container diff {CONTAINER NAME or ID}

Exemplu:

 $ 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 $

rezumat

În concluzie, Doker oferă un set extins de comenzi pentru a gestiona containerele de la crearea lor până la distrugere. Am acoperit câteva dintre comenzile importante și utilizarea lor în acest articol, care ar trebui să vă ofere o idee bună despre gestionarea containerelor Docker.

Apoi, aflați câteva dintre resursele pentru a învăța DevOps.