Sök…


Syntax

  • docker rm [OPTIONS] CONTAINER [CONTAINER ...]
  • docker bifoga [OPTIONS] CONTAINER
  • docker exec [OPTIONS] CONTAINER COMMAND [ARG ...]
  • docker ps [OPTIONS]
  • dockerloggar [OPTIONS] CONTAINER
  • docker inspektera [OPTIONS] CONTAINER | IMAGE [CONTAINER | IMAGE ...]

Anmärkningar

  • I exemplen ovan, när container är en parameter i docker-kommandot, nämns den som <container> eller container id eller <CONTAINER_NAME> . På alla dessa platser kan du antingen skicka ett behållarnamn eller behållar-ID för att ange en behållare.

Lista containrar

$ 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 på egen hand skriver bara ut för närvarande kör containrar. För att se alla containrar (inklusive stoppade) använder du -a flaggan:

$ 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 du vill lista containrar med en specifik status använder du -f kommandoradalternativet för att filtrera resultaten. Här är ett exempel på lista alla containrar som har lämnat:

$ 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

Det är också möjligt att lista bara behållar-ID: er med -q omkopplaren. Detta gör det mycket enkelt att använda resultatet med andra Unix-verktyg (som grep och awk ):

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

När du startar en container med docker run --name mycontainer1 ger du ett specifikt namn och inte ett slumpmässigt namn (i form av mood_famous, till exempel nostalgic_stallman), och det kan vara lätt att hitta dem med ett sådant kommando

docker ps -f name=mycontainer1

Referensbehållare

Docker-kommandon som tar namnet på en behållare accepterar tre olika former:

Typ Exempel
Full UUID 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
Kort UUID 9cc69f11a0f7
namn berserk_wozniak

Använd docker ps att se dessa värden för behållarna på ditt system.

UUID genereras av Docker och kan inte ändras. Du kan tillhandahålla ett namn till behållaren när du startar det docker run --name <given name> <image> . Docker genererar ett slumpmässigt namn till behållaren om du inte anger något vid start av behållaren.

OBS : Värdet på UUID (eller en "kort" UUID) kan vara vilken längd som helst så länge det givna värdet är unikt för en behållare

Start och stopp av containrar

Så här stoppar du en löpande behållare:

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

Detta skickar huvudprocessen i behållaren en SIGTERM, följt av en SIGKILL om den inte stannar inom graden. Namnet på varje behållare skrivs ut när den slutar.

Så här startar du en behållare som stoppas:

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

Detta startar varje behållare som skickas i bakgrunden. namnet på varje behållare skrivs ut när det startar. För att starta behållaren i förgrunden, passera flaggan -a (- --attach ).

Lista behållare med anpassat format

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

Hitta en specifik behållare

docker ps --filter name=myapp_1

Hitta behållarens IP

För att ta reda på IP-adressen för din behållare, använd:

docker inspect <container id> | grep IPAddress

eller använd dockerinspektion

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

Starta om dockerbehållaren

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

Alternativ - tid : Sekunder att vänta på stopp innan du dödar behållaren (standard 10)

docker restart <container> --time 10

Ta bort, ta bort och rengör behållare

docker rm kan användas för att ta bort en specifik behållare som denna:

docker rm <container name or id>

För att ta bort alla behållare kan du använda detta uttryck:

docker rm $(docker ps -qa)

Som standard raderar dockaren inte en behållare som körs. Varje behållare som kör producerar ett varningsmeddelande och raderas inte. Alla andra behållare kommer att raderas.

Alternativt kan du använda xargs :

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

Där docker ps -aq -f status=exited kommer att returnera en lista med behållar-ID: er för behållare som har statusen "Avsluten".

Varning: Alla ovanstående exempel tar bara bort "stoppade" behållare.

För att ta bort en behållare, oavsett om den stoppas eller inte, kan du använda kraftflaggan -f :

docker rm -f <container name or id>

