当使用Pipework与Docker容器时,为什么我得到RTNETLINK操作不允许?

时间:2014-12-30 15:45:26

标签: docker

我正在使用Vagrant / VirtualBox运行CoreOS stable 494.5.0并运行vanilla ruby​​:2.1.5 Docker镜像。我正在尝试使用Pipework将Docker容器连接到本地物理接口(而不是在运行容器时使用--net=host),这样我就可以嗅探流量。 Pipework在容器中创建eth1@if2并正确设置其IP地址,但链接最终处于UNKNOWN状态,当我尝试使用ip link启动链接时,我得到{{1 }}

如果它有所作为,我必须使用RTNETLINK answers: Operation not permitted代替ip link set dev eth1 up,否则我会ip link set dev eth1@if2 up

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:39)

默认情况下,Docker容器没有完全权限。尝试将其添加到docker run命令:

--cap-add=NET_ADMIN

List of capabilities

答案 1 :(得分:0)

在您的docker-compose.yml中,您可以添加以下内容:

container_or_service_name:
  cap_add:
    - NET_ADMIN

应归功于贷方:此答案基于@petrkotek在接受的答案下的评论,但我最终自己使用了它,因此我想使其更显眼。