无法在泊坞广告容器

时间:2016-01-06 09:21:23

标签: permissions docker containers network-traffic netlink

我使用tc来限制docker容器中的发送速率。 在Dockerfile中添加了以下脚本:

tc qdisc add dev eth0 root handle 1: htb default 2
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 2mbit ceil 2mbit prio 2
tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.124 flowid 1:2

通过以下命令在root帐户下运行docker:

docker run --cap-add=NET_ADMIN --name lqt_build -d -p 8443:8443 -p 443:443 -p 3478:3478 lqt_build 

但它仍然显示此错误:

Step 25 : RUN cd /usr/share/ta/ && sudo ./tt rate
---> Running in fb6a4477ad6c
RTNETLINK answers: Operation not permitted
RTNETLINK answers: Operation not permitted
RTNETLINK answers: Operation not permitted
RTNETLINK answers: Operation not permitted
We have an error talking to the kernel
[8] System error: read parent: connection reset by peer

似乎内核阻止容器中的应用程序更改某些内核设置,即使它们以root身份运行。我想容器没有自己的内核,但是在与(可能)许多其他容器共享的内核上运行,因此不允许它触及底层内核的设置。有没有人有这个问题的经验?

1 个答案:

答案 0 :(得分:1)

根本原因是在Dokcerfile中使用tc。 NET_ADMIN功能在那时不起作用。在docker容器运行后,Tc命令工作正常。谢谢user2915097。