Aby uruchomić interaktywną powłokę dla obrazu Ubuntu, możemy uruchomić:
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
Ale gdy jest to uruchamiane dla obrazu Alpine Docker , następujące wyniki:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Jakie jest polecenie uruchamiania powłoki interaktywnej w kontenerze bazowym Alpine?
-d
opcję.ash
a niebash
, co, będąc niezbyt zaznajomionym z Alpine, jest tym, co mnie złapało i uniemożliwiło mi wcześniejszy dostęp do kontenera.Zazwyczaj Alpine Linux obraz nie zawiera
bash
, Zamiast tego można użyć/bin/ash
,/bin/sh
,ash
lub tylkosh
./ bin / ash
/ bin / sh
popiół
sh
Mam nadzieję, że te informacje pomogą Ci.
źródło
/bin/ash
iash
? Podobnie dla/bin/sh
ish
.ash
jest to tylko symboliczne łącze do/bin/ash
. Niektóre dystrybucje Linuksa nie mają dowiązań symbolicznych.Obecnie obrazy Alpine
/bin/sh
domyślnie uruchamiają się bezpośrednio , bez konieczności określania powłoki do wykonania:Jest to ponieważ
alpine
Dockerfiles obraz teraz zawieraćCMD
polecenia, który określa powłoki wykonać po uruchomieniu kontenerowych:CMD ["/bin/sh"]
.W starszych wersjach obrazu Alpine (sprzed 2017 r.) Polecenie CMD nie było używane, ponieważ Docker używał do utworzenia dodatkowej warstwy dla CMD, co spowodowało zwiększenie rozmiaru obrazu. To jest coś, czego twórcy grafiki Alpine chcieli uniknąć. W ostatnich wersjach Dockera (1.10+) CMD nie zajmuje już warstwy, więc został dodany do
alpine
obrazów. Dlatego tak długo, jak CMD nie zostanie zastąpiony, najnowsze obrazy Alpine zostaną uruchomione/bin/sh
.Aby uzyskać więcej informacji, zobacz poniższe zobowiązanie do oficjalnych plików Alpine Dockerfiles firmy Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53c96578b
źródło
W przypadku, gdy kontener już działa:
źródło