突然外部ネットワークからDockerにアクセスできなくなる問題の解決方法

突然外部ネットワークからDockerにアクセスできなくなる問題の解決方法

マスターのメソッドによると、原因は sysctl net.ipv4.ip_forward であることがわかりました。Tencent Cloud は脆弱性を修正するように促しました。スクリプトを実行した後、IP 転送はオフになりました。

少し調べた後、docker info を通じて問題を見つけることができました。

そして、dockerが警告を発しているのがわかります

解決:

sudo vim /etc/sysctl.conf 修正して保存し、systemctl restart network を実行します。

または

sysctl -w net.ipv4.ip_forward=1

しかし、この処理はサーバーの再起動後に無効になる可能性がありますか?

あと2つの警告があるので、一緒に対処しましょう。

警告: bridge-nf-call-iptables が無効になっています
警告: bridge-nf-call-ip6tables が無効になっています

補足:Dockerネットワークの問題、Dockerコンテナ内でホストマシンの外部IPにpingできないが、他のマシンの外部IPにはpingできる

問題の説明

マシンAとマシンBはそれぞれ独自の内部IPと外部IPを持ちます。例:A-IP-internal、A-IP-external

B-IP-inside、B-IP-outside、マシン A のドメイン名は www.xxx.com です。

マシンAにJenkins Dockerコンテナをインストールし、起動してコンテナに入ります。

#docker exec -it ジェンキンス /bin/sh
次に、コンテナ内のホスト A の内部 IP に ping を実行すると、ping が成功します。#ping A-IP-internal (172.16...) //ping が成功することが返されます。#ping A-IP-external (202.106...) //ping が失敗しました。#ping www.xxx.com //マシン A の外部 IP に正しく解決できますが、ping は成功しません。#ping baidu.com //ping は成功します。

加えて:

1. Docker コンテナ外部のホストマシン A から、A-IP-outside (202.106...) への ping が成功します。

2. マシン B に Jenkins コンテナをインストールし、コンテナ内から A-IP-external (202.106...) に ping を実行します。

2. マシン B に Jenkins コンテナをインストールします。コンテナ内から B-IP-external (202.106…) に ping を実行しても失敗します。

さまざまなネットワークの問題を調べたり、コンテナやイメージを削除したり、docker を再インストールしたりしても、すべて機能しません。

簡単に言うと、Docker コンテナ内のホスト マシン自体のパブリック IP に ping するにはどうすればよいでしょうか?

マシン A のコンテナー内の www.xxx.com に ping を実行する必要があります。これは、マシン A のイントラネット アドレスに解決されます。

マシン A のイントラネット アドレスはコンテナ内から ping できるためです。

新しく変更された docker-compose ファイル

追加ホスト:
- 「www.xxx.com:172.16.xxx.A」

dockerコンテナを再構築した後、dockerコンテナに入ります

#ping A-IP-outside (202.106...) // ping は成功しました。要件を満たしています。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • DockerコンテナはホストのMySQL操作にアクセスする
  • Docker コンテナのカスタム ホストのネットワーク アクセス操作
  • Docker ポート マッピングと外部アクセス不可の問題
  • Dockerでリモートアクセスを有効にする方法
  • DockerコンテナがJupyterにアクセスできない問題の解決策
  • Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する
  • Docker イメージのローカル Elasticsearch ポート操作へのアクセス

<<:  MySQL パフォーマンス最適化インデックス プッシュダウン

>>:  Vueはシンプルなコメント機能を実装します

推薦する

レスポンシブ Web をデザインするにはどうすればいいですか?レスポンシブウェブデザインのメリットとデメリット

最近レスポンシブ デザインについて学んでいて、これについていくつか整理してみました。写真の一部はイン...

MySQL で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴

序文:最も一般的に使用される MySQL 論理バックアップ ツールは mysqldump です。通常...

Linux 上でプライベート Git サーバーを構築するための詳細なチュートリアル

1. サーバーのセットアップリモート リポジトリは実際にはローカル リポジトリと何ら変わりなく、純粋...

nginxでgzip圧縮を有効にする手順を完了する

目次序文1. gzip圧縮を設定する2. 詳細設定3. nginxサービスを再起動する要約する序文ウ...

Vueコンポーネントの詳細な説明

<本文> <div id="ルート"> <h2&...

MySQLにおけるトランザクションの永続性実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

vue-cli で stimulsoft.reports.js を使用する詳細なチュートリアル

vue-cli は stimulsoft.reports.js を使用します (ナニーレベルのチュー...

Vueはechartsを使用して組織図を描画します

昨日、円形のプログレスバー (Vue 円形プログレスバーを参照してください) についてブログを書きま...

VirtualBox で作成された Debian 仮想マシンは Windows ホストとファイルを共有します

用語: 1. VM: 仮想マシンステップ: 1. Windows 10 に VirtualBox 6...

Navicat For MySQL の使い方に関する簡単なチュートリアル

推薦する: Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル...

Linux teeコマンドの使い方の詳しい説明

teeコマンドは主にstandout(標準出力ストリーム、通常はコマンド実行ウィンドウ)に出力し、同...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...

MySQLカバーインデックスの使用例

カバーインデックスとは何ですか?クエリで使用されるすべてのフィールドを含むインデックスを作成すること...

MySQL での utf8mb4 照合の例

MySQL における一般的な utf8mb4 ソート規則は次のとおりです。 utf8mb4_0900...