Ricerca…


Sintassi

  • docker rm [OPZIONI] CONTENITORE [CONTENITORE ...]
  • docker allegare [OPZIONI] CONTENITORE
  • docker exec [OPZIONI] CONTAINER COMMAND [ARG ...]
  • docker ps [OPZIONI]
  • log del docker [OPZIONI] CONTENITORE
  • finestra mobile ispeziona [OPZIONI] CONTENITORE | IMMAGINE [CONTENITORE | IMMAGINE ...]

Osservazioni

  • Negli esempi precedenti, ogni volta che container è un parametro del comando docker, viene indicato come <container> o container id o <CONTAINER_NAME> . In tutti questi posti è possibile passare un nome contenitore o un id contenitore per specificare un contenitore.

Elenco dei contenitori

$ 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 da sola stampa solo i contenitori attualmente in esecuzione. Per visualizzare tutti i contenitori (compresi quelli fermati), usa il flag -a :

$ 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

Per elencare i contenitori con uno stato specifico, utilizzare l'opzione della riga di comando -f per filtrare i risultati. Ecco un esempio di elenco di tutti i contenitori che sono usciti:

$ 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

È anche possibile elencare solo gli ID contenitore con l' -q . Questo rende molto facile operare sul risultato con altre utility Unix (come grep e awk ):

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

Quando si avvia un container con la docker run --name mycontainer1 si specifica un nome specifico e non un nome casuale (nella forma mood_famous, come nostalgic_stallman), e può essere facile trovarli con tale comando

docker ps -f name=mycontainer1

Contenitori di riferimento

I comandi Docker che prendono il nome di un contenitore accettano tre diverse forme:

genere Esempio
UUID completo 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
UUID breve 9cc69f11a0f7
Nome berserk_wozniak

Utilizzare la docker ps per visualizzare questi valori per i contenitori sul proprio sistema.

L'UUID è generato da Docker e non può essere modificato. È possibile fornire un nome al contenitore quando lo si avvia docker run --name <given name> <image> . Docker genererà un nome casuale nel contenitore se non ne specifichi uno al momento dell'avvio del contenitore.

NOTA : il valore dell'UUID (o un UUID "breve") può essere di qualsiasi lunghezza purché il valore specificato sia univoco per un contenitore

Avvio e arresto dei contenitori

Per fermare un container in esecuzione:

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

Questo invierà il processo principale nel contenitore a SIGTERM, seguito da un SIGKILL se non si interrompe entro il periodo di prova. Il nome di ciascun contenitore viene stampato mentre si arresta.

Per avviare un contenitore interrotto:

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

Questo avvierà ogni contenitore passato in background; il nome di ciascun contenitore viene stampato non appena inizia. Per avviare il contenitore in primo piano, passare il flag -a ( --attach ).

Elenca contenitori con formato personalizzato

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

Trovare un contenitore specifico

docker ps --filter name=myapp_1

Trova IP del contenitore

Per scoprire l'indirizzo IP del tuo contenitore, usa:

docker inspect <container id> | grep IPAddress

oppure utilizzare la finestra mobile ispeziona

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

Riavvio del contenitore della finestra mobile

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

Opzione - tempo : secondi per attendere l'arresto prima di uccidere il contenitore (impostazione predefinita 10)

docker restart <container> --time 10

Rimuovere, eliminare e pulire i contenitori

docker rm può essere usato per rimuovere contenitori specifici come questo:

docker rm <container name or id>

Per rimuovere tutti i contenitori puoi usare questa espressione:

docker rm $(docker ps -qa)

Per impostazione predefinita la finestra mobile non elimina un contenitore in esecuzione. Qualsiasi contenitore in esecuzione produrrà un messaggio di avviso e non verrà eliminato. Tutti gli altri contenitori saranno cancellati.

In alternativa puoi usare xargs :

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

Dove la docker ps -aq -f status=exited restituirà un elenco di ID contenitore di container con stato "Exited".

Attenzione: tutti gli esempi precedenti rimuoveranno solo i contenitori "fermati".

Per rimuovere un container, indipendentemente dal fatto che sia stato arrestato o meno, puoi utilizzare il flag force -f :

docker rm -f <container name or id>

