Por lo general, una imagen de Alpine Linux no contiene bash
, En su lugar, puede usar /bin/ash
, /bin/sh
, ash
o solo sh
.
/papelera/cenizas
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.
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Opciones utilizadas anteriormente:
/bin/ash
es Ash (Almquist Shell) proporcionado por BusyBox--rm
Elimina automáticamente el contenedor cuando sale (docker run --help
)-i
Modo interactivo (Mantener STDIN abierto incluso si no está conectado)-t
Asignar un pseudo-TTY
Hoy en día, las imágenes de Alpine se iniciarán directamente en /bin/sh
por defecto, sin tener que especificar un shell para ejecutar:
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
Esto es desde el alpine
Los archivos Docker de imagen ahora contienen un CMD
comando, que especifica el shell que se ejecutará cuando se inicie el contenedor:CMD ["/bin/sh"]
.
En versiones anteriores de imágenes de Alpine (anteriores a 2017), no se usaba el comando CMD, ya que Docker solía crear una capa adicional para CMD que aumentaba el tamaño de la imagen. Esto es algo que los desarrolladores de imágenes de Alpine querían evitar. En las versiones recientes de Docker (1.10+), CMD ya no ocupa una capa, por lo que se agregó a alpine
imágenes Por lo tanto, mientras no se anule CMD, las imágenes recientes de Alpine se iniciarán en /bin/sh
.
Como referencia, consulte el siguiente compromiso con los Dockerfiles oficiales de Alpine de Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b