2016-02-05 24 views
5

Tôi muốn làm cho hai thùng chứa của tôi có sẵn bên ngoài máy chủ VM trên các địa chỉ IP riêng biệt, cụ thể của chúng (192.168.0.222, 192.168.0.227), không có ánh xạ cổng. Điều đó có nghĩa là tôi muốn truy cập bất kỳ cổng nào trực tiếp trên các vùng chứa bằng cách sử dụng IP của nó. Tôi đã có máy chạy trong mạng bên ngoài máy chủ VM trong phạm vi 192.168.0.1–192.168.0.221.Làm thế nào để gán IP cụ thể cho vùng chứa và làm cho có thể truy cập được bên ngoài máy chủ lưu trữ VM?

Hiện tại bạn có thể sử dụng Docker 1.10.0 không và nếu có thì làm cách nào?

Tôi đang sử dụng OS X 10.11 với docker version 1.10.0, build 590d5108docker-machine version 0.6.0, build e27fb87, bằng trình điều khiển boot2docker/VirtualBox.


Tôi đã cố gắng để con số này ra đối với một số thời gian, mà không may mắn, và tôi đã đọc các câu hỏi và câu trả lời sau đây:

Trả lời

3

Theo Jessie Frazelle, shoul này d bây giờ là có thể.
Xem "IPs for all the Things"

Điều này thật tuyệt vời, tôi khó có thể chịu được.

Trong Docker 1.10, nhóm libnetwork tuyệt vời đã thêm khả năng xác định IP cụ thể cho vùng chứa. Nếu bạn muốn xem yêu cầu kéo tại đây: docker/docker#19001.

# create a new bridge network with your subnet and gateway for your ip block 
$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic 

# run a nginx container with a specific ip in that block 
$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx 

# curl the ip from any other place (assuming this is a public ip block duh) 
$ curl 203.0.113.2 

# BOOM golden 

Điều đó không minh họa cho new docker run --ip option rằng bây giờ bạn nhìn thấy trong docker network connect.

Nếu được chỉ định, địa chỉ IP của vùng chứa sẽ được áp dụng lại khi bắt đầu vùng chứa đã dừng. Nếu địa chỉ IP không còn nữa, vùng chứa sẽ không khởi động được.

Một cách để đảm bảo rằng địa chỉ IP có sẵn là chỉ định --ip-range khi tạo mạng và chọn (các) địa chỉ IP tĩnh từ bên ngoài phạm vi đó. Điều này đảm bảo rằng địa chỉ IP không được cấp cho vùng chứa khác trong khi vùng chứa này không nằm trong mạng.

$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network 

$ docker network connect --ip 172.20.128.2 multi-host-network container2 

Các "làm cho truy cập" một phần sẽ bao gồm, như thường lệ, port forwarding.

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