突然外部ネットワークから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はシンプルなコメント機能を実装します

推薦する

Dockerコンテナに入る方法と出る方法

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

Dockerでコンテナを作成するときのディレクトリ権限

昨日プロジェクトを書いていた時に、MySQL の派生版である Percona を使う必要があったので...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...

Vue が Ref を使用してレベル間でコンポーネントを取得する手順

VueはRefを使用してレベル間でコンポーネントインスタンスを取得します例の紹介開発プロセスでは、レ...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

WeChatアプレットが検索ボックス機能を実装

この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...

HTMLでキーワードを強調表示するのに最適なソリューション

最近、プロジェクトに取り組んでいるときに、Web ページ上のキーワードを強調表示する機能に遭遇しまし...

CSS3 フリップカード番号サンプルコード

今日会社から課題をもらったのですが、効果図は以下のとおりです。 どのような効果を実現したいかは特に決...

JavaScript で Priority Queue を実装する

目次1. 優先キューの紹介2. 優先キューのカプセル化1. 優先キューの紹介通常のキューに要素が挿入...

Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法

1. SpringBoootプロジェクトを作成し、jarパッケージにパッケージ化する2. Linux...

DockerコンテナでPythonを実行するディープラーニング環境を構築する方法

タスク マネージャーで仮想化を確認し、有効になっている場合は仮想化を、無効になっている場合はコンピュ...

Docker Desktop で rocketmq をインストールするための非常に詳細なチュートリアル

Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...

Docker CPU 制限の実装

1. --cpu=<値> 1) コンテナが使用できるCPUリソースの量を指定しますが、コ...

Rabbitmq heartbea ハートビート検出メカニズムの原理の分析

序文RabbitMQ を使用する場合、一定期間クライアントと RabbitMQ サーバーの間でトラフ...

入力ボックスの値を取得する方法のReactの例

入力ボックスの値を取得する複数の方法最初の方法は、制御されていないコンポーネントの取得です2番目の方...