linux - minimal - docker container search
Inicio de un depĆ³sito en el contenedor Docker Alpine (3)
Para iniciar un shell interactivo para la imagen de Ubuntu podemos ejecutar:
ole@T:~$ docker run -it --rm ubuntu
root@1a6721e1fb64:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Pero cuando esto se ejecuta para la imagen Alpine Docker , los siguientes resultados:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
¿Cuál es el comando para iniciar un shell interactivo en un contenedor base Alpine?
Hoy en día, las imágenes Alpine se iniciarán directamente en
/bin/sh
de forma predeterminada, sin tener que especificar un shell para ejecutar:
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
Esto se debe a que los archivos Docker de la imagen alpina ahora contienen un comando
CMD
, que especifica el shell que se ejecutará cuando se inicie el contenedor:
CMD ["/bin/sh"]
.
En versiones anteriores de imágenes Alpine (anteriores a 2017), el comando CMD no se usaba, ya que Docker solía crear una capa adicional para CMD que hacía que aumentara el tamaño de la imagen.
Esto es algo que los desarrolladores de imágenes Alpine querían evitar.
En versiones recientes de Docker (1.10+), CMD ya no ocupa una capa, por lo que se agregó a las imágenes
alpine
.
Por lo tanto, siempre que CMD no se anule, las imágenes Alpine recientes se iniciarán en
/bin/sh
.
Para referencia, consulte el siguiente compromiso con los Alpine Dockerfiles oficiales de Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b
Por lo general, una imagen de Alpine Linux no contiene
bash
, en su lugar puede usar
/bin/ash
,
/bin/sh
,
ash
o solo
sh
.
/ bin / ash
docker run -it --rm alpine /bin/ash
/ bin / sh
docker run -it --rm alpine /bin/sh
ceniza
docker run -it --rm alpine ash
sh
docker run -it --rm alpine sh
Espero que esta información te ayude.
ole@T:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Opciones utilizadas anteriormente:
-
/bin/ash
es Ash ( Almquist Shell ) provisto por BusyBox -
--rm
automáticamente el contenedor cuando sale (docker run --help
) -
-i
Modo interactivo (Mantenga STDIN abierto incluso si no está conectado) -
-t
Asigna un pseudo-TTY