如何为docker compose中预先存在的外部网络为我的容器设置静态IP?
我有以下docker-compose.yml(用于创建VPN客户端可访问的VPN+docker网络): 这将创建一个名为wireguard\u default的网络:如何为docker compose中预先存在的外部网络为我的容器设置静态IP?,docker,networking,docker-compose,Docker,Networking,Docker Compose,我有以下docker-compose.yml(用于创建VPN客户端可访问的VPN+docker网络): 这将创建一个名为wireguard\u default的网络: "Name": "wireguard_default", "Id": "ecc19ea95073e2c1ba785fe240c29027f39d1b47977b0f1bdff5c064d6188e81", "C
"Name": "wireguard_default",
"Id": "ecc19ea95073e2c1ba785fe240c29027f39d1b47977b0f1bdff5c064d6188e81",
"Created": "2020-08-15T20:59:36.238911179Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.23.0.0/16",
"Gateway": "172.23.0.1"
}
]
},
因此,我创建了一个Web服务器,其中包含以下内容:
version: '3'
services:
web:
container_name: web
image: nginx
restart: unless-stopped
expose:
- "80"
volumes:
- ./:/usr/share/nginx/html:ro
networks:
default:
networks:
default:
external:
name: wireguard_default
compose会自动设置一个IP,允许我在连接到VPN时从浏览器()访问web
"Gateway": "172.23.0.1",
"IPAddress": "172.23.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:17:00:03",
"DriverOpts": null
到目前为止,一切都很顺利。但是我需要在Web服务器compose中为nginx容器设置一个静态IP(例如:172.23.0.25)
如何在compose中设置一个静态IP,允许它连接到VPN compose创建的外部网络?是
我明白了
我只是编辑VPN组合以在“网络”选项中添加子网:
并将静态IP添加到每个docker要连接的compose networks选项中
version: '3.7'
services:
web:
container_name: web
image: nginx
restart: unless-stopped
expose:
- "80"
volumes:
- ./:/usr/share/nginx/html:ro
networks:
default:
ipv4_address: 172.23.0.25
networks:
default:
external:
name: wireguard_default
对!
我明白了
我只是编辑VPN组合以在“网络”选项中添加子网:
并将静态IP添加到每个docker要连接的compose networks选项中
version: '3.7'
services:
web:
container_name: web
image: nginx
restart: unless-stopped
expose:
- "80"
volumes:
- ./:/usr/share/nginx/html:ro
networks:
default:
ipv4_address: 172.23.0.25
networks:
default:
external:
name: wireguard_default
嗨,有趣的是,
ipaddr
的输出有用吗?你是什么意思?嗯,我不太确定。也许这是我感兴趣的地方,我得到了这样一个错误:“错误:对于web用户,只有当连接到具有用户配置的子网的网络时,才支持指定的IP地址。”我刚刚发布了一个解决方案@IronMan。谢谢你的信息嗨,有趣的是,ipaddr
的输出有用吗?你是什么意思?嗯,我不太确定。也许这是我感兴趣的地方,我得到了这样一个错误:“错误:对于web用户,只有当连接到具有用户配置的子网的网络时,才支持指定的IP地址。”我刚刚发布了一个解决方案@IronMan。谢谢你的信息
version: '3.7'
services:
web:
container_name: web
image: nginx
restart: unless-stopped
expose:
- "80"
volumes:
- ./:/usr/share/nginx/html:ro
networks:
default:
ipv4_address: 172.23.0.25
networks:
default:
external:
name: wireguard_default