ホームページ  >  記事  >  運用・保守  >  Docker コンテナがインターネットにアクセスできない理由と解決策を共有します。

Docker コンテナがインターネットにアクセスできない理由と解決策を共有します。

PHPz
PHPzオリジナル
2023-04-10 14:18:455171ブラウズ

近年 Docker が広く使用されるようになったことで、Docker の使用時に時々問題が発生することがあります。たとえば、今日説明する問題は、Docker コンテナがインターネットにアクセスできないことです。この問題は、Docker を使用する場合に非常に一般的ですが、非常に厄介で頭痛を引き起こす問題でもあります。今回は、Docker コンテナがインターネットにアクセスできない理由とその解決策をいくつか紹介します。

1. コンテナのネットワーク設定を確認する

まず、コンテナのネットワーク設定を確認して、ネットワーク設定が正しいことを確認する必要があります。 Docker を使用してコンテナを作成する場合、コンテナのネットワーク タイプとネットワーク構成を設定できます。ネットワーク タイプが「なし」として構成されている場合、コンテナはインターネットにアクセスできません。また、ネットワーク タイプが「ブリッジ」として構成されている場合、コンテナはホストのネットワークを通じてインターネットにアクセスできます。

次のコマンドを使用してコンテナのネットワーク設定を表示できます:

docker inspect <容器名或 ID> | grep NetworkMode

出力結果が「none」の場合は、次のコマンドを使用してコンテナ ネットワークを設定する必要がありますtype to "bridge":

docker run --net=bridge <镜像名>

このようにして、コンテナはホスト ネットワークを通じてインターネットにアクセスできます。

2. コンテナの DNS 設定を確認する

別のコンテナがインターネットにアクセスできない理由は、DNS 設定が間違っているためです。コンテナ内またはホスト上でコマンドを実行するときは、DNS を使用してドメイン名を解決する必要があります。 DNS 構成が正しくない場合、コンテナーはドメイン名を解決できず、インターネットにアクセスできなくなります。

次のコマンドを使用してコンテナの DNS 構成を確認できます:

docker inspect <容器名或 ID> | grep -i dns

出力結果が空の場合は、DNS 構成を手動で設定する必要があります。次のコマンドを使用して、コンテナの作成時に DNS 構成を手動で設定できます。

docker run --dns=<DNS 服务器> <镜像名>

上記のコマンドでは、DNS サーバーを独自の DNS サーバー アドレス (8.8.8.8 など) に構成できます。

3. コンテナのファイアウォール設定を確認する

コンテナがインターネットにアクセスできない理由は、コンテナのファイアウォール設定に関連している場合もあります。コンテナ内のファイアウォールはデフォルトで有効になっており、すべての受信トラフィックと送信トラフィックをブロックします。

次のコマンドを使用して、コンテナのファイアウォール設定を確認できます:

docker exec <容器名或 ID> iptables -L

ファイアウォールが有効になっている場合は、次のコマンドを使用してファイアウォールをオフにできます:

docker exec <容器名或 ID> iptables -P INPUT ACCEPT
docker exec <容器名或 ID> iptables -P FORWARD ACCEPT
docker exec <容器名或 ID> iptables -P OUTPUT ACCEPT
docker exec <容器名或 ID> iptables -F

上記のコマンドの意味は、コンテナのファイアウォールのデフォルト ポリシーを Accept に設定し、すべてのファイアウォール ルールをクリアします。

4. ホスト コンピュータのファイアウォール設定を確認する

上記の 3 つの解決策を実行しても問題が解決しない場合は、ホスト コンピュータのファイアウォール設定を確認する必要があります。ホストのファイアウォールが正しく構成されていない場合、コンテナのトラフィックがブロックされ、コンテナがインターネットにアクセスできなくなる可能性があります。

次のコマンドを使用してホストのファイアウォール設定を確認できます:

iptables -L

ファイアウォールが有効になっている場合は、次のコマンドを使用してホストのファイアウォールを開くことができます:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F

上記のコマンドの意味は、ホストのファイアウォールのデフォルト ポリシーを受け入れるように設定し、すべてのファイアウォール ルールをクリアすることです。

概要

つまり、Docker コンテナがインターネットにアクセスできないという問題が発生した場合、まずコンテナのネットワーク設定、DNS 構成、およびファイアウォール設定を確認する必要があります。これらに問題がない場合は、ホストのファイアウォール設定を確認する必要があります。今日の記事が、Docker の使用時に問題に遭遇したすべての人に役立つことを願っています。

以上がDocker コンテナがインターネットにアクセスできない理由と解決策を共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。