J'ai fait un tirage de menu fixe et je peux répertorier l'image téléchargée. Je veux voir le contenu de cette image. A fait une recherche sur le net mais pas de réponse directe. Merci.
Vous pouvez simplement exécuter un conteneur Shell interactif en utilisant cette image et explorer le contenu de cette image.
Par exemple:
docker run -it image_name sh
Ou, si vous voulez voir comment l'image a été construite, c'est-à-dire les étapes de sa Dockerfile
, vous pouvez:
docker image history --no-trunc image_name > image_history
Les étapes seront consignées dans le fichier image_history
.
La réponse acceptée ici est problématique, car rien ne garantit qu’une image aura une sorte de Shell interactif. Par exemple, le drone/drone image contient une seule commande /drone
, et et a aussi une ENTRYPOINT
;
$ docker run -it drone/drone sh
FATA[0000] DRONE_Host is not properly configured
Et cela va échouer:
$ docker run --rm -it --entrypoint sh drone/drone
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH".
Ce n'est pas une configuration peu commune; de nombreuses images minimales ne contiennent que les fichiers binaires nécessaires pour prendre en charge le service cible. Heureusement, il existe des mécanismes pour explorer un système de fichiers image qui ne dépendent pas du contenu de l'image. Le plus simple est probablement la commande docker export
, qui exportera un système de fichiers container en tant qu'archive tar. Alors, démarrez un conteneur (peu importe qu'il échoue ou non):
$ docker run -it drone/drone sh
FATA[0000] DRONE_Host is not properly configured
Ensuite, utilisez docker export
pour exporter le système de fichiers vers tar
:
$ docker export $(docker ps -lq) | tar tf -
Le docker ps -lq
signifie ici "donnez-moi l'identifiant du dernier conteneur docker". Vous pouvez remplacer cela par un nom de conteneur ou un identifiant explicite.
Vous ne devez pas démarrer un conteneur uniquement pour voir le contenu de l'image. Par exemple, vous voudrez peut-être rechercher du contenu malveillant, pas l'exécuter. Utilisez "create" au lieu de "run";
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
Nous pouvons essayer un plus simple comme suit:
docker image inspect image_id
Cela a fonctionné dans la version Docker:
DockerVersion": "18.05.0-ce"
docker save nginx > nginx.tar
tar -xvf nginx.tar
Les fichiers suivants sont présents:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
OU
vous pouvez utiliser dive pour afficher le contenu de l'image de manière interactive avec TUI
Il existe un outil open source gratuit appelé Anchore que vous pouvez utiliser pour analyser des images de conteneur. Cette commande vous permettra de lister tous les fichiers d'une image de conteneur.
anchore-cli image content myrepo/app: derniers fichiers
Avec Docker EE pour Windows (17.06.2-ee-6 sur Hyper-V Server 2016), tout le contenu des conteneurs Windows peut être examiné dans le chemin C:\ProgramData\docker\windowsfilter\
du système d'exploitation hôte.
Aucun montage spécial nécessaire.
Le préfixe de dossier peut être trouvé par l'identifiant du conteneur à partir de la sortie docker ps -a
.