2014-12-12 3 views
9

Чтобы передать другие варианты docker build, вы можете указать DOCKER_OPTS в /etc/default/docker, однако --net не доступен. Можно ли использовать сетевой стек хоста при создании контейнера?Pass --net = host to docker build

Я запускаю версию докеров 1.3.2, строю 39fa2fa.

Спасибо!

+0

Зачем вы хотите это сделать? – Bryan

+0

Я бы хотел использовать сетевой стек моих хостов при создании контейнеров. У меня возникли проблемы с получением контейнера докеров для использования DNS-сервера моей компании в течение времени сборки. Использование --net = host было самым простым способом заставить его работать при запуске контейнера. – user2334289

ответ

11

Чтобы решить эту проблему, настройте демон докеров, чтобы использовать DNS-сервер вашей компании. Например, если ваш resolv.conf имеет следующую конфигурацию:

$> cat /etc/resolv.conf 
domain mycompany 
search mycompany 
nameserver 10.123.123.123 

Изменить/и т.д./по умолчанию/докер содержать следующую:

DOCKER_OPTS="--dns 10.123.123.123" 

и перезапустить демон Docker с:

sudo service docker restart 

Теперь контейнеры будут иметь доступ к интрасети во время операции сборки.

Связанный ответ: Dockerfile: Docker build can't download packages: centos->yum, debian/ubuntu->apt-get behind intranet

+1

Мне также пришлось удалить частный DNS, как в (http://askubuntu.com/questions/627899/nameserver-127-0-1-1-in-resolv-conf-wont-go-away) BONUS oneliner: DOCKER_OPTS = $ (cat /etc/resolv.conf | grep nameserver | awk '{printf "--dns" $ 2}') && sudo service docker restart – ElMesa

+0

И, чтобы найти ваш DNS-ip в окнах, используйте ipconfig/all | findstr/R "DNS \ Servers" изначально https://superuser.com/a/486925 –

2

Из новейших версий (в настоящее время докер в.п. V17) можно добавить --network = хост к вашей команде Docker сборки, который похож на --net = хост при использовании Docker перспективы !