Как запретить докеру назначать новое имя хоста новым контейнерам? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть Dockerfile, который будет выполнять скрипт PS для изменения имени хоста контейнера. Но когда я использую «Docker Run» для запуска нового контейнера из этого образа, имя хоста контейнера меняется на идентификатор контейнера. Скрипт работает изнутри контейнера. Я хочу, чтобы имя хоста оставалось неизменным в соответствии с тем, что скрипт изменился на этапе сборки.

Я попытался выполнить сценарий из контейнера, и сценарий работает нормально. Имя хоста контейнера изменяется без каких-либо ошибок. Но запуск контейнера из этого образа перезаписывает имя хоста.

FROM microsoft/mssql-server-windows-developer
COPY Test.ps1 .
RUN .\Test.ps1

Я ожидаю, что имя хоста контейнера останется неизменным на этапе сборки. Текущий вывод состоит в том, что Docker меняет имя хоста обратно на идентификатор контейнера.

Ответы [ 3 ]

1 голос
/ 27 июня 2019

Существует множество атрибутов контейнера Docker, которые устанавливаются только во время выполнения.Наиболее заметно это включает опубликованные порты и монтирование томов, но есть также несколько других деталей, которые установлены только на docker run время.Соответственно, ничто из того, что вы делаете в Dockerfile, не повлияет на имя хоста работающего контейнера: оно всегда задается параметром docker run --hostname или, если его нет, устанавливается шестнадцатеричный идентификатор контейнера.

(Также в этом пространствеобраз Docker никогда не имеет какой-либо настройки сети или запуска фоновых процессов.)

В большинстве случаев вам на самом деле все равно, что контейнер считает своим собственным именем хоста.Установка имени хоста не влияет на то, как другие контейнеры могут достичь контейнера или чего-либо еще вне контейнера, и большинство программ не удосуживаются проверить свое собственное имя хоста.(Что должно произойти, если вы docker run --hostname=stackoverflow.com?)

Если вы должны задать имя хоста, вы должны установить его во время запуска контейнера, либо с опцией docker run --hostname, либо с опцией Docker Compose hostname: (или аналогичный вариант для другого оркестратора).

0 голосов
/ 27 июня 2019

добавить значение docker-file container_name

  db:
       image: mysql:5.7
       container_name: mycontainername
       hostname: myhostname
       networks:
           default:
                aliases:
                   myalias
0 голосов
/ 27 июня 2019

Вы должны попробовать добавить --name=meaningful_name к команде docker run.

Также, прочитайте , что .

...