Saltar al contenido

Explorando el sistema de archivos del contenedor Docker

Te recomendamos que revises esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

Aquí hay un par de métodos diferentes…

A) Usar docker exec (más fácil)

Docker versión 1.3 o posterior admite el comando exec que se comportan de manera similar a nsenter. Este comando puede ejecutar un nuevo proceso en un contenedor que ya se está ejecutando (el contenedor debe tener el proceso PID 1 en ejecución). Tu puedes correr /bin/bash para explorar el estado del contenedor:

docker exec -t -i mycontainer /bin/bash

consulte la documentación de la línea de comandos de Docker

B) Usar instantáneas

Puede evaluar el sistema de archivos del contenedor de esta manera:

# find ID of your running container:
docker ps

# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot

# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash

De esta manera, puede evaluar el sistema de archivos del contenedor en ejecución en el momento preciso. El contenedor aún se está ejecutando, no se incluyen cambios futuros.

Más tarde puede eliminar la instantánea usando (¡el sistema de archivos del contenedor en ejecución no se ve afectado!):

docker rmi mysnapshot

C) Usar ssh

Si necesita acceso continuo, puede instalar sshd en su contenedor y ejecutar el demonio sshd:

 docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
 
 # you need to find out which port to connect:
 docker ps

De esta manera, puede ejecutar su aplicación usando ssh (conéctese y ejecute lo que quiera).

D) Usar nsenter

Utilizar nsenterconsulte Por qué no necesita ejecutar SSHd en sus contenedores de Docker

La versión corta es: con nsenter, puede obtener un shell en un contenedor existente, incluso si ese contenedor no ejecuta SSH ni ningún tipo de demonio de propósito especial.

ACTUALIZACIÓN: EXPLORANDO!

Este comando debería permitirle explorar un contenedor docker en ejecución:

docker exec -it name-of-container bash

El equivalente para esto en docker-compose sería:

docker-compose exec web bash

(web es el nombre del servicio en este caso y tiene tty de forma predeterminada).

Una vez que estés dentro haz:

ls -lsa

o cualquier otro comando bash como:

cd ..

Este comando debería permitirle explorar una imagen acoplable:

docker run --rm -it --entrypoint=/bin/bash name-of-image

una vez dentro hacer:

ls -lsa

o cualquier otro comando bash como:

cd ..

los -it significa interactivo… y tty.


Este comando debería permitirle inspeccionar una imagen o un contenedor docker en ejecución:

docker inspect name-of-container-or-image

Es posible que desee hacer esto y averiguar si hay alguna bash o sh ahí. Busque el punto de entrada o cmd en el retorno json.

NOTA: Esta respuesta depende de que la herramienta de comentarios esté presente, pero si no hay bash shell o herramientas comunes como ls presente, primero puede agregar uno en una capa si tiene acceso a la Dockerfile: ejemplo para alpino:

RUN apk add --no-cache bash

De lo contrario, si no tiene acceso a la Dockerfile luego simplemente copie los archivos de un contenedor recién creado y mírelos haciendo:

docker create   # returns container ID the container is never started.
docker cp : 
docker rm 
cd  && ls -lsah

ver la documentación de docker exec

consulte la documentación ejecutiva de docker-compose

ver docker inspeccionar la documentación

ver docker crear documentación

En caso de que su contenedor se detenga o no tenga un caparazón (por ejemplo, hello-world mencionado en la guía de instalación, o noalpinetraefik), este es probablemente el único método posible para explorar el sistema de archivos.

Puede archivar el sistema de archivos de su contenedor en un archivo tar:

docker export adoring_kowalevski > contents.tar

O enumere los archivos:

docker export adoring_kowalevski | tar t

Tenga en cuenta que, según la imagen, puede llevar algo de tiempo y espacio en disco.

Si piensas que ha sido útil este artículo, nos gustaría que lo compartas con más desarrolladores y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *