Suche…


Syntax

  • docker rm [OPTIONEN] CONTAINER [CONTAINER ...]
  • Docker anhängen [OPTIONEN] CONTAINER
  • docker exec [OPTIONEN] CONTAINER BEFEHL [ARG ...]
  • Docker ps [OPTIONEN]
  • Andockprotokolle [OPTIONEN] CONTAINER
  • Docker inspizieren [OPTIONEN] CONTAINER | IMAGE [CONTAINER | IMAGE ...]

Bemerkungen

  • Wenn in den obigen Beispielen Container ein Parameter des <CONTAINER_NAME> ist, wird er als <container> oder container id oder <CONTAINER_NAME> . In allen diesen Bereichen können Sie entweder einen Containernamen oder eine Container-ID übergeben, um einen Container anzugeben.

Container auflisten

$ 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 druckt allein nur die aktuell ausgeführten Container. Verwenden Sie zum Anzeigen aller Container (einschließlich der angehaltenen) das 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

Verwenden Sie zum -f Containern mit einem bestimmten Status die Befehlszeilenoption -f , um die Ergebnisse zu filtern. Hier ein Beispiel für die Auflistung aller Container, die beendet wurden:

$ 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

Es ist auch möglich, nur die Container-IDs mit der -q . Dies macht es sehr einfach, das Ergebnis mit anderen Unix-Dienstprogrammen (wie grep und awk ) zu awk :

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

Wenn Sie einen Container mit docker run --name mycontainer1 , geben Sie einen bestimmten Namen und nicht einen zufälligen Namen (in der Form mood_famous, z. B. nostalgic_stallman) an. Mit einem solchen Befehl können Sie diese leicht finden

docker ps -f name=mycontainer1

Container referenzieren

Docker-Befehle, die den Namen eines Containers annehmen, akzeptieren drei verschiedene Formen:

Art Beispiel
Volle UUID 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
Kurze UUID 9cc69f11a0f7
Name berserk_wozniak

Verwenden Sie docker ps , um diese Werte für die Container in Ihrem System anzuzeigen.

Die UUID wird von Docker generiert und kann nicht geändert werden. Sie können dem Container einen Namen geben, wenn Sie ihn docker run --name <given name> <image> . Docker generiert einen zufälligen Namen für den Container, wenn Sie beim Starten des Containers keinen Namen angeben.

HINWEIS : Der Wert der UUID (oder einer "kurzen" UUID) kann beliebig lang sein, solange der angegebene Wert für einen Container eindeutig ist

Behälter starten und stoppen

So stoppen Sie einen laufenden Container:

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

Dadurch wird der Hauptprozess im Container ein SIGTERM gesendet, gefolgt von einem SIGKILL, wenn er nicht innerhalb der Kulanzzeit stoppt. Der Name jedes Containers wird beim Stoppen gedruckt.

So starten Sie einen Container, der gestoppt ist:

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

Dadurch wird jeder im Hintergrund übergebene Container gestartet. Der Name jedes Containers wird beim Start gedruckt. Um den Container im Vordergrund zu starten, übergeben Sie die --attach -a ( --attach ).

Listen Sie Container mit benutzerdefiniertem Format auf

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

Einen bestimmten Container finden

docker ps --filter name=myapp_1

Container-IP suchen

Um die IP-Adresse Ihres Containers herauszufinden, verwenden Sie:

docker inspect <container id> | grep IPAddress

oder Docker inspizieren

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

Docker-Container neu starten

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

Option --time : Sekunden bis zum Anhalten des Containers (Standardeinstellung 10)

docker restart <container> --time 10

Container entfernen, löschen und bereinigen

docker rm kann verwendet werden, um bestimmte Container wie docker rm zu entfernen:

docker rm <container name or id>

Um alle Container zu entfernen, können Sie diesen Ausdruck verwenden:

docker rm $(docker ps -qa)

Standardmäßig löscht das Andockfenster einen laufenden Container nicht. Jeder laufende Container erzeugt eine Warnmeldung und wird nicht gelöscht. Alle anderen Container werden gelöscht.

Alternativ können Sie xargs :

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

Wo docker ps -aq -f status=exited wird, wird eine Liste der Container-IDs von Containern mit dem Status "Exited" zurückgegeben.

Warnung: Bei allen obigen Beispielen werden nur "angehaltene" Container entfernt.

Um einen Container zu entfernen, unabhängig davon, ob er gestoppt ist oder nicht, können Sie das Force-Flag -f :

docker rm -f <container name or id>

So entfernen Sie alle Container unabhängig vom Status:

docker rm -f $(docker ps -qa)

Wenn Sie nur Container entfernen möchten, deren Status " dead " ist:

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

Wenn Sie nur Container mit einem exited Status entfernen möchten:

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

