Docker を使用すると、さまざまな問題が発生します。その 1 つは、外部ネットワークからの ping が Docker 内から到達できないことです。この問題は非常に一般的ですが、外部リソースへの接続が妨げられる可能性があるため、深刻でもあります。
Docker が外部ネットワークに ping できない理由は数多くありますが、一般的な解決策をいくつか次に示します。
まず、Docker のネットワーク設定が正しいかどうかを確認する必要があります。 Docker コンテナを実行する場合、多くの場合、ネットワーク モードを指定する必要があります。ネットワークモードが正しく指定されていない場合、Docker が外部ネットワークに接続できない可能性があります。
次のコマンドを使用して、Docker のネットワーク設定を表示できます:
docker network inspect
このコマンドを使用すると、すべての Docker のネットワーク設定を表示できます。ネットワーク設定が間違っている場合は、次のコマンドを使用してネットワークをリセットする必要があります:
docker network create \ --driver bridge \ --subnet 192.168.0.0/16 \ mynetwork
上記のコマンドは、mynetwork という名前の Docker ネットワークを作成し、サブネットを 192.168.0.0/16 に設定します。
ファイアウォール設定により、Docker が外部ネットワークに ping できない可能性があります。ファイアウォール設定をチェックして、Docker アクセスが許可されていることを確認する必要があります。
ファイアウォール設定に一般的に使用されるツールは iptables です。次のコマンドを使用して iptables 設定を確認できます:
sudo iptables -L
Docker のネットワーク アクセスをブロックするルールがある場合は、次のルールを追加する必要があります:
sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT sudo iptables -A OUTPUT -p tcp --dport 2375 -j ACCEPT
上記のコマンドは、 Docker のネットワーク アクセス許可を許可するルール。
DNS 設定により、Docker が外部ネットワークに接続できない可能性があります。 Docker の DNS 設定が正しいことを確認する必要があります。
Docker の DNS 設定を表示するには、次のコマンドを使用します。
docker exec -it container_id cat /etc/resolv.conf
このうち、container_id は、確認する Docker コンテナの ID です。
DNS 設定が間違っている場合は、正しい DNS サーバー アドレスを Docker の /etc/docker/daemon.json ファイルに追加できます:
{ "dns": ["1.1.1.1", "8.8.8.8"] }
上記の設定は、1.1.1.1 および 8.8 を意味します。 DNS サーバー アドレスとして .8.8 を指定します。
最後に、Docker エンジンのバージョンがネットワーク接続をサポートしているかどうかを確認する必要があります。
Docker Engine の一部の古いバージョンでは、ネットワーク接続の問題が発生する可能性があります。この問題を回避するには、Docker Engine の最新バージョンにアップグレードする必要があります。
次のコマンドを使用して Docker エンジンのバージョンを確認します:
docker version
バージョンが最新でない場合は、次のコマンドを使用して Docker エンジンをアップグレードする必要があります:
sudo apt-get update sudo apt-get install docker-ce
上記のコマンドは、Docker エンジンを最新バージョンに更新し、ネットワーク接続の問題を解決します。
要約すると、Docker からの ping が外部ネットワークに到達できない理由は多数ある可能性があり、上記の解決策に従って 1 つずつトラブルシューティングを行う必要があります。問題の根本原因を確認することによってのみ、ネットワーク接続の問題を効果的に解決できます。
以上がDocker が外部ネットワークに ping できない理由と解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。