背景: 以前、コンテナ内のホストが提供する Redis サービスにアクセスする必要があるプロジェクトを実行したことがあります (これは一般的なアプリケーション シナリオです)。従来のソリューションは次のとおりです。 ① ホストネットワーク( ②
特別な操作は必要ありません。一般的な ② ブリッジ モードを使用するだけです。 ステップ1: ブリッジをカスタマイズして適用する docker ネットワーク作成 --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_bridge docker run --network=app_bridge --name ...... # 以下は docker-compose.yml ファイルから取得したものです...... ネットワーク: デフォルト: 名前: app_bridge 外部: 真 デフォルトの docker0 ブリッジを使用しないのはなぜですか? この記事の冒頭で述べたように、docker0はデフォルトのブリッジであり、新しく作成されたコンテナはデフォルトでこのブリッジに参加するため、このプログラム専用のブリッジapp_bridgeを作成する必要があります。 ステップ2: コンテナ内のホストに対応するエイリアスを作成する コンテナ内でブリッジ モードでホスト マシンの localhost:6379 サービスにアクセスするには、Docker が提供する --add-host オプションを使用する必要があります (docker-compose.yml 内の対応する構成は extra_host です)。 docker run の --add-host オプションは、コンテナの /etc/hosts ファイルに行を追加し、その名前を使用して他のネットワークにアクセスしやすくなります。 docker run -it --add-host dockerhost:172.16.1.1 ubuntu cat /etc/hosts 172.17.0.22 09d03f76bf2c fe00::0 ip6-ローカルネット ff00::0 ip6-mcastプレフィックス ff02::1 ip6-全ノード ff02::2 ip6-オールルーター 127.0.0.1 ローカルホスト ::1 ローカルホスト ip6-ローカルホスト ip6-ループバック 172.16.1.1 ドッカーホスト 次に、プログラム構成ファイルで dockerhost:6379 を使用して、ホスト Redis サービスにアクセスできます。 ------------------------------------------ docker ネットワーク モデルに少し詳しい友人であれば、上記の操作を理解して完了できるはずです----------------------------------------------------- 状況: 上記の操作を社内の CentOS7 マシンで実行したところ、コンテナがホストマシンに接続できなくなりました(コンテナ同士は正常にアクセスできました)。 問題のテストを簡素化します。新しいコンテナを作成し、コンテナ内の docker0 ゲートウェイに ping を試みます。なんと、会社の 4 台のマシンすべてが docker0 ゲートウェイに ping できませんが、外部ネットワークは正常にアクセスできます。 すると、次のような問題が発生します。デフォルトの docker0 ブリッジを使用すると、コンテナ内から docker0 ゲートウェイに ping できず、ホスト マシンにアクセスできなくなります。 ああ、それはおそらく会社のマシンの設定の問題でしょう。 。 〜 同社の運用・保守担当者に尋ねたところ、次のことがわかりました。 チェーン INPUT (ポリシー DROP) 上記の INPUT チェーンのデフォルト ポリシーは破棄です。コンテナーからホストにアクセスするための INPUT チェーン ルールは、リストされているもののいずれにも一致しないため破棄されるため、コンテナーから docker0 ゲートウェイに ping を実行してもスタックし、結果が返されません。
この戦略の本来の目的は、サーバーのセキュリティです (残念ながら、コンテナはホスト マシンにアクセスする基本的な機能を失ってしまいます!!!)。 運用・保守ソリューション: ① ②使用するブリッジネットワークセグメントをINPUTチェーンに追加する
OK、これですべてです。会社のネットワーク内のデフォルトのブリッジ コンテナー内のブリッジ ゲートウェイに ping できず、ホスト マシンにアクセスできないという問題が発生した場合は、この記事を参照してトラブルシューティングしてください。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: js を使用してファイルが UTF-8 でエンコードされているかどうかを判断する方法
目次テクノロジースタック効果分析するテクノロジースタックサイドバー用Antdtabは要素を使用します...
必要Windows システムでも Linux システムでも、さまざまな理由でパスワードを忘れてしまう...
任意のウェブページを開きます。例: http://www.baidu.com/ ブラウザのタブのヘッ...
最近、機能拡張の要件を受け取りました。ただし、新しい要件で参照されているデータインターフェイスは、X...
HTML コードを書くとき、最初の行は DOCTYPE にする必要がありますが、DOCTYPE は通...
js 配列はどこでも使用されているため、おそらく誰もがよく知っているでしょうが、配列クラス (疑似配...
目次1. 問題の背景2. 仮想マシン ネットワーク カードの接続方法は何ですか? 2.1 NAT 2...
目次序文動的SQL 1. まずモジュールのディレクトリ構造を見てみましょう2. 物理モデリングと論理...
導入MySQL はレプリケーションを通じてストレージ システムの高可用性を実現します。現在、MySQ...
1. テスト環境名前バージョンセント7.6ドッカー18.09.06 2. オンラインインストールここ...
replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...
目次繰り返しレンダリングループを避ける副作用の除去についてReact16.8 の新しい useEff...
この記事では、例を使用して MySQL トリガーの構文とアプリケーションを説明します。ご参考までに、...
目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...
requireJS には、baseURL というプロパティがあります。baseURL を設定すること...