2016-04-26 5 views
3

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

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 
+0

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. –