Подтвердить что ты не робот

Сборка докеров завершается с помощью облачной виртуальной машины

У меня есть Ubuntu 16.04 (Xenial), работающий внутри Azure VM. Я выполнил инструкции по установке Docker, и все кажется прекрасным и денди.

Одна из вещей, которые мне нужно сделать, когда я запускаю docker run, - это передать --net=host, что позволяет мне запускать apt-get update и другие зависящие от Интернета команды в контейнере.

Проблема возникает, когда я пытаюсь запустить docker build на основе существующего образа Ubuntu. Он не работает:

введите описание изображения здесь

Проблема заключается в том, что передать команду --net=host в команду сборки невозможно. Я вижу, что на Docker GitHub открываются проблемы (# 20987, # 10324), но нет четкого разрешения.

Существует существующий ответ на переполнение стека который охватывает сценарий, который я хочу, но это не работает в виртуальной виртуальной среде.

Любые мысли о том, что может произойти?

ОБНОВЛЕНИЕ 1:

Вот вывод docker version:

Client:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 22:11:10 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 22:11:10 2016
 OS/Arch:      linux/amd64

ОБНОВЛЕНИЕ 2:

Вот результат от docker network ls:

NETWORK ID          NAME                DRIVER              SCOPE
aa69fa066700        bridge              bridge              local               
1bd082a62ab3        host                host                local               
629eacc3b77e        none                null                local   
4b9b3361

Ответ 1

Другой подход состоял бы в том, чтобы попытаться разрешить доклер-машине предоставление VM для вас и посмотреть, работает ли это. Существует поставщик для Azure, поэтому вы можете установить свой идентификатор подписки на локальном клиенте Docker (Windows или Linux) и следовать инструкциям, чтобы получить новую виртуальную машину, предоставленную Docker, а также настроить локальные переменные среды для связи с экземпляром виртуальной машины Docker удаленно. После запуска установки docker ps или docker run локально будут выполняться команды, как если бы вы запускали их на виртуальной машине. Пример:

#Name at end should be all lower case or it will fail.
docker-machine create --driver azure --azure-subscription-id <omitted> --azure-image canonical:ubuntuserver:16.04.0-LTS:16.04.201608150 --azure-size Standard_A0 azureubuntu
#Partial output, see docker-machine resource group in Azure portal
Running pre-create checks...
(azureubuntu) Completed machine pre-create checks.
Creating machine...
(azureubuntu) Querying existing resource group.  name="docker-machine"
(azureubuntu) Resource group "docker-machine" already exists.
(azureubuntu) Configuring availability set.  name="docker-machine"
(azureubuntu) Configuring network security group.  location="westus" name="azureubuntu-firewall"
(azureubuntu) Querying if virtual network already exists.  name="docker-machine-vnet" location="westus"
(azureubuntu) Configuring subnet.  vnet="docker-machine-vnet" cidr="192.168.0.0/16" name="docker-machine"
(azureubuntu) Creating public IP address.  name="azureubuntu-ip" static=false
(azureubuntu) Creating network interface.  name="azureubuntu-nic"
(azureubuntu) Creating virtual machine.  osImage="canonical:ubuntuserver:16.04.0-LTS:16.04.201608150" name="azureubuntu" location="westus" size="Standard_A0" username="docker-user"
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env azureubuntu

#Set environment using PowerShell (or login to the new VM) and see containers on remote host
docker-machine env azureubuntu | Invoke-Expression
docker info
docker network inspect bridge

#Build a local docker project using the remote VM
docker build MyProject
docker images

#To clean up the Azure resources for a machine (you can create multiple, also check docker-machine resource group in Azure portal)
docker-machine rm azureubuntu

Лучшее, что я могу сказать, работает нормально. Я смог построить debian: wheezy DockerFile, который использует apt-get на Azure VM без каких-либо проблем. Это должно позволить контейнерам работать с использованием мостовой сети по умолчанию, а не вместо сети хоста.