Per rimuovere tutti i contenitori, indipendentemente dallo stato:

docker rm -f $(docker ps -qa)

Se si desidera rimuovere solo i contenitori con stato dead :

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

Se si desidera rimuovere solo i contenitori con uno stato exited :

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

Queste sono tutte permutazioni dei filtri utilizzati quando si elencano i contenitori .

Per rimuovere sia i contenitori indesiderati che le immagini che pendono dallo spazio dopo la versione 1.3 , utilizzare quanto segue (simile allo strumento Unix df ):

$ docker system df

Per rimuovere tutti i dati inutilizzati:

$ docker system prune 

Esegui il comando su un contenitore finestra mobile già esistente

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

È normale accedere a un contenitore già in esecuzione per effettuare alcuni test rapidi o vedere cosa sta facendo l'applicazione. Spesso denota cattive pratiche di utilizzo del contenitore dovute ai log e i file modificati dovrebbero essere collocati in volumi. Questo esempio ci consente di accedere al contenitore. Ciò suppone che / bin / bash sia disponibile nel contenitore, che possa essere / bin / sh o qualcos'altro.

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

Questo esempio archivia il contenuto della directory dei dati in un tar. Quindi con docker cp puoi recuperarlo.

Log del contenitore

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

Per esempio:

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

Connettersi a un'istanza in esecuzione come daemon

Ci sono due modi per farlo, il primo e il più conosciuto è il seguente:

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

Questo letteralmente attacca il tuo bash alla bash del contenitore, il che significa che se hai uno script in esecuzione, vedrai il risultato.

Per staccare, basta digitare: Ctl-P Ctl-Q

Ma se hai bisogno di un modo più amichevole e di essere in grado di creare nuove istanze di bash, basta eseguire il seguente comando:

docker exec -it <container> bash

Copia di file da / a contenitori

dal contenitore all'host

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

dall'host al contenitore

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Se uso jess / trasmissione da

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

, i file nel contenitore sono in / transmission / download

e la mia directory corrente sull'host è / home / $ USER / abc, dopo

docker cp transmission_id_or_name:/transmission/download .

Farò copiare i file in

/home/$USER/abc/transmission/download

non è possibile, utilizzando la docker cp copiare solo un file, copiare l'albero della directory e i file

Rimuovere, eliminare e pulire i volumi della finestra mobile

I volumi Docker non vengono rimossi automaticamente quando un container viene fermato. Per rimuovere i volumi associati quando si interrompe un contenitore:

docker rm -v <container id or name>

Se non viene specificato il flag -v , il volume rimane su disco come "volume sospeso". Per eliminare tutti i volumi che pendono:

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

Il docker volume ls -qf dangling=true filter restituirà un elenco di nomi di volumi di finestra mobile, inclusi quelli senza tag, che non sono collegati a un contenitore.

In alternativa, puoi usare xargs :

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

Esportare e importare i filesystem del contenitore Docker

È possibile salvare il contenuto del file system di un contenitore Docker in un file di archivio tarball. Ciò è utile in un pizzico per spostare i filesystem del contenitore su diversi host, ad esempio se un contenitore di database ha modifiche importanti e non è altrimenti possibile replicare tali modifiche altrove. Si noti che è preferibile creare un contenitore completamente nuovo da un'immagine aggiornata utilizzando un comando di docker run docker-compose.yml o docker-compose.yml file docker-compose.yml , invece di esportare e spostare il filesystem di un contenitore. Parte del potere di Docker è l'auditabilità e la responsabilità del suo stile dichiarativo di creazione di immagini e contenitori. Utilizzando docker export e docker import , questo potere è sottomesso a causa della offuscamento delle modifiche apportate all'interno del filesystem di un contenitore dal suo stato originale.

docker export -o redis.tar redis

Il comando precedente creerà un'immagine vuota e quindi esporterà il filesystem del contenitore redis in questa immagine vuota. Per importare da un archivio tarball, usa:

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

Questo comando creerà l'immagine redis-imported:3.0.7 , da cui è possibile creare contenitori. È anche possibile creare modifiche all'importazione e impostare un messaggio di commit:

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

Le direttive Dockerfile disponibili per l'uso con l' -c opzione della riga di comando sono CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow