Подтвердить что ты не робот

Запуск оболочки в контейнере Docker Alpine

Чтобы запустить интерактивную оболочку для образа Ubuntu, мы можем запустить:

[email protected]:~$ docker run -it --rm ubuntu
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Но когда это выполняется для образа Alpine Docker, получаются следующие результаты:

[email protected]:~$ docker run -it --rm alpine
Error response from daemon: No command specified

Что такое команда для запуска интерактивной оболочки в базовом контейнере Alpine?

4b9b3361

Ответ 1

[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / # 

Параметры, используемые выше:

  • /bin/ash - Ash (Almquist Shell), предоставленный BusyBox
  • --rm Автоматически удалять контейнер, когда он выходит (docker run --help)
  • -i Интерактивный режим (удерживайте STDIN открытым, даже если он не подключен)
  • -t Выделить псевдотематику

Ответ 2

Обычно образ Alpine Linux не содержит bash, вместо этого вы можете использовать /bin/ash, /bin/sh, ash или только sh.

/бен/зола

docker run -it --rm alpine /bin/ash

/бен/ш

docker run -it --rm alpine /bin/sh

золы

docker run -it --rm alpine ash

ш

docker run -it --rm alpine sh

Надеюсь, эта информация поможет вам.

Ответ 3

В настоящее время образы Alpine будут загружаться непосредственно в /bin/sh по умолчанию, без указания оболочки для выполнения:

$ sudo docker run -it --rm alpine  
/ # echo $0  
/bin/sh  

Это связано с тем, что файлы Docker alpine изображений теперь содержат команду CMD, которая указывает оболочку для выполнения при запуске контейнера: CMD ["/bin/sh"].

В более старых версиях alpine Image (до 2017 года) команда CMD не использовалась, поскольку Docker создавал дополнительный слой для CMD что приводило к увеличению размера изображения. Это то, чего разработчики alpine изображений хотели избежать. В последних версиях Docker (1. 10+) CMD больше не занимает слой и поэтому был добавлен к alpine изображениям. Таким образом, пока CMD не переопределен, последние образы Alpine будут загружаться в /bin/sh.

Для справки см. Следующий коммит к официальным альпийским Docker файлам Glider Labs:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b