背景: 以前、コンテナ内のホストが提供する 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 でエンコードされているかどうかを判断する方法
<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...
ブラウザの問題かもしれないと思うかもしれませんが、スタイル定義の順序が間違っている可能性が高いです。...
序文:最も一般的に使用される MySQL 論理バックアップ ツールは mysqldump です。通常...
この記事では、シャトルボックス機能を実現するためのjQueryの具体的なコードを参考までに紹介します...
前提条件Windows Server でコンテナーを実行するには、Windows Server (半...
概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...
プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...
influxDB の紹介influxDB は分散型時系列データベースです。 cAdvisor はリ...
序文Tomcat 内のすべてのリクエストは Servlet によって処理され、静的リソースも例外では...
この記事では、MySQL インストールの詳細なチュートリアルを記録し、全員と共有します。 1. バー...
別のライブラリから別のライブラリにデータをインポートする必要がある場合があり、このデータは CSV ...
スクロール バーのスタイルを設定するための CSS 実装コードは次のとおりです。 •::-webki...
使用例コードをコピーコードは次のとおりです。 <!DOCTYPE html> <!...
目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...
yumコマンドYum (フルネームは Yellow dog Updater, Modified) ...