GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Starten einer Shell im Container Docker Alpine

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


Linux
  1. Power(Shell) an die Menschen

  2. Anpassen der Bash-Shell

  3. Die Bedeutung von $? In einem Shell-Skript?

  4. Führen Sie ein Shell-Skript über den Befehl docker-compose im Container aus

  5. Wie wird der Hostname für den laufenden Container angegeben?

Docker-Image vs. Container:Die Hauptunterschiede

Was ist die Shell unter Linux?

Eine Einführung in die Containerregistrierung von Quay

So überprüfen Sie, ob der Docker-Daemon oder ein Container ausgeführt wird

So prüfen Sie den Inhalt eines Docker-Images, ohne einen Container zu starten

So führen Sie SSH in einen Docker-Container ein