Pour démarrer un shell interactif pour l'image Ubuntu, nous pouvons exécuter:
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
Mais lorsque cela est exécuté pour l' image Alpine Docker , les résultats suivants:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Quelle est la commande pour démarrer un shell interactif dans un conteneur de base Alpine?
-d
option.ash
et nonbash
, ce qui, n'étant pas très familier avec Alpine, est ce qui m'a attiré et m'a empêché d'accéder au conteneur plus tôt.En général, une image Linux Alpine ne contient pas
bash
, au lieu que vous pouvez utiliser/bin/ash
,/bin/sh
,ash
ou seulementsh
./ bin / ash
/ bin / sh
cendre
sh
J'espère que ces informations vous aideront.
la source
/bin/ash
etash
? Similaire pour/bin/sh
etsh
.ash
n'est qu'un lien symbolique vers/bin/ash
. Certaines distributions Linux n'ont pas de liens symboliques.De nos jours, les images Alpine démarreront directement
/bin/sh
par défaut, sans avoir à spécifier un shell à exécuter:Ceci est depuis les
alpine
images Dockerfiles contiennent maintenant uneCMD
commande, qui spécifie le shell à exécuter lorsque le conteneur commence:CMD ["/bin/sh"]
.Dans les anciennes versions d'image Alpine (avant 2017), la commande CMD n'était pas utilisée, car Docker avait l'habitude de créer 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 d'Alpine voulaient éviter. Dans les versions récentes de Docker (1.10+), CMD n'occupe plus une couche et a donc été ajouté aux
alpine
images. Par conséquent, tant que CMD n'est pas écrasé, les images alpines récentes démarreront/bin/sh
.Pour référence, voir le commit suivant sur les fichiers officiels Alpine Docker de Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a965bd
la source
Dans le cas où le conteneur est déjà en cours d'exécution:
la source