首页 > 解决方案 > 如何更改现有 docker 网络的配置

问题描述

我有一个名为“VPN”的现有(MacVLAN)docker 网络,我通常将我都想在 VPN 上运行的 docker 容器附加到该网络。有两个运行 openvpn 的单个“主机”docker 容器,每个都有自己的 IP,我可以随意将其他容器附加到这些容器上。

我最近搬家了,我的新路由器在 address 192.168.0.1。但是,老房子的路由器的网关位于192.168.2.254,现有的 docker 网络为此配置了子网掩码、IP 范围和网关。

如果我运行docker network inspect VPN它会给出:

[
    {
        "Name": "VPN",
        "Id": [anidea],
        "Created": [sometimenottolongago],
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.2.0/24",
                    "IPRange": "192.168.2.128/28",
                    "Gateway": "192.168.2.254"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "parent": "enp5s0"
        },
        "Labels": {}
    }
]

网络上有两台机器,我目前无法访问它们。两台机器都是一个容器,其他容器连接到该容器。我努力了:

我认为最好的办法是更新 docker 网络“VPN”以与新的网关/路由器/家庭网络配合使用;我想更改IPAM["Config"]参数以更新新网关和子网。但是,我在网上找不到如何执行此操作(唯一出现的是如何更改默认docker 网络的默认设置)。

长话短说: 如何更改现有docker 网络的配置/参数?

最后,如果这是一种不好的做事方式(例如,如果我可以按现状访问网络上的容器),我也愿意接受想法。

主机正在运行 ubuntu-server 20.04.1LTS。

提前致谢。

标签: dockernetworking

解决方案


最简单的方法是删除 VPN 网络并使用新参数但名称相同重新创建它。如果您用于docker-compose up重新创建容器,请将该networks部分包含在您重新创建的第一个容器中。

首先,运行这个来删除现有的网络:

docker network rm VPN

然后将 macvlan 网络定义添加到yml您的第一个重新创建的容器中。这是networks我使用的部分,在某种程度上适应了您的情况:

networks:
  VPN:
    driver: macvlan
    enable_ipv6: true                   # if needed
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.0.0/24
          gateway: 192.168.0.1
          ip_range: 192.168.0.8/30      # reserve some IP addresses for other machines
                                        # in that subnet - adjust as needed
        - subnet: xx:xx:xx:xx::/63      # put your IPv6 subnet here if needed
          gateway: xx:xx:xx:xx:xx::xx   # IPv6 (external) of your router
          

或者,您可以更改您的新路由器配置以匹配旧路由器配置,并保持您的 macvlan VPN 保持原样。


推荐阅读