Généralement, une image Alpine Linux ne contient pas bash
, Au lieu de cela, vous pouvez utiliser /bin/ash
, /bin/sh
, ash
ou seulement sh
.
/bin/ash
docker run -it --rm alpine /bin/ash
/bin/sh
docker run -it --rm alpine /bin/sh
cendre
docker run -it --rm alpine ash
merde
docker run -it --rm alpine sh
J'espère que ces informations vous aideront.
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Options utilisées ci-dessus :
/bin/ash
est Ash (Almquist Shell) fourni par BusyBox--rm
Supprimer automatiquement le conteneur à sa sortie (docker run --help
)-i
Mode interactif (Gardez STDIN ouvert même s'il n'est pas connecté)-t
Attribuer un pseudo-TTY
De nos jours, les images Alpine démarrent directement en /bin/sh
par défaut, sans avoir à spécifier de shell à exécuter :
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
C'est depuis le alpine
image Dockerfiles contient maintenant un CMD
commande, qui spécifie le shell à exécuter au démarrage du conteneur :CMD ["/bin/sh"]
.
Dans les anciennes versions d'images Alpine (avant 2017), la commande CMD n'était pas utilisée, car Docker créait une couche supplémentaire pour CMD, ce qui entraînait une augmentation de la taille de l'image. C'est quelque chose que les développeurs d'images Alpine voulaient éviter. Dans les versions récentes de Docker (1.10+), CMD n'occupe plus une couche, et il a donc été ajouté à alpine
images. Par conséquent, tant que CMD n'est pas remplacé, les images Alpine récentes démarreront en /bin/sh
.
Pour référence, consultez le commit suivant sur les Dockerfiles Alpine officiels de Glider Labs :
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b