docker-compose創建的網段與內網衝突時的解決方法

問題背景

Docker啓動時會在宿主機上創建一個docker0的虛擬網橋,默認網段爲172.17.0.1/16,恰好公司內網VPN使用的是172.18網段,這就導致在使用docker-compose部署的服務時,自動生成的網橋很容易與內網衝突,導致服務無法訪問。

解決思路

通過修改配置文件,把 docker0 指定其它網段,同時控制 docker-compose 創建容器時的網段範圍。

具體步驟如下:

  1. 修改/etc/docker/daemon.json,添加以下配置(要配置的網段範圍根據自身情況進行修改):
"bip": "192.18.0.1/24",
"default-address-pools": [
    {
        "base": "192.168.0.0/16",
        "size": 24
    }
] 

踩坑:

  • 較低版本的docker,不支持default-address-pools配置項,需要先升級Docker版本,具體方法參考此文
  • 如果只添加bip配置,則只會對docker0網橋生效,並不會對docker-compose新創建的容器生效;
  1. 刪除所有不再使用中的docker網橋,並重啓docker服務:
$ docker network prune
$ systemctl restart docker
  1. 啓動容器,並查看網橋IP
$ docker-compose up -d
$ ifconfig

此時發現容器IP已經在設置的範圍內,衝突問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章