Android

Naredba za pokretanje doktora s primjerima

Randy Pausch Last Lecture: Achieving Your Childhood Dreams

Randy Pausch Last Lecture: Achieving Your Childhood Dreams

Sadržaj:

Anonim

Docker je platforma koja vam omogućuje razvoj, testiranje i implementaciju aplikacija kao prijenosnih, samodovoljnih spremnika koji se pokreću gotovo bilo gdje.

Naredba docker run stvara spremnik iz određene slike i pokreće spremnik koristeći zadanu naredbu. To je jedna od prvih naredbi s kojom biste se trebali upoznati kada počnete raditi s Dockerom., službenu sliku Nginx koristit ćemo za prikaz različitih načina pokretanja Docker spremnika.

Naredba za pokretanje

Naredba za docker run ima sljedeći oblik:

docker run IMAGE

Naziv slike iz koje bi spremnik trebao biti stvoren jedini je potreban argument za naredbu docker run . Ako slika nije prisutna u lokalnom sustavu, izvlači se iz registra.

Ako nije navedena nijedna naredba, naredba navedena u uputama CMD ili ENTRYPOINT a izvršava se prilikom pokretanja spremnika.

Polazeći od verzije 1.13, Docker CLI je restrukturiran, a sve naredbe grupirane su u objekt s kojim komuniciraju.

Budući da naredba run djeluje u interakciji s spremnicima, sada je to podkomanda docker container . Sintaksa nove naredbe je sljedeća:

docker container run IMAGE

Još uvijek je podržana stara, sintaksa prije 1, 13. Pod haubom naredba za docker run je alias za docker container run . Korisnike se potiče da koriste novu sintaksu naredbi.

Popis svih opcija docker container run se na stranici dokumentacije Docker.

Pokrenite kontejner u prvi plan

Prema zadanim postavkama, kada nije data opcija naredbi docker run , root proces se pokreće u prvom planu. To znači da su standardni ulaz, izlaz i pogreške iz korijenskog postupka pričvršćeni na terminalnoj sesiji.

docker container run nginx

Izlaz nginx procesa bit će prikazan na vašem terminalu. Budući da nema veze s web poslužiteljem, terminal je prazan.

Za zaustavljanje spremnika završite pokretani Nginx postupak pritiskom na CTRL+C

Pokrenite spremnik u odvojenom načinu

Kako biste zadržali spremnik pri izlasku iz sesije terminala, pokrenite ga u odvojenom načinu. To je slično pokretanju Linux procesa u pozadini.

Upotrijebite opciju -d za pokretanje odvojenog spremnika:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Izdvojeni spremnik zaustavit će se nakon završetka korijenskog procesa.

Možete popisati pokrenute spremnike pomoću naredbe docker container ls .

Za priključivanje vašeg terminala na proces odvojenog korijena spremnika upotrijebite naredbu za docker container attach .

Izvadite spremnik nakon izlaska

Prema zadanim postavkama, kada spremnik izlazi, njegov datotečni sustav ostaje na glavnom sustavu.

Opcije --rm upućuju naredbu docker run --rm da ukloni spremnik kad se automatski --rm :

docker container run --rm nginx

Slika Nginx možda nije najbolji primjer za čišćenje datotečnog sustava spremnika nakon izlaska spremnika. Ova se opcija obično koristi na spremnicima prednjeg plana koji obavljaju kratkoročne zadatke poput testova ili sigurnosnih kopija baze podataka.

Postavite naziv spremnika

U Dockeru se svaki spremnik identificira s njegovim UUID i nazivom. Prema zadanim postavkama, ako nije izričito postavljeno, naziv spremnika automatski generira demon Docker.

Upotrijebite opciju --name da biste spremniku dodijelili prilagođeno ime:

docker container run -d --name my_nginx nginx

Naziv spremnika mora biti jedinstven. Ako pokušate pokrenuti drugi spremnik s istim nazivom, dobit ćete pogrešku sličnu ovom:

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.

Pokrenite docker container ls -a za popis svih spremnika i pogledajte njihova imena:

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

Značajna imena korisna su za upućivanje spremnika unutar Docker mreže ili prilikom izvršavanja CLI naredbi docker.

Objavljivanje portova za spremnike

Prema zadanim postavkama, ako nijedan port nije objavljen, proces koji se odvija u spremniku dostupan je samo iz spremnika.

Objavljivanje portova znači preslikavanje portova spremnika u portove glavnog računala kako bi portovi bili dostupni uslugama izvan Dockera.

Za objavu priključka koristite -p opcije na sljedeći način:

-p host_ip:host_port:container_port/protocol

  • Ako nije host_ip , on se postavlja na 0.0.0.0 . Ako nije naveden protocol , podrazumijeva TCP. Za objavljivanje više portova koristite mogućnosti s višestrukim -p .

Da preslikate TCP port 80 (nginx) u spremnik za port 8080 na hosthohovom sučelju localhost, pokrenite:

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

Možete provjeriti je li port objavljen tako da otvorite http://localhost:8080 u svom pregledniku ili pokrenete sljedeću naredbu curl na Docker hostu:

curl -I

Izlaz će izgledati ovako:

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

Dijeljenje podataka (montiranje volumena)

Kad se spremnik zaustavi, uklanjaju se svi podaci generirani spremnikom. Docker volumeni su preferirani način da podaci ostanu i dijele ih u više spremnika.

Da biste stvorili i upravljali volumenima, koristite -p opcije na sljedeći način:

-v host_src:container_dest:options

  • host_src može biti apsolutni put do datoteke ili mape na host ili imenovanom volumen.The container_dest je apsolutni put do datoteke ili mape na spremniku.Opcije mogu biti rw (čitanje-pisanje) i ro (samo za čitanje). Ako nije navedena nijedna opcija, ona će rw .

Da bismo objasnili kako to radi, stvorimo direktoriju na host i stavimo datoteku index.html u nju:

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

Zatim montirajte mapu public_html u /usr/share/nginx/html u spremniku:

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

Umjesto da odredimo apsolutni put do direktorija public_html , koristimo naredbu $(pwd) koja ispisuje trenutnu radnu mapu.

Sada, ako u preglednik upišete http://localhost:8080 , trebali biste vidjeti sadržaj datoteke index.html . Također možete koristiti curl :

curl

Testing Docker Volumes

Pokrenite spremnik interaktivno

Kada se bavite interaktivnim procesima kao što je bash , koristite opcije -i i -t da biste pokrenuli spremnik.

Opcije -it nalažu Docker-u da drži standardni ulaz priključen na terminalu i dodijeli pseudo-tty:

docker container run -it nginx /bin/bash

Bash školjka spremnika bit će pričvršćena na terminal, a naredbeni redak će se promijeniti:

root@1da70f1937f5:/#

Sada, možete komunicirati s ljuskom spremnika i pokrenuti bilo koju naredbu unutar njega.

U ovom primjeru dali smo naredbu ( /bin/bash ) kao argument naredbi docker docker run koja je izvršena umjesto one koja je navedena u Dockerfileu.

Zaključak

Docker je standard za pakiranje i pokretanje aplikacija i bitna komponenta CI / CD, automatizacije i DevOps.

Naredba za pokretanje spremnika docker koristi se za stvaranje i pokretanje Docker spremnika.

lučki radnik