私の実稼働環境では、同じホスト上のデータベースなどのバックエンド サービスに接続する必要がある Docker のアプリがいくつかあります。これらの接続を受け入れるには、iptables で例外を作成する必要があることがわかりました。
ただし、docker ネットワークの IP 範囲は再起動ごとに異なります。最初は 172.18.0.0/24 でしたが、その後 172.17.0.0/24 と 172.20.0.0/24 になり、現在の IP は 192.168.172.2 と 192.168.192.3 です。
コンテナ内から Docker トラフィックを確実かつ安全に受け入れて、mariadb を実行するにはどうすればよいでしょうか?
編集:答えはIPAM 構成の指定インターフェースにアタッチする方がエレガントに思える
答え1
2 つのオプション:
初め
docker0
特定の IP 範囲ではなく、インターフェースからのアクセスを許可します。
iptable -A INPUT -i docker0 -dport 3306
2番
データベースをコンテナに移動します。
ネットワークという名前のDockerを作成する
すべてのコンテナが名前付きネットワークに接続されていることを確認します。その後、他のコンテナ (同じネットワーク上) から名前でデータベース コンテナにアクセスできるようになります。
外部からデータベースにアクセスする必要がある場合は、ポートをマップし、データベースを保護するために必要な iptables ルールを設定できます。