Android

Docker kjører kommando med eksempler

Docker Tutorial 14: RUN command - Dockerfile

Docker Tutorial 14: RUN command - Dockerfile

Innholdsfortegnelse:

Anonim

Docker er en plattform som lar deg utvikle, teste og distribuere applikasjoner som bærbare, selvforsynende containere som kjører praktisk talt hvor som helst.

Kommandoen for docker run oppretter en container fra et gitt bilde og starter beholderen ved å bruke en gitt kommando. Det er en av de første kommandoene du bør bli kjent med når du begynner å jobbe med Docker., bruker vi det offisielle Nginx-bildet til å vise forskjellige måter å kjøre en Docker-beholder på.

Docker Run-kommando

Kommandoen for docker run har følgende form:

docker run IMAGE

Navnet på bildet som beholderen skal opprettes fra, er det eneste nødvendige argumentet for docker run kommandoen. Hvis bildet ikke er til stede i det lokale systemet, trekkes det fra registeret.

Hvis ingen kommando er spesifisert, blir kommandoen spesifisert i Dockerfiles CMD eller ENTRYPOINT instruksjoner utført når du kjører containeren.

Fra versjon 1.13 har Docker CLI blitt omstrukturert, og alle kommandoer er gruppert under objektet de samhandler med.

Siden kjørekommandoen samhandler med containere, er det nå en underkommando for docker container . Syntaksen til den nye kommandoen er som følger:

docker container run IMAGE

Den gamle syntaxen før 1.13 støttes fortsatt. Under panseret er docker run kommando et alias til docker container run . Brukere oppfordres til å bruke den nye kommandosyntaxen.

En liste over alle alternativene for docker container run finner du på dokumentasjonssiden for Docker.

Kjør beholderen i forgrunnen

Når det ikke er noe alternativ til docker run kommandoen, starter standardprosessen i forgrunnen. Dette betyr at standardinngang, utgang og feil fra rotprosessen er knyttet til terminalsesjonen.

docker container run nginx

Utgangen fra nginx-prosessen vises på terminalen din. Siden det ikke er noen tilkoblinger til webserveren, er terminalen tom.

For å stoppe beholderen, avslutter du den kjørende Nginx-prosessen ved å trykke CTRL+C

Kjør beholderen i frittliggende modus

For å holde beholderen i gang når du avslutter terminalsesjonen, start den i en frittliggende modus. Dette ligner på å kjøre en Linux-prosess i bakgrunnen.

Bruk alternativet -d for å starte en frittliggende container:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Den frittliggende beholderen vil stoppe når rotprosessen avsluttes.

Du kan liste de kjørende containerne ved å bruke kommandoen docker container ls .

For å knytte terminalen din til den frittliggende containerrotprosessen, bruk kommandoen docker container attach .

Fjern beholderen etter avkjørsel

Når containeren går ut, vedvarer filsystemet som standard på vertssystemet.

Alternativene - --rm forteller docker run kommandoen om å fjerne beholderen når den går ut automatisk:

docker container run --rm nginx

Nginx-bildet er kanskje ikke det beste eksemplet på å rydde opp i beholderens filsystem etter at beholderen har gått ut. Dette alternativet brukes vanligvis på forgrunnen containere som utfører kortsiktige oppgaver, for eksempel tester eller sikkerhetskopier av databaser.

Angi beholdernavnet

I Docker blir hver container identifisert av UUID og navn. Som standard, hvis ikke eksplisitt angitt, genereres beholderens navn automatisk av Docker-demonet.

Bruk alternativet - navn for å tilordne et tilpasset navn til beholderen:

docker container run -d --name my_nginx nginx

Beholdernavnet må være unikt. Hvis du prøver å starte en annen beholder med samme navn, får du en feil som ligner på dette:

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.

Kjør docker container ls -a å liste alle containere, og se navnene deres:

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 meningsfylte navnene er nyttige for å referere til containeren i et Docker-nettverk eller når du kjører docker CLI-kommandoer.

Publisering av containere

Hvis det ikke er publisert noen porter, er prosessen som kjøres i containeren som standard bare tilgjengelig fra containeren.

Å publisere porter betyr å kartlegge containerporter til vertsmaskinens porter, slik at portene er tilgjengelige for tjenester utenfor Docker.

For å publisere en port bruker du -p alternativene som følger:

-p host_ip:host_port:container_port/protocol

  • Hvis det ikke er spesifisert noen host_ip er den standard host_ip Hvis det ikke er spesifisert noen protocol er den standard TCP. For å publisere flere porter, bruk flere -p alternativer.

Hvis du vil kartlegge TCP-port 80 (nginx) i beholderen til port 8080 på vertens localhost-grensesnitt, kjører du:

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

Du kan bekrefte at porten er publisert ved å åpne http://localhost:8080 i nettleseren din eller kjøre følgende curl på Docker-verten:

curl -I

Utgangen vil se slik ut:

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 av data (monteringsvolumer)

Når en container stoppes, fjernes alle data som genereres av containeren. Docker Volumes er den foretrukne måten å få dataene til å vedvare og dele dem på flere containere.

Hvis du vil opprette og administrere volumer, bruker du -p alternativene som følger:

-v host_src:container_dest:options

  • host_src kan være en absolutt bane til en fil eller katalog på verten eller et navngitt volum. container_dest er en absolutt bane til en fil eller katalog på containeren. rw kan være rw (lese-skrive) og ro (skrivebeskyttet)). Hvis ikke noe alternativ er spesifisert, er det standard for rw .

For å forklare hvordan dette fungerer, la oss lage en katalog på verten og legge en index.html fil i den:

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

Deretter monterer du public_html katalogen 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 å spesifisere den absolutte banen til katalogen public_html , bruker vi kommandoen $(pwd) , som skriver ut gjeldende arbeidskatalog.

Hvis du skriver http://localhost:8080 i nettleseren din, skal du se innholdet i filen index.html . Du kan også bruke curl :

curl

Testing Docker Volumes

Kjør beholderen interaktivt

Når du arbeider med de interaktive prosessene som bash , bruk alternativene -i og -t for å starte beholderen.

Alternativer for -it forteller Docker å holde standardinngangen festet til terminalen og tildele en pseudo-tty:

docker container run -it nginx /bin/bash

Containerens Bash-skall blir festet til terminalen, og ledeteksten vil endre seg:

root@1da70f1937f5:/#

Nå kan du samhandle med beholderens skall og kjøre hvilken som helst kommando inni den.

I dette eksemplet ga vi en kommando ( /bin/bash ) som et argument til docker run kommandoen som ble utført i stedet for den som er spesifisert i Dockerfile.

Konklusjon

Docker er standarden for pakking og distribusjon av applikasjoner og en essensiell komponent i CI / CD, automatisering og DevOps.

Kommandoen for docker container run brukes til å opprette og kjøre Docker containere.

Docker