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/ashje Ash (Almquist Shell) poskytovaný BusyBox--rmAutomaticky odstranit kontejner, když opustí (docker run --help)-iInteraktivní režim (Nechat STDIN otevřený, i když není připojen)-tPř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