Android

Comanda Docker run cu exemple

Docker Tutorial: Basics of the Docker Run Command

Docker Tutorial: Basics of the Docker Run Command

Cuprins:

Anonim

Docker este o platformă care vă permite să dezvoltați, să testați și să implementați aplicații ca containere portabile, autosuficiente, care rulează practic oriunde.

Comanda docker run creează un container dintr-o imagine dată și pornește containerul folosind o comandă dată. Este una dintre primele comenzi cu care ar trebui să vă familiarizați atunci când începeți să lucrați cu Docker., vom folosi imaginea oficială Nginx pentru a arăta diverse modalități de a rula un container Docker.

Docker Run Command

Comanda de docker run are următoarea formă:

docker run IMAGE

Numele imaginii din care ar trebui creat containerul este singurul argument necesar pentru comanda docker run . Dacă imaginea nu este prezentă pe sistemul local, aceasta este extrasă din registru.

Dacă nu este specificată nicio comandă, comanda specificată în instrucțiunile CMD sau ENTRYPOINT ale ENTRYPOINT este executată la rularea containerului.

Pornind de la versiunea 1.13, Docker CLI a fost restructurat și toate comenzile au fost grupate sub obiectul cu care interacționează.

Întrucât comanda de run interacționează cu containerele, acum este o subcomandă a docker container . Sintaxa noii comenzi este următoarea:

docker container run IMAGE

Vechea, pre 1.13 sintaxa este încă acceptată. Sub capotă, comanda docker run este un alias pentru docker container run . Utilizatorii sunt încurajați să utilizeze noua sintaxă a comenzii.

O listă cu toate opțiunile de docker container run poate fi găsită pe pagina de documentare Docker.

Rulați containerul în prim plan

În mod implicit, atunci când nu este oferită nicio opțiune pentru comanda docker run , procesul root este început în prim plan. Aceasta înseamnă că intrarea, ieșirea și eroarea standard din procesul root sunt atașate la sesiunea terminal.

docker container run nginx

Ieșirea procesului nginx va fi afișată pe terminalul dvs. Din moment ce nu există conexiuni cu serverul web, terminalul este gol.

Pentru a opri containerul, încheiați procesul Nginx rulat apăsând CTRL+C

Rulați containerul în modul detașat

Pentru a menține containerul în funcțiune când ieșiți din sesiunea terminalului, porniți-l într-un mod detașat. Acest lucru este similar cu rularea unui proces Linux în fundal.

Folosiți opțiunea -d pentru a porni un container detașat:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Containerul detașat se va opri atunci când procesul de rădăcină este încheiat.

Puteți lista containerele care rulează folosind comanda docker container ls .

Pentru a atașa terminalul dvs. la procesul de rădăcină a containerului detașat, utilizați comanda de docker container attach .

Scoateți containerul după ieșire

În mod implicit, la expirarea containerului, sistemul său de fișiere persistă pe sistemul gazdă.

Opțiunile --rm indică comanda --rm docker run pentru a elimina containerul când iese automat:

docker container run --rm nginx

Imaginea Nginx nu poate fi cel mai bun exemplu pentru a curăța sistemul de fișiere al containerului după ieșirea containerului. Această opțiune este de obicei folosită pe containerele prim-plan care efectuează sarcini pe termen scurt, cum ar fi teste sau copii de rezervă ale bazei de date.

Setați numele containerului

În Docker, fiecare container este identificat prin UUID și nume. În mod implicit, dacă nu este setat în mod explicit, numele containerului este generat automat de daemon Docker.

Utilizați opțiunea --name pentru a atribui un nume personalizat containerului:

docker container run -d --name my_nginx nginx

Numele containerului trebuie să fie unic. Dacă încercați să porniți un alt container cu același nume, veți primi o eroare similară cu aceasta:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Rulați docker container ls -a pentru a lista toate containerele și vedeți numele acestora:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Numele semnificative sunt utile pentru a face referire la containerul dintr-o rețea Docker sau la rularea comenzilor CLI ale docker-ului.

Editarea porturilor de containere

În mod implicit, dacă nu sunt publicate porturi, procesul care rulează în container este accesibil numai din interiorul containerului.

Publicarea porturilor înseamnă maparea porturilor containerului către porturile mașinii gazdă, astfel încât porturile să fie disponibile pentru serviciile din afara Docker.

Pentru a publica un port, utilizați opțiunile -p după cum urmează:

-p host_ip:host_port:container_port/protocol

  • Dacă nu este specificat nici un host_ip , acesta este implicit la 0.0.0.0 . Dacă nu este specificat niciun protocol , acesta este implicit la TCP.Pentru a publica mai multe porturi, utilizați mai multe opțiuni -p .

Pentru a face maparea portului TCP 80 (nginx) din container la portul 8080 pe interfața localhost gazdă, ar trebui să rulați:

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

Puteți verifica dacă portul este publicat prin deschiderea http://localhost:8080 în browser sau rulând următoarea comandă curl pe gazda Docker:

curl -I

Rezultatul va arăta astfel:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Partajarea datelor (montarea volumelor)

Când un container este oprit, toate datele generate de container sunt eliminate. Volumele Docker sunt modalitatea preferată de a face datele să persiste și să le partajeze în mai multe containere.

Pentru a crea și gestiona volume, utilizați opțiunile -p după cum urmează:

-v host_src:container_dest:options

  • host_src poate fi o cale absolută către un fișier sau director de pe gazdă sau un volum numit. container_dest este o cale absolută către un fișier sau director de pe container. Opțiunile pot fi rw (read-write) și ro (numai citire)). Dacă nu este specificată nicio opțiune, aceasta este implicită în rw .

Pentru a explica cum funcționează acest lucru, să creăm un director pe gazdă și să introducem un fișier index.html :

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Apoi, montați directorul public_html în /usr/share/nginx/html în container:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

În loc să specificăm calea absolută către directorul public_html , folosim comanda $(pwd) , care tipărește directorul de lucru curent.

Acum, dacă introduceți http://localhost:8080 în browserul dvs., ar trebui să vedeți conținutul fișierului index.html . Puteți utiliza, de asemenea, curl :

curl

Testing Docker Volumes

Rulați containerul în mod interactiv

Atunci când aveți de-a face cu procesele interactive precum bash , utilizați opțiunile -i și -t pentru a porni containerul.

Opțiunile -it îi recomandă lui Docker să păstreze intrarea standard atașată terminalului și să aloce o pseudo-acțiune:

docker container run -it nginx /bin/bash

Carcasa Bash a containerului va fi atașată la terminal, iar promptul de comandă se va schimba:

root@1da70f1937f5:/#

Acum, puteți interacționa cu shell-ul containerului și puteți rula orice comandă în interiorul acestuia.

În acest exemplu, am furnizat o comandă ( /bin/bash ) ca argument la comanda docker run care a fost executată în loc de cea specificată în Dockerfile.

Concluzie

Docker este standardul pentru ambalarea și implementarea aplicațiilor și o componentă esențială a CI / CD, automatizare și DevOps.

Comanda docker container run este folosită pentru a crea și rula containere Docker.

docher