Normalerweise enthält ein Alpine-Linux-Image bash
nicht , Stattdessen können Sie /bin/ash
verwenden , /bin/sh
, ash
oder nur sh
.
/bin/ash
docker run -it --rm alpine /bin/ash
/bin/sh
docker run -it --rm alpine /bin/sh
Asche
docker run -it --rm alpine ash
sh
docker run -it --rm alpine sh
Ich hoffe, diese Informationen helfen Ihnen.
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Oben verwendete Optionen:
/bin/ash
ist Ash (Almquist Shell), bereitgestellt von BusyBox--rm
Den Container automatisch entfernen, wenn er beendet wird (docker run --help
)-i
Interaktiver Modus (STDIN offen halten, auch wenn es nicht angeschlossen ist)-t
Weisen Sie ein Pseudo-TTY zu
Heutzutage booten Alpine-Images direkt in /bin/sh
standardmäßig, ohne dass eine auszuführende Shell angegeben werden muss:
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
Dies ist seit dem alpine
image Dockerfiles enthalten jetzt einen CMD
Befehl, der die Shell angibt, die beim Start des Containers ausgeführt werden soll:CMD ["/bin/sh"]
.
In älteren Alpine-Image-Versionen (vor 2017) wurde der CMD-Befehl nicht verwendet, da Docker früher eine zusätzliche Ebene für CMD erstellte, wodurch die Image-Größe zunahm. Das wollten die Bildentwickler von Alpine vermeiden. In neueren Docker-Versionen (1.10+) belegt CMD keinen Layer mehr und wurde daher zu alpine
hinzugefügt Bilder. Solange CMD nicht überschrieben wird, booten aktuelle Alpine-Images daher in /bin/sh
.
Als Referenz siehe das folgende Commit zu den offiziellen Alpine Dockerfiles von Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b