Obraz Alpine Linux obvykle neobsahuje bash
, Místo toho můžete použít /bin/ash
, /bin/sh
, ash
nebo pouze sh
.
/bin/ash
docker run -it --rm alpine /bin/ash
/bin/sh
docker run -it --rm alpine /bin/sh
popel
docker run -it --rm alpine ash
sh
docker run -it --rm alpine sh
Doufám, že vám tyto informace pomohou.
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
Možnosti použité výše:
/bin/ash
je Ash (Almquist Shell) poskytovaný BusyBox--rm
Automaticky odstranit kontejner, když opustí (docker run --help
)-i
Interaktivní režim (Nechat STDIN otevřený, i když není připojen)-t
Přidělte pseudo-TTY
V dnešní době se obrázky Alpine spouštějí přímo do /bin/sh
ve výchozím nastavení, aniž byste museli specifikovat shell, který se má spustit:
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
To je od alpine
image Dockerfiles nyní obsahují CMD
příkaz, který specifikuje shell, který se má spustit při spuštění kontejneru:CMD ["/bin/sh"]
.
Ve starších verzích obrázků Alpine (před rokem 2017) se příkaz CMD nepoužíval, protože Docker vytvořil další vrstvu pro CMD, což způsobilo zvětšení velikosti obrázku. To je něco, čemu se vývojáři obrázků Alpine chtěli vyhnout. V posledních verzích Dockeru (1.10+) již CMD nezabírá vrstvu, a proto bylo přidáno do alpine
snímky. Pokud tedy není CMD přepsáno, nejnovější obrázky Alpine se zavedou do /bin/sh
.
Odkaz naleznete v následujícím potvrzení oficiálních Alpine Dockerfiles od Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b