докер выполняет человечность/bin/bash по сравнению с докером выполненная человечность

17.06.0-ce версия докера

Я изучаю Докера путем наблюдения видео курса.

Шоу лектора:

sudo docker run -ti ubuntu /bin/bash

Выполненный докер с человечностью изображения. И то, что беспокоит меня, /bin/bash\. man docker run шоу это /bin/bash команда. Это docker run IMAGE [COMMAND]. Ну, это в порядке. Но каково различие между

sudo docker run -ti ubuntu 

и

sudo docker run -ti ubuntu /bin/bash

Для меня нет ни одного. И лектор не сосредотачивает внимание на команде. Он сказал, что мы - просто выполненный докер. Это была его первая команда в курсе. И затем он показывает, что мы были изолированы от хост-машины, мы можем свободно разрушить то, что мы хотим без любого повреждения (как комната-rf / мусорное ведро).

Я проверил:

$ sudo docker run -ti ubuntu
root@aaf7cd26fe18:/# echo $SHELL
/bin/bash


$ sudo docker run -ti ubuntu /bin/bash
root@6b2570958216:/# echo $SHELL
/bin/bash

Ну, для меня я решил бросить это /bin/bash часть далеко как мусор.

Но так или иначе я решил спросить Вас: возможно, существует некоторое различие между двумя способами выполнить Докера? Если существует, на что это похоже?

14
задан 23 July 2017 в 01:02

2 ответа

Банка изображений докера может указать, что определенная команда должна быть выполнена по умолчанию, с помощью CMD директива в Dockerfile. И:

Если пользователь указывает аргументы docker run затем они переопределят значение по умолчанию, указанное в CMD.

Как это происходит, команда по умолчанию, указанная для Dockerfile Ubuntu, является, на самом деле, ударом:

CMD ["/bin/bash"]

Так, для конкретного случая изображения Ubuntu, docker run ... ubuntu /bin/bash не отличается от docker run ... ubuntu.

Конечно, это не должно всегда быть верно. Dockerfile для механизма базы данных может выполнить команду базы данных по умолчанию. В этом случае при необходимости в интерактивной оболочке необходимо будет сделать docker run ... /bin/bash.

В целом Вы не можете принять это docker run даст Вам интерактивную оболочку. Более безопасно указать /bin/bash если Вам нужна оболочка.

10
ответ дан 23 November 2019 в 03:05

Когда Вы не обеспечиваете команду, которая в Вашем случае является /bin/bash, при использовании -ti (i интерактивный, t терминал) Вы будете привязаны к программе по умолчанию, которая была определена, чтобы быть выполненной при использовании run команда в DockerFile.

Например, если изображение выполняет веб-сервер на переднем плане, что Вы будете присматривать за использованием run без /bin/bash журналы того веб-сервера (программа по умолчанию, которая была запущена).

При определении команды Вы говорите, что я не забочусь о том, что продолжается или работает на изображении, дают мне интерактивный терминал путем выполнения этой "команды".

В Ubuntu команда по умолчанию bash и если Вы не обеспечиваете -ti контейнер будет остановлен, прямо будучи выполненным. потому что это выполнило удар в неинтерактивном режиме, и после того, как это - конец, контейнеру больше нечего делать.

1
ответ дан 23 November 2019 в 03:05

Другие вопросы по тегам:

Похожие вопросы: