docker-compose 手工指定容器IP

首先明確兩點:node

1只有自定義網絡,才能手工指定每一個容器的ip。默認的bridge是不行的!docker

2 手工設定了網段好比172.19.0.0   不影響docker在host裝的網卡docker0 的172.17.0.1網絡

  容器內的172.19.0.XX  仍是能夠經過172.17.0.1訪問到主機。app

 

docker-compose.yml  參考官網 https://docs.docker.com/compose/compose-file/#network-configuration-referenceui

version: '3.7' services: x1: image: XXX restart: always tty: true networks: mynet1: ipv4_address: 172.19.0.2 networks: mynet1: ipam: config: - subnet: 172.19.0.0/16

幾點說明:this

1 2之前,能夠在ipam裏指定gateway  3之後不準了;spa

2 靜態指定ip,則每一個容器都要靜態指定,添加networks 部分.net

3 運行docker-compose up 首先會建立network 注意以前若是已經運行過多個不一樣工程的docker-compose 可能已經自動建立了不少networkrest

  這樣若是IP網段已經分配過了,就會失敗:code

ERROR: Pool overlaps with other one on this address space

相似地,此外若是已經建立了network mynet1的網段 爲 172.28.0.0,可是想改爲172.19.0.1,也會說失敗

  這樣都須要清理一下無效的network

  清除各類不用的docker相關東西 參考  https://blog.csdn.net/wennuanddianbo/article/details/78453325

docker network prune

 4 3之後沒法指定IP地址類型。只能是ipV6,在node裏

const requestIp = require('request-ip'); ... app.use(requestIp.mw()) ... req.clientIp

 

獲得的都是ipv6地址,都在ipv4地址前都補上了::fff:
形如
::ffff:172.19.0.10
相關文章
相關標籤/搜索