从 Docker 容器内部编辑主机的网络

从 Docker 容器内部编辑主机的网络

我正在尝试运行一个可以更改网络配置设置的应用程序。例如更改设备的 IP 等。通常,在 Ubuntu 中,netplan有一个可以实现此目的的程序。但我希望我的程序在 Docker 容器内运行。据我所知,我需要在运行容器时指定和--network host--privileged但在那之后,我可以在 Docker 中使用哪个程序来操作主机的网络设置?

答案1

正如 vidarlo 已经提到的,这是可能的,但可能不是最好的主意。我遇到了类似的问题,在这里我需要更改一些网络配置设置,但必须使用 docker 容器。我通过nsenter以下方式实现了这一点docker-compose.yaml

services:
  ubuntu:
    container_name: ubuntu
    image: ubuntu
    command: ["sleep","infinity"]
    
    # The important stuff
    pid: "host"
    privileged: true
    volumes:
      - /etc/netplan:/etc/netplan

执行到容器中,编辑你的 netplan 配置并将配置应用到主机:

nsenter --target 1 --mount --net -- netplan apply

免责声明:由于容器具有主机的根访问权限,因此使用此方法具有巨大的安全隐患。

相关内容