minimal container linux docker containers alpine

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