Recherche…


Syntaxe

  • docker rm [OPTIONS] CONTENEUR [CONTENEUR ...]
  • docker attach [OPTIONS] CONTENEUR
  • docker exec [OPTIONS] COMMANDER COMMAND [ARG ...]
  • docker ps [OPTIONS]
  • docker logs [OPTIONS] CONTAINER
  • docker inspect [OPTIONS] CONTENEUR | IMAGE [CONTENEUR | IMAGE ...]

Remarques

  • Dans les exemples ci-dessus, chaque fois que le conteneur est un paramètre de la commande docker, il est mentionné sous la forme <container> ou container id ou <CONTAINER_NAME> . Dans tous ces endroits, vous pouvez soit passer un nom de conteneur ou un identifiant de conteneur pour spécifier un conteneur.

Liste des conteneurs

$ 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 imprime seul les conteneurs en cours d'exécution. Pour afficher tous les conteneurs (y compris ceux arrêtés), utilisez l'indicateur -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

Pour répertorier les conteneurs avec un statut spécifique, utilisez l'option de ligne de commande -f pour filtrer les résultats. Voici un exemple de liste de tous les conteneurs sortis:

$ 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

Il est également possible de répertorier uniquement les ID de conteneur avec le commutateur -q . Cela facilite le fonctionnement du résultat avec d'autres utilitaires Unix (tels que grep et awk ):

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

Lorsque vous docker run --name mycontainer1 un conteneur avec docker run --name mycontainer1 vous donnez un nom spécifique et non un nom aléatoire (sous la forme mood_famous, tel que nostalgic_stallman), et il peut être facile de les trouver avec une telle commande

docker ps -f name=mycontainer1

Référencement de conteneurs

Les commandes Docker qui prennent le nom d'un conteneur acceptent trois formes différentes:

Type Exemple
UUID complet 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
UUID court 9cc69f11a0f7
prénom berserk_wozniak

Utilisez docker ps pour afficher ces valeurs pour les conteneurs sur votre système.

L'UUID est généré par Docker et ne peut pas être modifié. Vous pouvez donner un nom au conteneur lorsque vous le lancez. docker run --name <given name> <image> . Docker générera un nom aléatoire pour le conteneur si vous n'en spécifiez pas un au moment du démarrage du conteneur.

REMARQUE : la valeur de l'UUID (ou un UUID court) peut avoir n'importe quelle longueur tant que la valeur donnée est unique pour un conteneur.

Démarrage et arrêt des conteneurs

Pour arrêter un conteneur en cours d'exécution:

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

Cela enverra au processus principal du conteneur un SIGTERM, suivi d'un SIGKILL s'il ne s'arrête pas pendant la période de grâce. Le nom de chaque conteneur est imprimé à mesure qu'il s'arrête.

Pour démarrer un conteneur qui est arrêté:

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

Cela va démarrer chaque conteneur passé en arrière-plan; le nom de chaque conteneur est imprimé au démarrage. Pour démarrer le conteneur au premier plan, passez le drapeau -a ( --attach ).

Liste des conteneurs au format personnalisé

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

Recherche d'un conteneur spécifique

docker ps --filter name=myapp_1

Rechercher un conteneur IP

Pour connaître l'adresse IP de votre conteneur, utilisez:

docker inspect <container id> | grep IPAddress

ou utiliser docker inspecter

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

Redémarrage du conteneur Docker

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

Option - time : secondes pour attendre l'arrêt avant de tuer le conteneur (par défaut 10)

docker restart <container> --time 10

Supprimer, supprimer et nettoyer des conteneurs

docker rm peut être utilisé pour supprimer un conteneur spécifique comme celui-ci:

docker rm <container name or id>

Pour supprimer tous les conteneurs, vous pouvez utiliser cette expression:

docker rm $(docker ps -qa)

Par défaut, docker ne supprimera pas un conteneur en cours d'exécution. Tout conteneur en cours d'exécution produira un message d'avertissement et ne sera pas supprimé. Tous les autres conteneurs seront supprimés.

Sinon, vous pouvez utiliser xargs :

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

docker ps -aq -f status=exited retournera une liste des ID de conteneur des conteneurs ayant le statut "Exit".

Avertissement: tous les exemples ci-dessus ne supprimeront que les conteneurs "arrêtés".

Pour supprimer un conteneur, qu'il soit ou non arrêté, vous pouvez utiliser l'indicateur de force -f :

docker rm -f <container name or id>

Pour supprimer tous les conteneurs, quel que soit leur état:

docker rm -f $(docker ps -qa)

