1·問題
一次生產搭建服務的時候,出現客戶端服務器到docker服務斷開不通的情況,在docker服務器上抓包可以抓到客戶端服務器的包,但是docker服務器不做任何響應
於是ip route 查看本地路由,發現客戶端服務器的IP是172.18.X.X,屬於docker的docker_gwbridge子網范圍,於是並沒有走本機的網卡,而是走了docker swarm的網絡

查了資料 發現docker_gwbridge默認就是使用172.18.0.0/16作為子網范圍,所以只能去手動更改docker_gwbridge的網段,避開我們的客戶服務器網段
2·解決
2.1·第一步:刪除docker_gwbridge
刪除之前需要將容器都停掉,不然無法刪除,因為有容器在使用網絡
容器停掉之后,進行刪除,執行命令:docker network rm docker_gwbridge
你會發現依然報錯說有節點在使用,用下面命令查看誰在使用docker_gwbridge
docker network inspect docker_gwbridge

找到之后將其斷開連接:docker network disconnect -f docker_gwbridge gateway_ingress-sbox
然后再次執行刪除命令就可以刪除了: docker network rm docker_gwbridge
2.2·第二步:新建docker_gwbridge
使用如下命令創建新的docker_gwbridge,我這里選的網段是192.168.16.0/24
docker network create --subnet 192.168.16.0/24
--opt com.docker.network.bridge.name=docker_gwbridge
--opt com.docker.network.bridge.enable_icc=false
--opt com.docker.network.bridge.enable_ip_masquerade=true
docker_gwbridge
這里順便講一下如何修改docker0網橋的網段修改方法(一般默認是172.17.0.1/16),只需要修改/etc/docker/daemon.json文件中的bip配置就可以了
vim /etc/docker/daemon.json 修改如下:
{
"bip": "172.17.10.1/24",
"default-address-pools":[
{"base":"192.168.20.0/20","size":24}
]
}
這樣處理完之后,就會發現docker0和docker_gwbridge兩個網橋的網段都已經改成我們想要的了。客戶端服務器也可以正常訪問docker的服務了

