Android

Cum să vă conectați la un container pentru docker

Adding Container Images to Google Container Registry (GCR) | Demo

Adding Container Images to Google Container Registry (GCR) | Demo

Cuprins:

Anonim

Conectarea la un container Docker rulant este utilă atunci când doriți să vedeți ce se întâmplă în interiorul containerului. Dacă containerul Docker nu funcționează așa cum este de așteptat, puteți să vă atașați de container sau să obțineți un shell la container și să rulați comenzi, cum ar fi ps sau top . Puteți, de asemenea, să introduceți containerul, să instalați pachete noi și să construiți o nouă imagine Docker din acesta.

În acest tutorial, vă vom explica cum să vă atașați la procesul principal de rulare al containerului și cum să obțineți un shell la un container care rulează.

Atașați-vă la un container

Deși este posibil să rulați mai multe procese într-un container, majoritatea containerelor docker rulează doar un singur proces. Comanda care se execută la pornirea unui container este specificată folosind ENTRYPOINT și / sau RUN .

Comanda de docker attach vă permite să atașați terminalul la containerul rulant. Acest lucru este util când doriți să vedeți ce este scris în ieșirea standard în timp real sau să controlați procesul în mod interactiv.

Pentru a înțelege mai bine cum funcționează comanda attach , hai să rulăm un nou container Nginx detașat folosind imaginea oficială Nginx.

docker container run --name my_nginx -d -p 8080:80 nginx

Opțiunea -p 8080:80 îi spune lui Docker să lege portul 8080 al containerului la portul 80 de pe mașina gazdă.

Enumerați containerele pentru a vă asigura că containerul „my_nginx” rulează:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx

Atașați-o la container utilizând ID-ul sau numele containerului:

docker container attach my_nginx

Comanda implicită a imaginii nginx care se execută la rularea containerului este setată la CMD . Când executați comanda attach terminalul dvs. se atașează la procesul nginx .

Deschide 127.0.0.1:8080 în browserul dvs. și puteți urmări ieșirea procesului nginx în timp real.

192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

Pentru a avea acces la jurnalele de containere, ar trebui să preferați folosirea comenzii docker logs .

Pentru a detașa containerul fără a-l opri, utilizați CTRL-p CTRL-q . Apăsarea CTRL-c oprește containerul.

Dacă procesele de rulare pe care le atașați pentru a accepta introducerea, puteți să îi trimiteți instrucțiuni.

Obțineți o coajă într-un container

Comanda docker exec vă permite să rulați comenzi într-un container care rulează.

Pentru a vedea cum funcționează comanda exec și cum poate fi utilizată pentru a intra în carcasa containerului, începeți mai întâi un nou container. Vom folosi imaginea oficială MySQL:

docker container run --name my_mysql -d mysql

Aceasta va crea un container numit „my_mysql”.

Pentru a executa o comandă în container, executați următoarea comandă:

docker container exec -it my_mysql ls /var

Opțiunea -i înseamnă o interacțiune și -t îi spune lui Docker să aloce un dispozitiv pseudo TTY. Comanda ls va lista toate fișierele și directoarele din directorul /var al containerului:

backups cache lib local lock log mail opt run spool tmp

Pentru a obține o coajă în container, adică pentru a intra în interiorul containerului, începeți o nouă sesiune de coajă executând binarul shell-ului. Puteți utiliza sh , bash sau orice altă coajă inclusă în imagine.

Comanda de mai jos va crea o nouă sesiune Bash în interiorul containerului:

docker container exec -it my_mysql /bin/bash

Indicatorul dvs. de comandă se va schimba, indicând că acum lucrați la carcasa containerului.

De aici, puteți rula comenzi în același mod ca și în orice alt server Linux. De exemplu, pentru a obține o listă a variabilelor de mediu actuale de tip env :

env

Rezultatul va arăta astfel:

HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env

Concluzie

Comenzile de execuție ale docker exec și ale docker attach -ului vă permit să vă conectați la un container care rulează. Pentru a obține un shell interactiv într-un container, utilizați comanda exec pentru a începe o nouă sesiune de shell. Comanda attach atașează terminalul dvs. la un container care rulează.

docher