Docker コンテナがホスト外部の単一の IP アドレスにのみアクセスできるように制限する答えがあります。ホストで次の iptables ルールを使用します。
iptables -I FORWARD -i docker0 ! -d 8.8.8.8 -j DROP
つまり、どの Docker コンテナ内からも、IP アドレス 8.8.8.8 にのみアクセスできます。
これはかなり大胆です。基本的に、宛先が 8.8.8.8 でない場合はパケットをドロップします。
コンテナを特定の数の IP アドレスに制限できるルールを設定する最適な方法は何ですか?
答え1
Docker コンテナ内にある Web サイトの開発コピーが、Paypal、さまざまな API などのライブ リソースにアクセスできないようにする必要がありました。Web サイトのコードはレガシーであり、多くの項目や URL がハードコードされていました。
これを実現した方法は、ビルド スクリプトに次のような内容を含めることでした。
echo
echo "Setting up firewall rules for all docker containers..."
sudo ipset create dockerdests hash:ip -exist
sudo ipset add dockerdests x.x.x.x -exist
sudo ipset add dockerdests y.y.y.y -exist
sudo ipset add dockerdests 8.8.8.8 -exist
sudo ipset add dockerdests 8.8.4.4 -exist
sudo iptables -I FORWARD 1 -i docker0 -m set --match-set dockerdests dst -j ACCEPT
sudo iptables -I FORWARD 2 -i docker0 -j DROP
ここで、xxxx と yyyy は開発リソースです。