Så här tar du bort alla behållare, oavsett tillstånd:

docker rm -f $(docker ps -qa)

Om du bara vill ta bort behållare med dead status:

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

Om du bara vill ta bort behållare med en status som du har exited :

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

Det här är alla permutationer av filter som används vid listning av containrar .

Om du vill ta bort både oönskade behållare och dinglande bilder som använder utrymme efter version 1.3 använder du följande (liknande Unix-verktyget df ):

$ docker system df

Så här tar du bort alla oanvända data:

$ docker system prune 

Kör kommandot på en redan befintlig dockarkontainer

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

Det är vanligt att logga in i en redan körd behållare för att göra några snabbtester eller se vad applikationen gör. Ofta anger det dåliga rutiner för containerbruk på grund av loggar och ändrade filer bör placeras i volymer. Detta exempel tillåter oss att logga in i behållaren. Detta antar att / bin / bash finns i behållaren, det kan vara / bin / sh eller något annat.

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

Detta exempel arkiverar innehållet i datakatalogen i en tjära. Sedan med docker cp du hämta det.

Behållarloggar

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

Till exempel:

$ 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"

Anslut till en instans som körs som demon

Det finns två sätt att uppnå det, det första och mest kända är följande:

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

Den här bokstavligen fäster din bash till container bash, vilket innebär att om du har ett löpande skript ser du resultatet.

För att lossa, skriv bara: Ctl-P Ctl-Q

Men om du behöver ett mer vänligt sätt och kunna skapa nya bash-inställningar, kör bara följande kommando:

docker exec -it <container> bash

Kopierar fil från / till containrar

från container till värd

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

från värd till container

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Om jag använder jess / transmission från

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

, filerna i behållaren är i / överföring / nedladdning

och min nuvarande katalog på värden är / home / $ USER / abc, efter

docker cp transmission_id_or_name:/transmission/download .

Jag kommer att ha filerna kopierade till

/home/$USER/abc/transmission/download

du kan inte, med docker cp kopiera bara en fil, kopierar du katalogträdet och filerna

Ta bort, ta bort och rensa dockervolymerna

Dockervolymer tas inte automatiskt bort när en behållare stoppas. Så här tar du bort tillhörande volymer när du stoppar en behållare:

docker rm -v <container id or name>

Om -v flaggan inte anges förblir volymen på disken som en "dinglande volym". Så här tar du bort alla dinglande volymer:

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

docker volume ls -qf dangling=true filter kommer att returnera en lista med namnen på dockningsvolymer, inklusive otaggade, som inte är kopplade till en behållare.

Alternativt kan du använda xargs :

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

Exportera och importera Docker-containerfiler

Det är möjligt att spara en Docker-behållares filsysteminnehåll i en tarball-arkivfil. Detta är användbart i en nypa för att flytta containerfilsystem till olika värdar, till exempel om en databasbehållare har viktiga förändringar och det inte annars är möjligt att replikera dessa ändringar någon annanstans. Observera att det är att föredra att skapa en helt ny behållare från en uppdaterad bild med hjälp av ett docker run eller en docker-compose.yml fil istället för att exportera och flytta en behållares filsystem. En del av Dockers makt är granskningen och ansvarsskyldigheten för dess deklarativa stil för att skapa bilder och containrar. Genom att använda docker export och docker import här kraften på grund av fördunvningen av ändringar som gjorts inuti ett containers filsystem från dess ursprungliga tillstånd.

docker export -o redis.tar redis

Ovanstående kommando skapar en tom bild och exporterar sedan filsystemet för redis till denna tomma bild. För att importera från ett tarball-arkiv använder du:

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

Det här kommandot skapar en redis-imported:3.0.7 bild, från vilken containrar kan skapas. Det är också möjligt att skapa ändringar vid import och ställa in ett meddelande om åtagande:

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

Dockerfile-direktiven som är tillgängliga för användning med kommandorad -c alternativet är CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow