вопрос по сборке docker - команда adad-host - PullRequest
0 голосов
/ 30 ноября 2018

Я являюсь инфра-администратором для предоставления образов Docker разработчикам.

Я создал образы "A" и затем сообщаю команде docker run

docker run --add-host=a-lic:10.0.0.1 --add-host=b-lic:10.0.0.2 A

, которую каждый разработчик запрашивает у меня, пожалуйста.удалить параметр --add-host, потому что он длинный.Поэтому я хочу отредактировать файл / etc / hosts при сборке Docker, если это возможно.

Я обнаружил, что параметр docker build --add-host создан заново с 17.04, но он не работает, как я ожидал.

кто-то сказалОпция --add-host используется только при создании образа, а другая указанная опция --add-host будет работать, как показано ниже (мои мысли).

docker build --add-host=a-lic:10.0.0.1 -t A .
docker run -it A

И документации докера для этого недостаточно.

$ docker build --help
Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Options:
      --add-host list           Add a custom host-to-IP mapping (host:ip)

Что правильно ??

1 Ответ

0 голосов
/ 11 декабря 2018

Это специально (см. https://github.com/moby/moby/issues/34078#issuecomment-314798584 / https://github.com/moby/moby/pull/30383#issuecomment-314797629); функция --add-host во время сборки предназначена для переопределения хоста во время сборки, но не для сохранения этой конфигурациина изображении.

Если будет сохраняться на изображении;

  • изображение не будет переносимым (т. е. работать только в вашей конкретной среде) *Изображения 1015 *
  • смогут подделать DNS (что, если изображение содержит google.com 123.123.123.123?)

Человек , выполняющий изображение, должен сохранять контроль над перезаписывающими хостами, а не автор изображения, это конфигурация времени выполнения.

Возможные решения Для вашей ситуации:

  • Запустите внутренний DNS, вы можете настроить DNS-сервер по умолчанию для использования в демоне;таким образом, каждый запущенный контейнер будет автоматически использовать настроенный DNS по умолчанию
  • Использовать docker compose и предоставлять docker-compose.yml вашим разработчикам. Файл docker compose позволяет вам указать все параметры, которые следует использовать при запускеg контейнер, поэтому разработчики могут просто docker compose up запустить контейнер со всеми опциями, которые им нужно установить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...