Docker Tutorial 14: RUN command - Dockerfile
Innholdsfortegnelse:
- Docker Run-kommando
- Kjør beholderen i forgrunnen
- Kjør beholderen i frittliggende modus
- Fjern beholderen etter avkjørsel
- Angi beholdernavnet
- Publisering av containere
- Deling av data (monteringsvolumer)
- Kjør beholderen interaktivt
- Konklusjon
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 standardhost_ip
Hvis det ikke er spesifisert noenprotocol
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ærerw
(lese-skrive) ogro
(skrivebeskyttet)). Hvis ikke noe alternativ er spesifisert, er det standard forrw
.
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
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.
Valve's November Steam-brukerstatistikk er oppe, og det er fortsatt et skred for spillere som kjører Windows XP. 68% av Steam-brukerne kobler til nettsamfunnet og spilltjenesten som kjører 32-bits versjonen av XP. Sammenlign med bare 21% kjører Vista og et DX10-kompatibelt skjermkort. Nesten mer enn det (25%) kjører DX10 GPUer på XP, mens en nyskapende 54% fortsatt spiller med DX9-eller under GPUer.
NVIDIA tårner over ATI (27%) med løveandelen (64%) GPU bruk. Intels nibbling krummer med bare 2%. Også: 87% av Steam-brukere kjører med 4x anti-aliasing aktivert, som overrasket meg, siden jeg har en GTX 280 og ofte fortsatt lar AA nullstilles for å øke de ekstra rammene i handel for de høyeste nivåene av GPU-strangling detaljer.
Curl-kommando i linux med eksempler
Curl er et kommandolinjeverktøy for overføring av data fra eller til en server designet for å fungere uten brukerinteraksjon. I denne opplæringen vil vi vise deg hvordan du bruker krøllverktøyet gjennom praktiske eksempler og detaljerte forklaringer på de vanligste krøllalternativene.
Linux kutt kommando med eksempler
Cut er et verktøy for kommandolinjer som lar deg klippe deler av linjer fra spesifiserte filer eller data i rør og skrive ut resultatet til standardutdata. I denne opplæringen vil vi vise deg hvordan du bruker Linux cut-kommandoen gjennom praktiske eksempler og detaljerte forklaringer på de vanligste kuttalternativene.