Android

Docker kör kommando med exempel

XWiki, a free, open source, self hosted Wiki that has all the features of Confluence at minimal cost

XWiki, a free, open source, self hosted Wiki that has all the features of Confluence at minimal cost

Innehållsförteckning:

Anonim

Docker är en plattform som låter dig utveckla, testa och distribuera applikationer som bärbara, självförsörjande behållare som kör praktiskt taget var som helst.

docker run skapar en behållare från en given bild och startar behållaren med ett givet kommando. Det är ett av de första kommandona du bör bli bekant med när du börjar arbeta med Docker., använder vi den officiella Nginx-bilden för att visa olika sätt att köra en Docker-behållare.

Docker-körkommando

docker run har följande form:

docker run IMAGE

Namnet på bilden från vilken behållaren ska skapas är det enda argument som krävs för docker run . Om bilden inte finns i det lokala systemet dras den från registret.

Om inget kommando anges utförs kommandot som anges i Dockerfiles CMD- eller ENTRYPOINT instruktioner när du kör behållaren.

Från version 1.13 har Docker CLI omstrukturerats, och alla kommandon har grupperats under objektet de interagerar med.

Eftersom körkommandot interagerar med containrar är det nu en underkommando för docker container . Syntaxen för det nya kommandot är som följer:

docker container run IMAGE

Den gamla syntaxen före 1.13 stöds fortfarande. Under huven är docker run ett alias för docker container run . Användare uppmuntras att använda den nya kommandosyntaxen.

En lista över alla docker container run finns på dokumentationssidan för Docker.

Kör behållaren i förgrunden

När inget alternativ tillhandahålls för docker run standardprocessen i förgrunden. Detta innebär att standardinmatningen, utgången och felet från rotprocessen är kopplade till terminalsessionen.

docker container run nginx

Utsignalen från nginx-processen visas på din terminal. Eftersom det inte finns några anslutningar till webbservern är terminalen tom.

För att stoppa behållaren avslutar du den igång Nginx-processen genom att trycka på CTRL+C

Kör behållaren i fristående läge

Starta den i ett fristående läge för att hålla behållaren igång när du lämnar terminalsessionen. Detta liknar att köra en Linux-process i bakgrunden.

Använd alternativet -d att starta en fristående behållare:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Den fristående behållaren stannar när rotprocessen avslutas.

Du kan lista de körande containrarna med docker container ls .

För att ansluta din terminal till den fristående behållarrotprocessen använder docker container attach kommandot docker container attach .

Ta bort behållaren efter utgången

När behållaren går ut, kvarstår dess filsystem som värdssystem.

--rm berättar för docker run att ta bort behållaren när den kommer ut automatiskt:

docker container run --rm nginx

Nginx-bilden är kanske inte det bästa exemplet att rensa upp behållarens filsystem efter att behållaren har slutat. Detta alternativ används vanligtvis på förgrundsbehållare som utför kortsiktiga uppgifter som tester eller databasbackup.

Ställ in behållarens namn

I Docker identifieras varje behållare med dess UUID och namn. Som standard, om inte uttryckligen ställts in, genereras behållarens namn automatiskt av Docker-demonet.

Använd alternativet - namn för att tilldela behållaren ett anpassat namn:

docker container run -d --name my_nginx nginx

Behållarens namn måste vara unikt. Om du försöker starta en annan behållare med samma namn får du ett fel som liknar det här:

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.

Kör docker container ls -a att lista alla containrar och se deras namn:

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

De meningsfulla namnen är användbara för att referera till behållaren i ett Docker-nätverk eller när du kör docker CLI-kommandon.

Publishing Container Ports

Om inga portar publiceras är processen som körs i behållaren endast tillgänglig från insidan av behållaren.

Att publicera portar betyder att kartlägga containerportar till värdmaskinportarna så att portarna är tillgängliga för tjänster utanför Docker.

För att publicera en port använder du -p alternativen enligt följande:

-p host_ip:host_port:container_port/protocol

  • Om inget host_ip anges, är det standard 0.0.0.0 inget protocol anges, är det standard TCP. För att publicera flera portar, använd flera -p alternativ.

För att kartlägga TCP-port 80 (nginx) i behållaren till port 8080 i värdens localhost-gränssnitt kör du:

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

Du kan verifiera att porten publiceras genom att öppna http://localhost:8080 i din webbläsare eller köra följande curl kommando på Docker-värden:

curl -I

Utgången ser ut så här:

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

Dela data (monteringsvolymer)

När en behållare stoppas tas alla data som genereras av behållaren bort. Dockervolymer är det föredragna sättet att göra data kvarstår och dela dem över flera containrar.

För att skapa och hantera volymer använder du -p alternativen enligt följande:

-v host_src:container_dest:options

  • host_src kan vara en absolut sökväg till en fil eller katalog på värden eller en namngiven volym. container_dest är en absolut sökväg till en fil eller katalog på behållaren. rw kan vara rw (läs-skriv) och ro (skrivskyddad)). Om inget alternativ anges är det standard att rw .

För att förklara hur detta fungerar, låt oss skapa en katalog på värden och lägga en index.html fil i den:

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

Därefter monterar public_html katalogen public_html i /usr/share/nginx/html i behållaren:

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

Istället för att ange den absoluta sökvägen till public_html , använder vi kommandot $(pwd) , som skriver ut den aktuella arbetskatalogen.

Om du skriver http://localhost:8080 i din webbläsare bör du se innehållet i filen index.html . Du kan också använda curl :

curl

Testing Docker Volumes

Kör behållaren interaktivt

När du hanterar de interaktiva processerna som bash , använd alternativen -i och -t för att starta behållaren.

Alternativet-det berättar Docker att hålla standardingången kopplad till terminalen och tilldela en pseudo-tty:

docker container run -it nginx /bin/bash

Behållarens Bash-skal ansluts till terminalen och kommandotolken kommer att ändras:

root@1da70f1937f5:/#

Nu kan du interagera med behållarens skal och köra valfritt kommando i den.

I det här exemplet tillhandahöll vi ett kommando ( /bin/bash ) som ett argument till docker run som utfördes i stället för det som anges i Dockerfile.

Slutsats

Docker är standarden för förpackning och distribution av applikationer och en viktig komponent i CI / CD, automatisering och DevOps.

docker container run för att skapa och köra Docker-containrar.

hamnarbetare