docker_gwbridge介紹
docker_gwbridge接口為使用多主機群覆蓋網絡的所有容器和任務提供默認網關功能。它是在每個Docker主機上創建的,當它們加入集群時。如果接口docker_gwbridge的IP地址與網絡上的地址沖突,可以逐個主機更改該地址。
docker_gwbridge是一個本地橋接網絡,在以下兩種情況會自動創建:
(1)初始化或者加入一個 swarm 集群時,用來在不同 hosts 主機的不同節點間進行通信;
(2)再容器中的所有網絡都不能訪問外部時,Docker 會將docker_gwbridge網絡加入到容器中,用來訪問外部網絡或者其他的集群節點。
swarm集群修改 docker_gwbridge 網絡
主要步驟如下:
(1)獲取相關節點(管理員或工作者)角色的群連接令牌。
# docker swarm join-token worker 或 # docker swarm join-token manager To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-0lga4o5b38j8vg4obogub1x7r0pctcsv38wynx0o3m0jaott6-c0hkjya6eavx9ye7xgwlj3bqi 192.168.246.186:2377
(2)保存容器的列表。這將用於在網絡重新配置之前和之后停止和啟動這些容器。
gwbridge_containers=$(docker network inspect docker_gwbridge --format '{{range $k, $v := .Containers}}{{$k}}{{printf "\n"}}{{end}}' |xargs -I{} docker container ls -f is-task=false -f id={} --format {{.Names}})<br/>echo ${gwbridge_containers}
(3)停止使用docker_gwbridge的容器:
docker stop ${gwbridge_containers}
(4)Leave the swarm
docker swarm leave
(5)刪除docker_gwbridge network:
docker network rm docker_gwbridge
(6)重新創建docker_gwbridge網絡,設置所需的值:
docker network create \ --subnet 172.21.0.0/20 \ --gateway 172.21.0.1 \ -o com.docker.network.bridge.enable_icc=false \ -o com.docker.network.bridge.name=docker_gwbridge \ docker_gwbridge
(7)使用步驟1中的群集連接令牌重新加入群集:
docker swarm join --token SWMTKN-1-0lga4o5b38j8vg4obogubs1x7r0pctcsv38wynx0o3m0jaott6-c0hkjya6eavx9ye7xgwlj3bqi 192.168.246.176:2377
(8)重啟任何疊加的經典容器:
docker start ${gwbridge_containers}