Zoeken…


Syntaxis

  • docker rm [OPTIES] CONTAINER [CONTAINER ...]
  • docker attach [OPTIONS] CONTAINER
  • docker exec [OPTIES] CONTAINER COMMAND [ARG ...]
  • docker ps [OPTIES]
  • docker-logboeken [OPTIES] CONTAINER
  • docker inspecteert [OPTIES] CONTAINER | IMAGE [CONTAINER | IMAGE ...]

Opmerkingen

  • In de bovenstaande voorbeelden wordt container telkens een parameter van de docker-opdracht genoemd als <container> of container id of <CONTAINER_NAME> . Op al deze plaatsen kunt u een containernaam of container-ID doorgeven om een container op te geven.

Lijst containers

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours          0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours          0.0.0.0:65432->5432/tcp   pt-postgres

docker ps op zichzelf print alleen momenteel lopende containers. Gebruik de vlag -a om alle containers te bekijken (inclusief de containers die zijn gestopt):

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago                             berserk_wozniak
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours                0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours                0.0.0.0:65432->5432/tcp   pt-postgres

Om containers met een specifieke status weer te geven, gebruikt u de opdrachtregeloptie -f om de resultaten te filteren. Hier is een voorbeeld van een lijst met alle containers die zijn verlaten:

$ docker ps -a -f status=exited
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago

Het is ook mogelijk om alleen de container-ID's te vermelden met de schakelaar -q . Dit maakt het zeer eenvoudig om het resultaat te bewerken met andere Unix-hulpprogramma's (zoals grep en awk ):

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

Bij het starten van een container met docker run --name mycontainer1 geeft u een specifieke naam en geen willekeurige naam (in de vorm mood_famous, zoals nostalgic_stallman), en het kan gemakkelijk zijn om ze te vinden met een dergelijk commando

docker ps -f name=mycontainer1

Verwijzen naar containers

Docker-opdrachten die de naam van een container aannemen, accepteren drie verschillende vormen:

Type Voorbeeld
Volledige UUID 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
Korte UUID 9cc69f11a0f7
Naam berserk_wozniak

Gebruik docker ps om deze waarden voor de containers op uw systeem te bekijken.

De UUID wordt gegenereerd door Docker en kan niet worden gewijzigd. U kunt de container een naam geven wanneer u deze start. docker run --name <given name> <image> . Docker genereert een willekeurige naam voor de container als u er geen opgeeft bij het starten van de container.

OPMERKING : De waarde van de UUID (of een 'korte' UUID) kan elke lengte hebben, zolang de gegeven waarde uniek is voor één container

Containers starten en stoppen

Een lopende container stoppen:

docker stop <container> [<container>...]

Dit zal het hoofdproces in de container een SIGTERM sturen, gevolgd door een SIGKILL als het niet stopt binnen de respijtperiode. De naam van elke container wordt afgedrukt zodra deze stopt.

Een container starten die is gestopt:

docker start <container> [<container>...]

Hiermee start u elke container die op de achtergrond wordt doorgegeven; de naam van elke container wordt afgedrukt zodra deze begint. Om de container op de voorgrond te starten, geeft u de vlag -a ( --attach ) door.

Lijst containers met aangepast formaat

docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}'

Een specifieke container zoeken

docker ps --filter name=myapp_1

Zoek container IP

Gebruik het volgende om het IP-adres van uw container te achterhalen:

docker inspect <container id> | grep IPAddress

of gebruik docker inspecteren

docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID}

Dockercontainer opnieuw starten

docker restart <container> [<container>...]

Optie --tijd : seconden wachten om te stoppen voordat de container wordt gedood (standaard 10)

docker restart <container> --time 10

Containers verwijderen, verwijderen en opruimen

docker rm kan worden gebruikt om specifieke containers zoals deze te verwijderen:

docker rm <container name or id>

Om alle containers te verwijderen, kunt u deze uitdrukking gebruiken:

docker rm $(docker ps -qa)

Docker verwijdert standaard geen actieve container. Elke container die wordt uitgevoerd, geeft een waarschuwingsbericht en wordt niet verwijderd. Alle andere containers worden verwijderd.

Als alternatief kunt u xargs :

docker ps -aq -f status=exited | xargs -r docker rm 

Waar docker ps -aq -f status=exited een lijst met container-ID's retourneert van containers met de status "Exited".

Waarschuwing: alle bovenstaande voorbeelden zullen alleen 'gestopte' containers verwijderen.

Om een container te verwijderen, ongeacht of deze al dan niet is gestopt, kunt u de force flag -f :

docker rm -f <container name or id>

Om alle containers te verwijderen, ongeacht de staat:

docker rm -f $(docker ps -qa)

Als u alleen containers met een dead status wilt verwijderen:

docker rm $(docker ps --all -q -f status=dead)

Als u alleen containers met een exited status wilt verwijderen:

docker rm $(docker ps --all -q -f status=exited)

Dit zijn allemaal permutaties van filters die worden gebruikt bij het vermelden van containers .

Om zowel ongewenste containers als hangende afbeeldingen die ruimte gebruiken na versie 1.3 te verwijderen , gebruikt u het volgende (vergelijkbaar met de Unix-tool df ):

