Permissions Can';不要在docker容器中使用tc

Permissions Can';不要在docker容器中使用tc,permissions,docker,containers,network-traffic,netlink,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 e

我使用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
通过以下命令在根帐户下运行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用户身份运行。我猜容器没有自己的内核,但是运行在与(可能)许多其他容器共享的内核上,因此不能允许它接触底层内核的设置。是否有人对此问题有经验?

根本原因是在Dokcerfile中使用了tc。NET_管理功能在当时不生效。Tc命令在docker容器运行后工作正常。感谢用户2915097。

您似乎只是从主机上修改了容器的网卡,请参阅“谢谢”。我找到了根本原因。