¿Cómo puedo entrar en el shell de un contenedor Docker?
Estoy empezando a trabajar con Docker. Estoy usando la imagen base de WordPress y docker-compose.
Estoy tratando de entrar en uno de los contenedores para inspeccionar los archivos/directorios que se crearon durante la construcción inicial. Intenté ejecutar docker-compose run containername ls -la
, pero no hizo nada. Aunque lo hiciera, preferiría tener una consola en la que pudiera recorrer la estructura de directorios, en lugar de ejecutar un único comando. ¿Cuál es la forma correcta de hacer esto con Docker?
979
3
docker attach
te permitirá conectarte a tu contenedor Docker, pero esto no es realmente lo mismo quessh
. Si tu contenedor está ejecutando un servidor web, por ejemplo,docker attach
probablemente te conectará al stdout del proceso del servidor web. No necesariamente te dará un shell.El comando
docker exec
es probablemente lo que estás buscando; esto te permitirá ejecutar comandos arbitrarios dentro de un contenedor existente. Por ejemplo:Por supuesto, cualquier comando que estés ejecutando debe existir en el sistema de archivos del contenedor.
En el comando anterior `
es el nombre o ID del contenedor de destino. No importa si estás usando
docker composeo no; simplemente ejecuta
docker ps` y usa el ID (una cadena hexadecimal mostrada en la primera columna) o el nombre (mostrado en la última columna). Por ejemplo, dado:puedo ejecutar:
Podría lograr lo mismo ejecutando
Del mismo modo, podría iniciar un shell en el contenedor;
docker exec
será sin duda una solución. Una forma fácil de trabajar con la pregunta que has hecho es montar el directorio dentro de Docker al directorio del sistema local.Así podrás ver los cambios en la ruta local al instante.
Otra opción es utilizar nsenter.