Solución:
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Opciones utilizadas anteriormente:
-
/bin/ash
es Ash (Almquist Shell) proporcionado por BusyBox -
--rm
Retire automáticamente el contenedor cuando salga (docker run --help
) -
-i
Modo interactivo (mantenga STDIN abierto incluso si no está conectado) -
-t
Asignar un pseudo-TTY
Por lo general, una imagen de Alpine Linux no contiene bash
, En su lugar puedes usar /bin/ash
, /bin/sh
, ash
o solo sh
.
/ papelera / ceniza
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.
Hoy en día, las imágenes de 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 es porque el alpine
image Dockerfiles ahora contienen un CMD
comando, que especifica el shell que se ejecutará cuando se inicie el contenedor: CMD ["/bin/sh"]
.
En las versiones de imagen de Alpine más antiguas (anteriores a 2017), el comando CMD no se usó, 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 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, siempre que no se anule CMD, las imágenes recientes de Alpine se iniciarán en /bin/sh
.
Como referencia, consulte el siguiente compromiso con los archivos Dockerfiles oficiales de Alpine de Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b