配置正在运行docker容器的主机的网络接口

时间:2016-10-16 17:59:06

标签: networking docker

我有一个Web服务(网页),允许用户配置主机的网络接口(它基本上是用于配置主机NIC的网页)。现在我们正在考虑在docker容器中移动这样的服务。这意味着在容器内运行的sw应该能够修改docker在其上运行的主机的网络接口的配置。

我尝试使用 - network = host 启动一个docker,我使用 ip 命令来修改接口配置,但我能做什么(显然是?!?)获取权限被拒绝

这可能有意义,因为从安全角度来看它可能是一个问题,更不用说你正在改变其他可能运行的容器所看到的网络配置,但我想知道是否有任何docker配置/设置可能允许我完全在docker容器中执行任务(由我自己承担风险)。

我的意思是,我至少可以想到一个工作区,在主机上运行服务(在docker容器之外),让docker和服务通过一些IPC机制相互通信。 这是一个解决方案,但不是最优的,因为这会制动码头工作范例,让所有东西都在容器内运行。此外,这意味着当我们使用新版本的软件升级容器时,我们可能还需要在容器外部升级模块。

1 个答案:

答案 0 :(得分:2)

尝试以特权模式运行容器以删除容器限制:

docker run --net=host --privileged ...

如果这样可以解决您的问题,您可以将--privileged替换为--cap-add以及各种内核功能。想到的第一个特权是NET_ADMIN,您可以尝试使用它:

docker run --net=host --cap-add NET_ADMIN ...

有关配置权限的详细信息,请参阅this section of the docker run docs