docker新配置的network不生效的解決方法:
今天發(fā)現(xiàn)docker yml文件新配置的networks不生效,
networks:
net:
external: false
driver_opts: {
com.docker.network.driver.mtu: '1450'
}
ipam:
driver: default
config:
- subnet: 172.30.0.3/24
services:
idGenService:
container_name: idGenService
......
networks:[
net]
.....
后來通過 docker network ls 發(fā)現(xiàn)存在很多舊的服務(wù)network配置列表,
NETWORK ID NAME DRIVER SCOPE
c779da91cbe3 binlog_default bridge local
3848ae5369d8 bridge bridge local
381d383227b5 canal_default bridge local
40531abb1924 dapengmesh_default bridge local
fefbdba91dbc docker_gwbridge bridge local
d6d428430a64 eywa_default bridge local
d42e165b8e95 eywa_net bridge local
d4f8772de814 eywaweb_default bridge local
954355e9ba6b host host local
pfjpi1b1m95y ingress overlay swarm
cd041da886ce kafka_default bridge local
c33d9f01d721 none null local
28ae323aaa32 openapi_default bridge local
d6cfb6c41ba3 openapi_net bridge local
f49c9d373eb0 redis_default bridge local
43eedf3aabec service_network bridge local
dd2c41cc9b51 tscompose_default bridge local
69a6e4617892 zookeeper_default bridge local
ps: 由于前面yml的配置寫法,docker會為每個(gè)服務(wù)添加名為 xxService_networkName的新network配置,這樣就會產(chǎn)生很多配置一樣的network`
為了優(yōu)化配置,能夠重用相同配置的network,先通過 docker network rm networkId 刪除舊的network配置
# 要?jiǎng)h除network, 需要先把服務(wù)容器先停掉
docker stop $(docker ps | grep service | awk '{print $3}')
# 根據(jù)networkId 批量刪除舊服務(wù)的network
docker network rm $(docker network ls | grep service | awk '{print $1}')
手動創(chuàng)建network配置:
# 創(chuàng)建自定義的network, 配置mtu, 網(wǎng)段,driver選擇bridge, 名為service_network
docker network create --driver=bridge \
--subnet=xxx.xx.0.0/16 \
--opt com.docker.network.driver.mtu=1450 \
service_network
修改yml配置:
# 繼承我們之前定義的network
networks:
default:
external:
name: service_network
services:
idGenService:
container_name: idGenService
environment: {
database_encrypt_enable: 'true',
......
啟動新的容器
docker-compose -f idGenService.yml -p idGenService up -d
查看結(jié)果:
發(fā)現(xiàn)mtu, ip的網(wǎng)段符合預(yù)期
[xxx@sandbox1_1 yamlDir]$ docker exec -it idGenService sh
/dapeng-container/bin # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:1E:00:03
inet addr:172.30.0.3 Bcast:172.30.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:8167 errors:0 dropped:0 overruns:0 frame:0
TX packets:8549 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:454347 (443.6 KiB) TX bytes:630990 (616.2 KiB)