docker新配置的network不生效的解決方法

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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文提供可用于與Docker網(wǎng)絡(luò)及與網(wǎng)絡(luò)中容器進(jìn)行交互的network子命令的示例。這些命令可通過Docker E...
    周立_itmuch閱讀 10,648評論 1 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,699評論 19 139
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,771評論 0 120
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問不到的。此外,除了...
    R_X閱讀 1,972評論 0 7
  • 熙熙跟爸爸玩,爸爸說你怎么不怕我,怕你媽媽???熙熙說:“因?yàn)閶寢屘{(diào)皮了,老打我” 哎,我咋就成了這樣的一個(gè)媽媽呢?
    熙熙0920閱讀 249評論 0 1

友情鏈接更多精彩內(nèi)容