Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build.
Inhoudsopgave:
- Docker Run-opdracht
- Voer de container op de voorgrond uit
- Voer de container uit in de modus Vrijstaand
- Verwijder de container na afsluiten
- Stel de containernaam in
- Containerpoorten publiceren
- Gegevens delen (koppelingsvolumes)
- Voer de container interactief uit
- Conclusie
Docker is een platform waarmee u toepassingen kunt ontwikkelen, testen en implementeren als draagbare, zelfvoorzienende containers die vrijwel overal kunnen worden uitgevoerd.
De opdracht
docker run
maakt een container van een bepaalde afbeelding en start de container met een gegeven opdracht. Het is een van de eerste opdrachten waarmee u vertrouwd moet raken wanneer u met Docker begint te werken., gebruiken we de officiële Nginx-afbeelding om verschillende manieren te tonen om een Docker-container uit te voeren.
Docker Run-opdracht
De opdracht
docker run
heeft de volgende vorm:
docker run IMAGE
De naam van de afbeelding waaruit de container moet worden gemaakt, is het enige vereiste argument voor de opdracht
docker run
. Als de afbeelding niet aanwezig is op het lokale systeem, wordt deze uit het register gehaald.
Als er geen opdracht is opgegeven, wordt de opdracht die is opgegeven in de CMD- of
ENTRYPOINT
instructies van het
ENTRYPOINT
uitgevoerd tijdens het uitvoeren van de container.
Vanaf versie 1.13 is de Docker CLI geherstructureerd en zijn alle opdrachten gegroepeerd onder het object waarmee ze communiceren.
Omdat de opdracht
run
samenwerkt met containers, is het nu een subopdracht van de
docker container
. De syntaxis van de nieuwe opdracht is als volgt:
docker container run IMAGE
De oude syntaxis van vóór 1.13 wordt nog steeds ondersteund. Onder de motorkap is de opdracht
docker run
een alias voor de uitvoering van de
docker container run
. Gebruikers worden aangemoedigd om de nieuwe opdrachtsyntaxis te gebruiken.
Een lijst met alle
docker container run
van de
docker container run
vindt u op de documentatiepagina van de Docker.
Voer de container op de voorgrond uit
Wanneer er geen optie is opgegeven voor de opdracht
docker run
, wordt het rootproces standaard op de voorgrond gestart. Dit betekent dat de standaard invoer, uitvoer en fout van het rootproces zijn gekoppeld aan de terminalsessie.
docker container run nginx
De output van het nginx-proces wordt weergegeven op uw terminal. Aangezien er geen verbindingen met de webserver zijn, is de terminal leeg.
Om de container te stoppen, beëindigt u het lopende Nginx-proces door op
CTRL+C
drukken.
Voer de container uit in de modus Vrijstaand
Om de container actief te houden wanneer u de terminalsessie verlaat, start u deze in een ontkoppelde modus. Dit is vergelijkbaar met het uitvoeren van een Linux-proces op de achtergrond.
Gebruik de optie
-d
om een vrijstaande container te starten:
docker container run -d nginx
050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa
De losgemaakte container stopt wanneer het rootproces wordt beëindigd.
U kunt de actieve containers weergeven met de opdracht
docker container ls
de
docker container ls
.
Gebruik de opdracht
docker container attach
de
docker container attach
uw terminal aan het root-proces van de losgemaakte
docker container attach
.
Verwijder de container na afsluiten
Wanneer de container wordt afgesloten, blijft het bestandssysteem standaard op het hostsysteem staan.
De opties
--rm
vertellen de opdracht
--rm
docker run
om de container te verwijderen wanneer deze automatisch wordt afgesloten:
docker container run --rm nginx
De Nginx-afbeelding is misschien niet het beste voorbeeld om het bestandssysteem van de container op te schonen nadat de container is afgesloten. Deze optie wordt meestal gebruikt op voorgrondcontainers die taken op korte termijn uitvoeren, zoals tests of databaseback-ups.
Stel de containernaam in
In Docker wordt elke container geïdentificeerd door zijn
UUID
en naam. Standaard, indien niet expliciet ingesteld, wordt de naam van de container automatisch gegenereerd door de Docker-daemon.
Gebruik de optie
--name
om een aangepaste naam toe te wijzen aan de container:
docker container run -d --name my_nginx nginx
De containernaam moet uniek zijn. Als u probeert een andere container met dezelfde naam te starten, krijgt u een soortgelijke foutmelding:
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.
Voer
docker container ls -a
om alle containers weer te geven en hun namen te zien:
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 betekenisvolle namen zijn handig om te verwijzen naar de container in een Docker-netwerk of bij het uitvoeren van CLI-opdrachten van Docker.
Containerpoorten publiceren
Als er geen poorten worden gepubliceerd, is het proces dat in de container wordt uitgevoerd, alleen toegankelijk vanuit de container.
Het publiceren van poorten betekent het toewijzen van containerpoorten aan de hostmachinepoorten zodat de poorten beschikbaar zijn voor services buiten Docker.
Om een poort te publiceren, gebruikt u de opties
-p
als volgt:
-p host_ip:host_port:container_port/protocol
- Als er geen
host_ip
is opgegeven, wordt dit standaard ingesteld op0.0.0.0
. Als er geenprotocol
wordt opgegeven, wordt standaard TCP gebruikt. Als u meerdere poorten wilt publiceren, gebruikt u meerdere-p
opties.
Om de TCP-poort 80 (nginx) in de container toe te wijzen aan poort 8080 op de host localhost-interface, zou u het volgende uitvoeren:
docker container run --name web_server -d -p 8080:80 nginx
U kunt controleren of de poort is gepubliceerd door
http://localhost:8080
in uw browser te openen of door de volgende
curl
opdracht op de Docker-host uit te voeren:
curl -I
De uitvoer ziet er ongeveer zo uit:
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
Gegevens delen (koppelingsvolumes)
Wanneer een container wordt gestopt, worden alle door de container gegenereerde gegevens verwijderd. Dockervolumes zijn de geprefereerde manier om de gegevens te laten bestaan en deze over meerdere containers te delen.
Gebruik de volgende opties om volumes te maken en te beheren:
-v host_src:container_dest:options
- De
host_src
kan een absoluut pad zijn naar een bestand of map op de host of een benoemd volume. Decontainer_dest
is een absoluut pad naar een bestand of map op de container. Opties kunnenrw
(lezen-schrijven) enro
(alleen-lezen) zijn.). Als er geen optie is opgegeven, wordt standaardrw
.
Om uit te leggen hoe dit werkt, laten we een map op de host maken en er een
index.html
bestand in plaatsen:
mkdir public_html
echo "Testing Docker Volumes" > public_html/index.html
public_html
map
public_html
in
/usr/share/nginx/html
in de container:
docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx
In plaats van het absolute pad naar de map
public_html
, gebruiken we de opdracht
$(pwd)
, die de huidige werkmap afdrukt.
Als u nu
http://localhost:8080
in uw browser typt, zou u de inhoud van het bestand
index.html
moeten zien. U kunt ook
curl
:
curl
Voer de container interactief uit
Gebruik bij het omgaan met de interactieve processen zoals
bash
de opties
-i
en
-t
om de container te starten.
De
-it
opties vertellen Docker om de standaard invoer verbonden te houden met de terminal en een pseudo-tty toe te wijzen:
docker container run -it nginx /bin/bash
De Bash-shell van de container wordt aan de terminal bevestigd en de opdrachtprompt wordt gewijzigd:
root@1da70f1937f5:/#
Nu kunt u communiceren met de shell van de container en elke opdracht erin uitvoeren.
In dit voorbeeld hebben we een opdracht (
/bin/bash
) gegeven als argument voor de opdracht
docker run
die is uitgevoerd in plaats van de opdracht die is opgegeven in het Dockerfile.
Conclusie
Docker is de standaard voor het verpakken en implementeren van applicaties en een essentieel onderdeel van CI / CD, automatisering en DevOps.
De opdracht Docker container
docker container run
wordt gebruikt om Docker-containers te maken en uit te voeren.
Kan uitvoeren Controleer of uw Windows-pc een spel kan uitvoeren of een programma
Systeemvereisten Lab helpt gebruikers om te controleren of u een programma of spel kunt uitvoeren op uw Windows-pc of niet. Controleer hier de systeemvereisten van software.
Linux snijd commando met voorbeelden
Knippen is een opdrachtregelhulpprogramma waarmee u delen van lijnen uit gespecificeerde bestanden of piped-gegevens kunt knippen en het resultaat naar standaarduitvoer kunt afdrukken. In deze zelfstudie laten we u zien hoe u het Linux-knipcommando kunt gebruiken door praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende knipopties.
Linux-datumopdracht met voorbeelden
Met de opdracht date wordt de systeemdatum weergegeven of ingesteld. Het wordt meestal gebruikt om de datum en tijd in verschillende formaten af te drukken en toekomstige en afgelopen datums te berekenen.