docker コンテナーが他の docker コンテナー内で実行されている環境で (特権として実行するのではなく、docker ソケットをマウントすることによって)、次のようなことを行うためにネットワークを操作する方法はありますか?
- レイテンシーを導入する
- パケットのドロップ %
- 帯域幅の上限
私はコンテナーからの docker-to-docker トラフィックにのみ関心があります。docker-py (環境内) で自分自身を開始しています。docker から localhost へ、docker からインターネットへなど、他のトラフィックを操作することは気にしません。多くの点で、docker-docker ネットワーク トラフィックのみを操作することが理想的です。
次のいずれかの状況で実行されている docker コンテナー内でも、これを行う方法はたくさんあります。
- 特権モード
--cap-add=NET_ADMIN
フラグ ランタイムを渡す
いくつかのユーティリティ (iptables、tc、およびそれらを使用して実装されたあらゆる種類のライブラリ) ではこれが可能です。ただし、「ホスト」コンテナは特権モードで起動されないため、すべての環境で利用できるよりも高い権限が必要です。
システム構成を制御できません。これらのコンテナーは、特権モードで開始するのではなく、別のコンテナー内で実行する必要があります。上記のユーティリティのいずれかを使用できるため、これを変更できれば簡単です。
すべてのコンテナは、単純に によって作成されたネットワークに接続されていdocker network create foobar
ます。
Python3.4 で書かれた私のアプリケーションは、OSX で docker-py を使用しています。
- docker から docker へのネットワーク特性のネットワークを操作して、レイテンシーやパケットドロップなどを導入する方法はありますか?