2016-08-15 16 views
11

Tôi có một Ubuntu 16.04 (Xenial) chạy bên trong một máy ảo Azure. Tôi đã làm theo hướng dẫn để cài đặt Docker và tất cả có vẻ tốt và dandy.docker xây dựng không thành công trên một đám mây VM

Một trong những điều tôi cần làm khi kích hoạt docker run là để vượt qua --net=host, cho phép tôi chạy apt-get update và các lệnh phụ thuộc vào internet khác trong vùng chứa.

Sự cố xảy ra khi tôi cố kích hoạt docker build dựa trên hình ảnh Ubuntu hiện có. Nó không thành công:

enter image description here

Vấn đề ở đây là không có cách nào để vượt qua --net=host để xây dựng lệnh. Tôi thấy rằng có vấn đề mở trên Docker GitHub (#20987, #10324) nhưng không có độ phân giải rõ ràng.

Có một existing answer on Stack Overflow bao gồm kịch bản tôi muốn nhưng điều đó không hoạt động trong máy ảo trên đám mây.

Bất kỳ suy nghĩ nào về những gì có thể xảy ra?

UPDATE 1:

Đây là docker version đầu ra:

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 

UPDATE 2:

Đây là kết quả từ docker network ls:

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

apt-get vẫn hoạt động khi sử dụng mạng cầu nối mặc định trừ khi mạng của bạn yêu cầu sử dụng máy chủ proxy hoặc có quy tắc tường lửa ngăn chặn lưu lượng truy cập NAT. Điều gì sẽ xảy ra nếu bạn cố gắng chạy ping hoặc cuộn tròn trong vùng chứa bằng cách sử dụng mạng cầu nối? –

+0

Cả hai 'ping' và 'curl' đều hoạt động trực tiếp trên VM. 'docker build' vẫn không thành công. –

+0

Họ có hoạt động trong vùng chứa không? VM đang sử dụng mạng máy chủ, nhưng các thùng chứa sử dụng mạng cầu nối. –

Trả lời

0

Theo I can't get Docker containers to access the internet? sử dụng sudo systemctl restart docker có thể trợ giúp hoặc bật net.ipv4.ip_forward = 1 hoặc disable the firewall.

Ngoài ra, bạn có thể cần phải update the dns servers trong /etc/resolv.conf trên

+1

Cũng giống như áp phích gốc cho câu hỏi đó, tất cả các mục này đều được giải quyết và tiếc là không có hiệu lực. '--net = host' hoạt động khi tôi thực hiện' docker run', điều đó thật tuyệt vời, sẽ làm việc cho tôi. Đó là 'docker build' thất bại. –

+2

Vấn đề bạn đang thấy cho thấy mạng cầu nối của bạn không thể tiếp cận với thế giới bên ngoài, điều này có thể sẽ gây ra các vấn đề khác trong tương lai. Nếu bạn không có kế hoạch sử dụng mạng cầu nối trong docker, bạn có thể thử xóa nó bằng 'docker network rm', nhưng cách ly mạng là một phần quan trọng trong việc mọi người thường sử dụng các container docker. Do đó lý do tại sao tham số --net = host có thể không có sẵn cho tất cả các lệnh docker. –

+0

Để phục vụ mục đích chẩn đoán, hãy cập nhật bài đăng chính với đầu ra của 'mạng docker ls'. –

1

cách tiếp cận khác VM sẽ cố gắng để cho cung Docker máy VM cho bạn và xem nếu mà làm việc. Có provider for Azure, vì vậy bạn có thể đặt id đăng ký của mình trên máy khách Docker cục bộ (Windows hoặc Linux) và follow the instructions để có VM mới được cấp phép với Docker và nó cũng sẽ thiết lập các biến môi trường cục bộ của bạn để giao tiếp với máy ảo Docker ví dụ từ xa. Sau khi thiết lập chạy docker ps hoặc docker run cục bộ sẽ chạy các lệnh như thể bạn đang chạy chúng trên máy ảo. Ví dụ:

#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 

Tốt nhất tôi có thể biết rằng hoạt động tốt. Tôi đã có thể xây dựng một debian: DockerFile wheezy sử dụng apt-get trên máy ảo Azure mà không có bất kỳ vấn đề. Điều này sẽ cho phép các thùng chứa chạy bằng cách sử dụng mạng cầu nối mặc định thay vì mạng chủ.

+0

Tôi sẽ cố gắng thực hiện điều đó và xem kết quả sẽ ra sao. Tôi đã cấu hình các thiết lập DNS theo cấu hình VM, vì vậy không chắc chắn những gì có thể gây ra lỗi. –

Các vấn đề liên quan