1.В чем разница между --name и --hostname в команде запуска docker?
Ответ: Когда мы используем docker run
команду dockerсоздает контейнер и присваивает ему идентификатор контейнера типа UUID
.Теперь этот идентификатор контейнера можно использовать для ссылки на созданный контейнер.Но запомнить этот идентификатор контейнера может быть сложно.
Так что мы можем использовать --name
в команде запуска Docker.Теперь вы можете использовать идентификатор контейнера для ссылки на созданный контейнер или использовать имя контейнера для него.
Аналогично, при создании контейнера Docker имя хоста по умолчанию будет идентификатором контейнера в Docker.Вы можете переопределить имя хоста, используя --hostname
.Я взял это из Docker docs .
Теперь рассмотрим сценарий, в котором вы используете докер-контейнеры через код и хотите сослаться на docker.Поскольку docke rid создается во время создания, вы не можете знать его заранее, поэтому можете использовать --name.Чтобы узнать, когда использовать --hostname в проге docker, читать из это сообщение о стеке потока
2. Почему foo не может достичь бара по имени хоста = barhost?
Ответ: Как указано в вышеупомянутом сообщении stackoverflow , --hostname
буквально не меняет имя хоста для контейнера Docker таким образом, чтобы его можно было использовать для доступа к немуснаружи.Этот вариант использования аналогичен тому, почему вы хотите использовать флаг --name
, если вы ожидаете определенное значение, которое в противном случае генерируется во время создания контейнера.
3.Если вы можете 't достичь бара по имени хоста из foo, почему это можно сделать из бара?
Ответ: Ответ на этот вопрос уже должен быть ясен.Внутри контейнера имя хоста, упомянутое с помощью --hostname
, существует, но вне контейнера это не так.