最近在嘗試docker1.9後自帶network功能,在該功能中容器內部存取外網使用的是自動建立的docker_gwbridge橋,那麼docker 宿主機如何存取overlay網路內部(例如其他宿主機上同時加入該overlay網路的容器)?
1.試著把到overlay路由指到docker_gwbridge,但是無法訪問其他宿主機上加入到這個overlay的容器,因為沒有回程路由,給每台啟動的容器加回程路由也是很不現實的。
2.宿主機上,容器內都開反向代理。
3.容器內開啟iptables,做nat。
4.傳統模式給容器做nat映射宿主機埠。
5.如果能指定overlay中的某個容器為整個overlay的預設路由的話,一切都好辦了,奈何目前到1.10.2,gateway都會被自動指到某個網橋上,只能每台容器去修改,但是給每台容器這麼高的權限,個人是不願意的。
以上方案都有各種缺陷,與不便之處,不知道諸位有沒有更簡單高效的解決方案呢?
使用docker machine docker swarm 可以解決這個問題。具體參考官方的文件。
https://docs.docker.com/engine/userguide/networking/get-started-overlay/