Dies sind alle Permutationen von Filtern, die beim Auflisten von Containern verwendet werden .

Um sowohl unerwünschte Container als auch baumelnde Images zu entfernen, die nach Version 1.3 Speicherplatz verwenden, verwenden Sie Folgendes (ähnlich dem Unix-Tool df ):

$ docker system df

So entfernen Sie alle nicht verwendeten Daten:

$ docker system prune 

Führen Sie den Befehl für einen bereits vorhandenen Docker-Container aus

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

Es ist üblich, sich in einem bereits laufenden Container anzumelden, um ein paar schnelle Tests durchzuführen oder zu sehen, was die Anwendung macht. Häufig wird darauf hingewiesen, dass die Verwendung von Containern aufgrund von Protokollen schlecht ist und geänderte Dateien in Volumes abgelegt werden sollten. In diesem Beispiel können wir uns im Container anmelden. Dies setzt voraus, dass / bin / bash im Container verfügbar ist. Dies kann / bin / sh oder etwas anderes sein.

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

Dieses Beispiel archiviert den Inhalt des Datenverzeichnisses in einem tar. Dann können Sie es mit docker cp abrufen.

Containerprotokolle

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

Zum Beispiel:

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

Stellen Sie eine Verbindung zu einer Instanz her, die als Daemon ausgeführt wird

Es gibt zwei Möglichkeiten, dies zu erreichen, die erste und bekannteste ist die Folgende:

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

Dieses fügt Ihre Bash buchstäblich an den Container Bash an, dh wenn Sie ein Skript ausführen, sehen Sie das Ergebnis.

Geben Sie zum Lösen einfach ein: Ctl-P Ctl-Q

Wenn Sie jedoch eine freundlichere Methode benötigen, um neue Bash-Instanzen erstellen zu können, führen Sie einfach den folgenden Befehl aus:

docker exec -it <container> bash

Datei von / in Container kopieren

vom Container zum Host

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

vom Host zum Container

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Wenn ich jess / send aus benutze

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

befinden sich die Dateien im Container in / transmission / download

und mein aktuelles Verzeichnis auf dem Host ist / home / $ USER / abc nach

docker cp transmission_id_or_name:/transmission/download .

Ich werde die Dateien kopieren lassen

/home/$USER/abc/transmission/download

Sie können nicht mit docker cp nur eine Datei kopieren, Sie kopieren den Verzeichnisbaum und die Dateien

Docker-Volumes entfernen, löschen und bereinigen

Docker-Volumes werden nicht automatisch entfernt, wenn ein Container angehalten wird. So entfernen Sie zugeordnete Volumes beim Stoppen eines Containers:

docker rm -v <container id or name>

Wenn das Flag -v nicht angegeben ist, verbleibt das Volume als 'hängendes Volume' auf der Festplatte. So löschen Sie alle baumelnden Datenträger:

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

Der docker volume ls -qf dangling=true Filter gibt eine Liste der docker volume ls -qf dangling=true Namen zurück, einschließlich nicht gekennzeichneter, die nicht an einen Container angehängt sind.

Alternativ können Sie xargs :

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

Exportieren und Importieren von Docker-Container-Dateisystemen

Es ist möglich, den Dateisysteminhalt eines Docker-Containers in einer Tarball-Archivdatei zu speichern. Dies ist praktisch, wenn Sie Container-Dateisysteme auf andere Hosts verschieben möchten, z. B. wenn ein Datenbankcontainer wichtige Änderungen enthält und die Änderungen an anderer Stelle nicht repliziert werden können. Beachten Sie, dass es vorzuziehen ist, einen vollständig neuen Container aus einem aktualisierten Image mithilfe eines docker run oder einer docker-compose.yml Datei zu erstellen, anstatt das Dateisystem eines Containers zu exportieren und zu verschieben. Ein Teil von Dockers Macht ist die Überprüfbarkeit und Verantwortlichkeit seines deklarativen Stils zum Erstellen von Images und Containern. Durch den docker export und den docker import wird diese Leistung durch die Verschleierung von Änderungen im Dateisystem eines Containers gegenüber dem ursprünglichen Zustand beeinträchtigt.

docker export -o redis.tar redis

Der obige Befehl erstellt ein leeres Image und exportiert dann das Dateisystem des redis Containers in dieses leere Image. Verwenden Sie zum Importieren aus einem Tarball-Archiv:

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

Mit diesem Befehl wird das redis-imported:3.0.7 Image erstellt, aus dem Container erstellt werden können. Es ist auch möglich, Änderungen beim Import anzulegen und eine Commit-Nachricht festzulegen:

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

Die Dockerfile-Direktiven, die für die Verwendung der Befehlszeilenoption -c verfügbar sind, sind CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow