Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为docker compose中预先存在的外部网络为我的容器设置静态IP?_Docker_Networking_Docker Compose - Fatal编程技术网

如何为docker compose中预先存在的外部网络为我的容器设置静态IP?

如何为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

我有以下docker-compose.yml(用于创建VPN客户端可访问的VPN+docker网络):

这将创建一个名为wireguard\u default的网络:

"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