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
相关文章
相关标签/搜索