Docker Swarm Mode中容器多網路多IP registrator註冊服務IP的問題
阿新 • • 發佈:2019-02-18
問題描述
遇到了點新問題。
在執行時指定自己網路的時候,容器裡面多個網路,多個IP,但是註冊的不是固定註冊某個網絡卡的IP作為服務IP。
這就導致有時候註冊的IP不是屬於overlay網路的IP。服務訪問就會出現問題。
如果是用rencher部署的話,它有一個label記錄了容器IP。可以用registrator
的-useIpFromLabel
讀取它label。而docker swarm並沒有記錄相關IP到label 也就不能用這個引數。
所以我fork了registrator的最新原始碼,做了點修改。讓它支援可以傳入在執行docker時,attach的network名字,根據這個網路名字在它container資訊中取得它IP。
如我前面執行docker的服務的時候指定--network=micro-service
那麼我執行registrator
的時候,用我修改過的映象doubleshit/registrator:v7
指定-useIpFromNetworkName=micro-service
引數即可。
如:
docker run -d \
--restart=always \
--name=registrator \
--net=host \
--volume=/var/run/docker.sock:/tmp/docker.sock \
doubleshit/registrator:v7 \
-cleanup \
-internal \
-ip <NODE_IP> \
-useIpFromNetworkName=micro-service \
consul://<NODE_IP>:8500
commit的時候資訊network寫成了netword無視就好 哈哈
貼這個部落格純粹是因為比較容易讓遇到問題的同志在搜尋的時候比較容易找到。但是有時候後期文章做了改動 我不一定會更新這裡。