$ docker system df

Alle ongebruikte gegevens verwijderen:

$ docker system prune 

Voer opdracht uit op een reeds bestaande docker-container

docker exec -it <container id> /bin/bash

Het is gebruikelijk om in een reeds lopende container in te loggen om enkele snelle tests uit te voeren of om te zien wat de toepassing doet. Vaak duidt dit op slecht gebruik van containers vanwege logboeken en moeten gewijzigde bestanden in volumes worden geplaatst. In dit voorbeeld kunnen we in de container inloggen. Dit veronderstelt dat / bin / bash beschikbaar is in de container, dit kan / bin / sh of iets anders zijn.

docker exec <container id> tar -czvf /tmp/backup.tgz /data
docker cp <container id>:/tmp/backup.tgz .

Dit voorbeeld archiveert de inhoud van de gegevensmap in een tar. Vervolgens kunt u met docker cp het ophalen.

Containerlogboeken

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

  -f, --follow=false        Follow log output
  --help=false              Print usage
  --since=                  Show logs since timestamp
  -t, --timestamps=false    Show timestamps
  --tail=all                Number of lines to show from the end of the logs

Bijvoorbeeld:

$ docker ps
CONTAINER ID    IMAGE    COMMAND                 CREATED     STATUS       PORTS
ff9716dda6cb    nginx    "nginx -g 'daemon off"  8 days ago  Up 22 hours  443/tcp, 0.0.0.0:8080->80/tcp 

$ docker logs ff9716dda6cb
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"

Maak verbinding met een exemplaar dat als daemon wordt uitgevoerd

Er zijn twee manieren om dat te bereiken, de eerste en meest bekende is de volgende:

docker attach --sig-proxy=false <container>

Deze verbindt je bash letterlijk aan de container bash, wat betekent dat als je een lopend script hebt, je het resultaat ziet.

Typ los: Ctl-P Ctl-Q

Maar als u een vriendelijkere manier nodig hebt en om nieuwe bash-instanties te kunnen maken, voert u gewoon de volgende opdracht uit:

docker exec -it <container> bash

Bestand van / naar containers kopiëren

van container tot host

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

van host naar container

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Als ik jess / transmissie van gebruik

https://hub.docker.com/r/jess/transmission/builds/bsn7eqxrkzrhxazcuytbmzp/

, de bestanden in de container zijn in / verzending / download

en mijn huidige map op de host is / home / $ USER / abc, daarna

docker cp transmission_id_or_name:/transmission/download .

Ik zal de bestanden naar laten kopiëren

/home/$USER/abc/transmission/download

u kunt niet, met behulp van docker cp kopieert u slechts één bestand, kopieert u de mapstructuur en de bestanden

Docker-volumes verwijderen, verwijderen en opschonen

Dockervolumes worden niet automatisch verwijderd wanneer een container wordt gestopt. Bijbehorende volumes verwijderen wanneer u een container stopt:

docker rm -v <container id or name>

Als de vlag -v niet is opgegeven, blijft het volume op de schijf staan als een 'hangend volume'. Alle hangende volumes verwijderen:

docker volume rm $(docker volume ls -qf dangling=true)

Het docker volume ls -qf dangling=true filter retourneert een lijst met namen van docker-volumes, inclusief niet-gecodeerde namen, die niet aan een container zijn gekoppeld.

Als alternatief kunt u xargs :

docker volume ls -f dangling=true -q | xargs --no-run-if-empty docker volume rm

Docker-containerbestandssystemen exporteren en importeren

Het is mogelijk om de inhoud van het bestandssysteem van een Docker-container op te slaan in een tarball-archiefbestand. Dit is handig voor het verplaatsen van containerbestandssystemen naar verschillende hosts, bijvoorbeeld als een databasecontainer belangrijke wijzigingen heeft en het anders niet mogelijk is deze wijzigingen elders te repliceren. Houd er rekening mee dat het de voorkeur verdient om een geheel nieuwe container te maken op basis van een bijgewerkte afbeelding met behulp van een opdracht docker-compose.yml docker run of docker-compose.yml , in plaats van het bestandssysteem van een container te exporteren en verplaatsen. Een deel van de kracht van Docker is de controleerbaarheid en verantwoording van de declaratieve stijl van het maken van afbeeldingen en containers. Door gebruik te maken van docker export en docker import , is deze kracht ingetogen vanwege de onduidelijkheid van wijzigingen aangebracht in het bestandssysteem van een container vanuit de oorspronkelijke staat.

docker export -o redis.tar redis

De bovenstaande opdracht maakt een lege afbeelding en exporteert vervolgens het bestandssysteem van de redis container naar deze lege afbeelding. Gebruik het volgende om te importeren uit een tarball-archief:

docker import ./redis.tar redis-imported:3.0.7

Met deze opdracht maakt u de redis-imported:3.0.7 afbeelding, waaruit containers kunnen worden gemaakt. Het is ook mogelijk om wijzigingen aan te brengen bij het importeren en om een commit-bericht in te stellen:

docker import -c="ENV DEBUG true" -m="enable debug mode" ./redis.tar redis-changed

De Dockerfile richtlijnen beschikbaar voor gebruik met de -c command line optie zijn CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow