J'essaie de limiter la bande passante aux conteneurs Docker. Pour limiter la bande passante descendante, je peux d'abord trouver l'interface veth du conteneur et utiliser tc: tc qdisc add dev vethpair1 root tbf rate 1mbit latency 50ms burst 10000
. Si je veux limiter la bande passante de liaison montante, je dois spécifier --cap-add=NET_ADMIN
lorsque je lève le conteneur et que j'utilise la même commande tc sur eth0
à l'intérieur du conteneur. Existe-t-il un moyen non intrusif de le faire, de sorte que je puisse administrer n'importe quel conteneur sans lui donner le privilège?Utilisation de tc pour réduire la bande passante du réseau sortant du conteneur Docker
3
A
Répondre
1
Vous pouvez indiquer à Docker d'utiliser LXC sous les hottes: utilisez l'option -e lxc
.
Create your containers with a custom LXC directive to put them into a **traffic class** :
`docker run --lxc-conf="lxc.cgroup.net_cls.classid = 0x00100001" your/image /bin/stuff`
Vérifiez la official documentation sur la façon d'appliquer des limites de bande passante à cette classe.
Note: les --storage-driver=devicemapper
et -e lxc
options sont pour le démon Docker , pas pour le client Docker que vous utilisez lors de l'exécution docker run .......
.
vous pouvez également le faire à travers ceci:
mkdir /var/run/netns
ln -sf /proc/`docker inspect -f '{{ .State.Pid }}' YOUR_CONTAINER`/ns/net /var/run/netns/SOME_NAME
ip netns exec SOME_NAME iptables -L -nv
Merci. J'ai essayé net_cls mais cela n'a pas fonctionné. Est-ce parce que je n'ai pas utilisé l'abstraction de LXC? Je vais essayer LXC plus tard. –