Существует множество атрибутов контейнера Docker, которые устанавливаются только во время выполнения.Наиболее заметно это включает опубликованные порты и монтирование томов, но есть также несколько других деталей, которые установлены только на docker run
время.Соответственно, ничто из того, что вы делаете в Dockerfile, не повлияет на имя хоста работающего контейнера: оно всегда задается параметром docker run --hostname
или, если его нет, устанавливается шестнадцатеричный идентификатор контейнера.
(Также в этом пространствеобраз Docker никогда не имеет какой-либо настройки сети или запуска фоновых процессов.)
В большинстве случаев вам на самом деле все равно, что контейнер считает своим собственным именем хоста.Установка имени хоста не влияет на то, как другие контейнеры могут достичь контейнера или чего-либо еще вне контейнера, и большинство программ не удосуживаются проверить свое собственное имя хоста.(Что должно произойти, если вы docker run --hostname=stackoverflow.com
?)
Если вы должны задать имя хоста, вы должны установить его во время запуска контейнера, либо с опцией docker run --hostname
, либо с опцией Docker Compose hostname:
(или аналогичный вариант для другого оркестратора).