Hoy en día, las imágenes Alpine se iniciarán directamente /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 los alpine
Dockerfiles imagen ahora contienen un CMD
comando, que especifica el shell para ejecutar cuando el contenedor se inicia: 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 las versiones recientes de Docker (1.10+), CMD ya no ocupa una capa, por lo que se agregó a las alpine
imágenes. Por lo tanto, siempre que CMD no se anule, las imágenes Alpine recientes se iniciarán /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