Có một số cuộc thảo luận từ lâu về làm thế nào để thực hiện điều này một cách nhất quán, được hiểu rõ và cầm tay. Không có độ phân giải đầy đủ nhưng tôi sẽ liên kết bạn với các cuộc thảo luận bên dưới.
Trong mọi trường hợp bạn nhiều người muốn thử sử dụng tùy chọn --add-host để Docker chạy để thêm địa chỉ IP của máy chủ vào/etc/file host của container. Từ đó nó tầm thường để kết nối với máy chủ trên bất kỳ cổng yêu cầu:
Thêm các mục vào một host chứa tập tin
Bạn có thể thêm máy chủ khác vào tập tin/etc/hosts của thùng chứa bằng cách sử dụng một hoặc nhiều cờ --thêm máy chủ. Ví dụ này cho biết thêm một địa chỉ tĩnh cho một máy chủ tên Docker:
$ docker run --add-host=docker:10.180.0.1 --rm -it debian
$$ ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
Lưu ý: Đôi khi bạn cần phải kết nối với máy chủ Docker, có nghĩa là nhận được địa chỉ IP của máy chủ. Bạn có thể dùng vỏ sau lệnh để đơn giản hóa quá trình này:
$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }'"
$ docker run --add-host=docker:$(hostip) --rm -it debian
Tài liệu:
https://docs.docker.com/engine/reference/commandline/run/
thảo luận về việc truy cập máy chủ từ container:
https://github.com/docker/docker/issues/1143
https://github.com/docker/docker/issues/10023
Nguồn
2015-01-21 02:19:55
Nếu máy chủ MySQL đang lắng nghe trên một cổng, không thể container chỉ cần kết nối đến máy chủ trên cổng đó giống như bất kỳ kết nối internet nào khác? – jwodder