Чтобы запустить интерактивную оболочку для образа Ubuntu, мы можем запустить:
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
Но когда это выполняется для образа Alpine Docker , получаются следующие результаты:
ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Что такое команда для запуска интерактивной оболочки в базовом контейнере Alpine?
-d
возможность.ash
а что нетbash
, что, будучи не очень знакомым с Alpine, это то, что заставило меня и помешало мне получить доступ к контейнеру раньше.Обычно, Alpine Linux образ не содержит
bash
, Вместо этого вы можете использовать/bin/ash
,/bin/sh
,ash
или толькоsh
./ Бен / зола
/ Бен / ш
ясень
ш
Я надеюсь, что эта информация поможет вам.
источник
/bin/ash
иash
? Похоже на/bin/sh
аsh
.ash
это только символическая ссылка на/bin/ash
. Некоторые дистрибутивы Linux не имеют символических ссылок.В настоящее время образы Alpine будут загружаться напрямую
/bin/sh
по умолчанию, без указания оболочки для выполнения:Это , так как
alpine
изображение Dockerfiles теперь содержит вCMD
команде, что определяет оболочку для выполнения при запуске контейнера:CMD ["/bin/sh"]
.В более старых версиях образов Alpine (до 2017 года) команда CMD не использовалась, поскольку Docker использовал для создания дополнительного слоя для CMD, что приводило к увеличению размера изображения. Это то, чего разработчики Alpine хотели избежать. В последних версиях Docker (1.10+) CMD больше не занимает слой, поэтому он был добавлен в
alpine
изображения. Следовательно, до тех пор, пока CMD не будет переопределен, будут загружаться последние образы Alpine/bin/sh
.Для справки см. Следующую фиксацию в официальных альпийских файлах докеров Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a9655b49
источник
Если контейнер уже запущен:
источник