Si vous souhaitez supprimer uniquement les conteneurs avec un statut dead :

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

Si vous souhaitez supprimer uniquement les conteneurs avec un statut exited :

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

Ce sont toutes les permutations de filtres utilisées lors de la liste des conteneurs .

Pour supprimer à la fois les conteneurs indésirables et les images en attente qui utilisent de l'espace après la version 1.3 , utilisez ce qui suit (similaire à l'outil Unix df ):

$ docker system df

Pour supprimer toutes les données inutilisées:

$ docker system prune 

Exécuter la commande sur un conteneur de docker existant

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

Il est courant de se connecter à un conteneur déjà en cours pour effectuer des tests rapides ou voir ce que fait l’application. Souvent, cela dénote des mauvaises pratiques d'utilisation des conteneurs dues aux journaux et les fichiers modifiés doivent être placés dans des volumes. Cet exemple nous permet de connecter le conteneur. Cela suppose que / bin / bash est disponible dans le conteneur, il peut être / bin / sh ou autre chose.

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

Cet exemple archive le contenu du répertoire de données dans un tar. Ensuite, avec docker cp vous pouvez le récupérer.

Journaux de conteneurs

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

Par exemple:

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

Se connecter à une instance exécutée en tant que démon

Il y a deux manières d'y parvenir, la première et la plus connue est la suivante:

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

Celui-ci attache littéralement votre bash au conteneur bash, ce qui signifie que si vous avez un script en cours d'exécution, vous verrez le résultat.

Pour détacher, tapez simplement: Ctl-P Ctl-Q

Mais si vous avez besoin d'une méthode plus conviviale et pour pouvoir créer de nouvelles instances de bash, lancez simplement la commande suivante:

docker exec -it <container> bash

Copier un fichier depuis / vers des conteneurs

de conteneur à hôte

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

de l'hôte au conteneur

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Si j'utilise jess / transmission de

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

, les fichiers dans le conteneur sont dans / transmission / téléchargement

et mon répertoire actuel sur l'hôte est / home / $ USER / abc, après

docker cp transmission_id_or_name:/transmission/download .

Je vais avoir les fichiers copiés dans

/home/$USER/abc/transmission/download

vous ne pouvez pas, en utilisant docker cp copier un seul fichier, vous copiez l'arborescence et les fichiers

Supprimer, supprimer et nettoyer les volumes du menu fixe

Les volumes Docker ne sont pas automatiquement supprimés lorsqu'un conteneur est arrêté. Pour supprimer des volumes associés lorsque vous arrêtez un conteneur:

docker rm -v <container id or name>

Si l' -v n'est pas spécifiée, le volume reste sur le disque en tant que «volume en suspens». Pour supprimer tous les volumes en suspens:

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

Le filtre docker volume ls -qf dangling=true renvoie une liste de noms de volumes de docker volume ls -qf dangling=true , y compris ceux qui ne sont pas docker volume ls -qf dangling=true , qui ne sont pas attachés à un conteneur.

Vous pouvez également utiliser xargs :

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

Exporter et importer des systèmes de fichiers de conteneur Docker

Il est possible de sauvegarder le contenu du système de fichiers d'un conteneur Docker dans un fichier d'archive tarball. Ceci est utile pour déplacer des systèmes de fichiers de conteneur vers différents hôtes, par exemple si un conteneur de base de données a des modifications importantes et qu'il n'est pas possible de répliquer ces modifications ailleurs. Veuillez noter qu'il est préférable de créer un conteneur entièrement nouveau à partir d'une image mise à jour à l'aide d'une commande docker run ou d' docker-compose.yml fichier docker-compose.yml , au lieu d'exporter et de déplacer le système de fichiers d'un conteneur. Le pouvoir de Docker repose en partie sur l’auditabilité et la responsabilisation de son style déclaratif de création d’images et de conteneurs. En utilisant l' docker export et l' docker import , cette puissance est modérée en raison de l'obscurcissement des modifications apportées à l'intérieur du système de fichiers d'un conteneur par rapport à son état d'origine.

docker export -o redis.tar redis

La commande ci-dessus créera une image vide, puis exportera le système de fichiers du conteneur redis dans cette image vide. Pour importer depuis une archive tarball, utilisez:

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

Cette commande crée l'image redis-imported:3.0.7 partir de laquelle des conteneurs peuvent être créés. Il est également possible de créer des modifications lors de l'importation, ainsi que de définir un message de validation:

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

Les directives Dockerfile disponibles pour être utilisées avec l'option de ligne de commande -c sont CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow