Um eine interaktive Shell für das Ubuntu-Image zu starten, können wir Folgendes ausführen:
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
Wenn dies jedoch für das Alpine Docker-Image ausgeführt wird , führt dies zu folgenden Ergebnissen:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Was ist der Befehl zum Starten einer interaktiven Shell in einem alpinen Basiscontainer?
-d
Option.ash
und nichtbash
, was mich, da ich mit Alpine nicht sehr vertraut bin, dazu gebracht hat, früher auf den Container zuzugreifen.Üblicherweise wird ein Alpine Linux - Image enthält nicht
bash
, stattdessen können Sie verwenden/bin/ash
,/bin/sh
,ash
oder nursh
./ bin / ash
/ bin / sh
Asche
Sch
Ich hoffe, diese Informationen helfen Ihnen.
quelle
/bin/ash
undash
? Ähnliches gilt für/bin/sh
undsh
.ash
nur eine symbolische Verbindung zu ist/bin/ash
. Einige Linux-Distributionen haben keine symbolischen Links.Heutzutage werden alpine Images
/bin/sh
standardmäßig direkt gestartet, ohne dass eine Shell zum Ausführen angegeben werden muss:Dies ist seit dem
alpine
CMD
, dass Image-Docker-Dateien jetzt einen Befehl enthalten , der die Shell angibt, die ausgeführt werden soll, wenn der Container gestartet wird :CMD ["/bin/sh"]
.In älteren alpinen Bildversionen (vor 2017) wurde der CMD-Befehl nicht verwendet, da Docker eine zusätzliche Ebene für CMD erstellt hat, wodurch die Bildgröße zunahm. Dies wollten die alpinen Bildentwickler vermeiden. In neueren Docker-Versionen (1.10+) belegt CMD keine Ebene mehr und wurde daher zu
alpine
Bildern hinzugefügt . Solange CMD nicht überschrieben wird, werden daher aktuelle Alpine-Images gestartet/bin/sh
.Weitere Informationen finden Sie im folgenden Commit für die offiziellen Alpine Dockerfiles von Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf9cf
quelle
Falls der Container bereits läuft:
quelle