ACTUALIZAR El
método más fácil: usar docker exec
Docker versión 1.3 o posterior admite el comando exec
que se comporta 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 ejecutándose ya). Puede ejecutar /bin/bash
para explorar el estado del contenedor:
docker exec -t -i mycontainer /bin/bash
ver la documentación de la línea de comandos de Docker
Método alternativo 1
Instantánea
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 utilizando (¡el sistema de archivos del contenedor en ejecución no se ve afectado!):
docker rmi mysnapshot
Método alternativo 2
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 (conectarse y ejecutar lo que quiera).
ACTUALIZACIÓN: Método alternativo 3
nsenter
Uso nsenter
, consulte https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
La versión corta es: con nsenter, puede obtener un shell en un contenedor existente, incluso si ese contenedor no ejecuta SSH o cualquier tipo de demonio de propósito especial
docker exec <container> bash
. Entonces, solo abres un caparazón dentro del contenedor.