Hice una extracción de la ventana acoplable y puedo enumerar la imagen que se descargó. Quiero ver el contenido de esta imagen. Hice una búsqueda en la red pero no hubo una respuesta directa.
Hice una extracción de la ventana acoplable y puedo enumerar la imagen que se descargó. Quiero ver el contenido de esta imagen. Hice una búsqueda en la red pero no hubo una respuesta directa.
Respuestas:
Simplemente puede ejecutar un contenedor de shell interactivo usando esa imagen y explorar cualquier contenido que tenga esa imagen.
Por ejemplo:
docker run -it image_name sh
O siguiendo para imágenes con un entrypoint
docker run -it --entrypoint sh image_name
O, si desea ver cómo se construyó la imagen, es decir, los pasos en ella Dockerfile
, puede:
docker image history --no-trunc image_name > image_history
Los pasos se registrarán en el image_history
archivo.
docker run -it --entrypoint cmd <image_name>
funcionará.
La respuesta aceptada aquí es problemática, porque no hay garantía de que una imagen tenga algún tipo de shell interactivo. Por ejemplo, la imagen de drone / drone contiene un solo comando /drone
, y también tiene un comando ENTRYPOINT
, por lo que fallará:
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Y esto fallará:
$ 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".
Esta no es una configuración poco común; muchas imágenes mínimas contienen solo los binarios necesarios para admitir el servicio de destino. Afortunadamente, existen mecanismos para explorar un sistema de archivos de imagen que no dependen del contenido de la imagen. El más fácil es probablemente el docker export
comando, que exportará un sistema de archivos contenedor como un archivo tar. Entonces, inicie un contenedor (no importa si falla o no):
$ docker run -it drone/drone sh
FATA[0000] DRONE_HOST is not properly configured
Luego, use docker export
para exportar el sistema de archivos a tar
:
$ docker export $(docker ps -lq) | tar tf -
El docker ps -lq
allí significa "dame la identificación del contenedor docker más reciente". Puede reemplazar eso con un nombre o id explícito del contenedor.
No debe iniciar un contenedor solo para ver el contenido de la imagen. Por ejemplo, es posible que desee buscar contenido malicioso, no ejecutarlo. Use "crear" en lugar de "ejecutar";
docker create --name="tmp_$$" image:tag
docker export tmp_$$ | tar t
docker rm tmp_$$
docker export tmp_$$ > image-fs.tar
.
docker export tmp_$$ | tar t
no funcionará.
tar
podría no estar instalado en su máquina. Intenta tar --help
comprobarlo.
-o
parámetro para especificar el archivo para escribir. Por ej docker export -o c:\temp\tmp_$$.tar tmp_$$
.
docker save nginx > nginx.tar
tar -xvf nginx.tar
Los siguientes archivos están presentes:
https://sreeninet.wordpress.com/2016/06/11/looking-inside-container-images/
O
puedes usar dive para ver el contenido de la imagen de forma interactiva con TUI
docker
solo necesito ver el contenido de lo que es, esencialmente, solo un tipo diferente de archivo?
docker save --output nginx.tar nginx:latest
contrario, de acuerdo con el documento, contendrá "todas las capas principales y todas las etiquetas + versiones"
Para enumerar el contenido detallado de una imagen, debe ejecutar docker run --rm image/name ls -alR
donde --rm
significa eliminar tan pronto como salga de un contenedor.
ls
disponible y en elPATH
¡EXPLORANDO LA IMAGEN DE DOCKER !
Averiguar qué tipo de concha es de allí bash
o sh
, o ...
Inspeccione la imagen primero: docker inspect name-of-container-or-image
Busque entrypoint
o cmd
en el json return.
Entonces hazlo: docker run --rm -it --entrypoint=/bin/bash name-of-image
una vez dentro do: ls -lsa
o cualquier otro comando de shell como:cd ..
Los -it
soportes para interactivo ... y tty. Los --rm
soportes para quitar el contenedor después de la ejecución.
ls
. O realmente cualquier herramienta común en absoluto.
Podemos probar uno más simple de la siguiente manera:
docker image inspect image_id
Esto funcionó en la versión de Docker:
DockerVersion": "18.05.0-ce"
Con Docker EE para Windows (17.06.2-ee-6 en Hyper-V Server 2016), todo el contenido de los Contenedores de Windows se puede examinar en la C:\ProgramData\docker\windowsfilter\
ruta del sistema operativo host.
No se necesita montaje especial.
El prefijo de carpeta se puede encontrar por la identificación del contenedor de la docker ps -a
salida.
Existe una herramienta gratuita de código abierto llamada Anchore que puede usar para escanear imágenes de contenedor. Este comando le permitirá enumerar todos los archivos en una imagen de contenedor
anchore-cli image content myrepo / app: últimos archivos