Android

Docker køre kommando med eksempler

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks

Indholdsfortegnelse:

Anonim

Docker er en platform, der giver dig mulighed for at udvikle, teste og distribuere applikationer som bærbare, selvforsynende containere, der kører praktisk talt overalt.

Kommandoen til docker run opretter en container fra et givet billede og starter containeren ved hjælp af en given kommando. Det er en af ​​de første kommandoer, du skal blive fortrolig med, når du begynder at arbejde med Docker., bruger vi det officielle Nginx-billede til at vise forskellige måder at køre en Docker-container på.

Docker Run-kommando

Kommandoen til docker run har følgende form:

docker run IMAGE

Navnet på det billede, som containeren skal oprettes fra, er det eneste krævede argument for docker run kommandoen. Hvis billedet ikke findes på det lokale system, trækkes det fra registreringsdatabasen.

Hvis der ikke er angivet nogen kommando, udføres den kommando, der er angivet i Dockerfile's CMD eller ENTRYPOINT instruktioner, når du kører containeren.

Fra version 1.13 er Docker CLI blevet omstruktureret, og alle kommandoer er grupperet under det objekt, de interagerer med.

Da run kommandoen interagerer med containere, er det nu en underkommando af docker container . Syntaks for den nye kommando er som følger:

docker container run IMAGE

Den gamle syntaks før 1.13 understøttes stadig. Under hætten er docker run kommandoen et alias til docker container run . Brugere opfordres til at bruge den nye kommandosyntax.

En liste over alle muligheder for docker container run kan findes på dokumentationssiden for Docker.

Kør containeren i forgrunden

Når der ikke findes nogen mulighed for docker run kommandoen, startes rodprocessen som standard i forgrunden. Dette betyder, at standardinput, output og fejl fra rodprocessen er knyttet til terminalsessionen.

docker container run nginx

Outputet fra nginx-processen vises på din terminal. Da der ikke er nogen forbindelser til webserveren, er terminalen tom.

For at stoppe beholderen skal du afslutte den kørende Nginx-proces ved at trykke på CTRL+C

Kør beholderen i løsrevet tilstand

For at holde beholderen kørende, når du forlader terminalsessionen, skal du starte den i en adskilt tilstand. Dette svarer til at køre en Linux-proces i baggrunden.

Brug indstillingen -d til at starte en løsrevet container:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Den adskilte beholder stopper, når rodprocessen afsluttes.

Du kan liste de kørende containere ved hjælp af kommandoen docker container ls .

Hvis du vil vedhæfte din terminal til den afskilte container-rodproces, skal du bruge kommandoen til docker container attach .

Fjern beholderen efter udgangen

Når containeren afslutter, fortsætter dens filsystem som standard på værtssystemet.

--rm fortæller, at docker run kommandoen skal fjerne beholderen, når den afslutter automatisk:

docker container run --rm nginx

Nginx-billedet er muligvis ikke det bedste eksempel på at rydde op i containers filsystem, når containeren er afsluttet. Denne indstilling bruges normalt på forgrundscontainere, der udfører kortvarige opgaver, såsom tests eller databasesikkerhedskopiering.

Indstil beholdernavnet

I Docker identificeres hver container med dens UUID og navn. Som standard, hvis ikke eksplicit indstillet, genereres beholderens navn automatisk af Docker-dæmonen.

Brug indstillingen - navn til at tildele et brugerdefineret navn til beholderen:

docker container run -d --name my_nginx nginx

Beholdernavnet skal være unikt. Hvis du prøver at starte en anden container med samme navn, får du en fejl, der ligner denne:

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 at liste alle containere og se deres navne:

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 meningsfulde navne er nyttige til at henvise til containeren i et Docker-netværk eller når du kører docker CLI-kommandoer.

Publishing Container Ports

Hvis der ikke offentliggøres nogen porte, er processen, der kører i containeren, kun tilgængelig inde fra containeren.

At offentliggøre porte betyder at kortlægge containerporte til værtsmaskinens porte, så portene er tilgængelige for tjenester uden for Docker.

For at offentliggøre en port skal du bruge -p indstillingerne som følger:

-p host_ip:host_port:container_port/protocol

  • Hvis der ikke er angivet nogen host_ip er den standard til 0.0.0.0 Hvis der ikke er angivet nogen protocol er den standard til TCP. For at offentliggøre flere porte skal du bruge flere -p indstillinger.

Hvis du vil kortlægge TCP-port 80 (nginx) i containeren til port 8080 på værten localhost-interface, kører du:

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

Du kan kontrollere, at porten er offentliggjort ved at åbne http://localhost:8080 i din browser eller køre følgende curl kommando på Docker-værten:

curl -I

Outputet ser sådan ud:

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

Deling af data (monteringsvolumener)

Når en container stoppes, fjernes alle data, der genereres af containeren. Docker-volumener er den foretrukne måde at få dataene til at fortsætte og dele dem på tværs af flere containere.

Hvis du vil oprette og administrere volumener, skal du bruge -p indstillingerne som følger:

-v host_src:container_dest:options

  • host_src kan være en absolut sti til en fil eller bibliotek på værten eller en navngivet lydstyrke. container_dest er en absolut sti til en fil eller bibliotek på containeren. rw kan være rw (læse-skriv) og ro (skrivebeskyttet)). Hvis der ikke er angivet nogen mulighed, er det standard for rw .

For at forklare, hvordan dette fungerer, lad os oprette et bibliotek på værten og lægge en index.html fil i den:

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

Monter derefter det offentlige_html-bibliotek i /usr/share/nginx/html i beholderen:

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

I stedet for at specificere den absolutte sti til mappen public_html , bruger vi kommandoen $(pwd) , der udskriver det aktuelle arbejdsmappe.

Hvis du nu skriver http://localhost:8080 i din browser, skal du se indholdet af filen index.html . Du kan også bruge curl :

curl

Testing Docker Volumes

Kør containeren interaktivt

Når du håndterer de interaktive processer som bash , skal du bruge indstillingerne -i og -t til at starte containeren.

Valgmulighederne-det fortæller Docker at holde standardindgangen knyttet til terminalen og tildele en pseudotype:

docker container run -it nginx /bin/bash

Containerens Bash-shell vil være knyttet til terminalen, og kommandoprompten ændres:

root@1da70f1937f5:/#

Nu kan du interagere med containerskallen og køre enhver kommando inde i den.

I dette eksempel leverede vi en kommando ( /bin/bash ) som et argument til docker run kommandoen, der blev udført i stedet for den, der er angivet i Dockerfile.

Konklusion

Docker er standarden til emballering og implementering af applikationer og en væsentlig komponent i CI / CD, automatisering og DevOps.

Kommandoen til docker container run bruges til at oprette og køre Docker-containere.

havnearbejder