GNU/Linux >> Znalost Linux >  >> Linux

Spuštění shellu v kontejneru Docker Alpine

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


Linux
  1. Význam $? Ve skriptu Shell?

  2. Úvod do Dockeru

  3. Jak opustit kontejner Docker

  1. Spuštění OpenSSH v kontejneru Alpine Docker

  2. Jaké je PID v hostiteli procesu běžícího uvnitř kontejneru Docker?

  3. Jak zachovat docker alpine kontejner po použití?

  1. Moc (Shell) lidem

  2. Spusťte skript prostředí z příkazu docker-compose uvnitř kontejneru

  3. Jak zadat název hostitele pro běžící kontejner?