ホームページ > 運用・保守 > Docker > DockerがホストDNSと通信できない問題を解決する方法

DockerがホストDNSと通信できない問題を解決する方法

PHPz
リリース: 2023-04-17 15:36:48
オリジナル
1585 人が閲覧しました

Docker がホスト DNS で動作しない場合の解決策

Docker は、ポータブルでスケーラブルなコンテナ化環境を提供する、広く使用されているアプリケーション コンテナ化プラットフォームです。ただし、Docker をホスト DNS と併用すると、ドメイン名を解決できない、待ち時間が長いなど、さまざまな問題が発生することがあります。この記事ではホストDNSでDockerが使えない原因とその解決策を紹介します。

理由

Docker は、Cgroup や Namespace などのテクノロジーを使用して、コンテナ内のホストから完全に分離された環境を提供します。この分離環境はコンテナを保護しますが、コンテナがホストの DNS サーバーを介して通信することも防ぎます。したがって、コンテナー内のドメイン名解決にホスト DNS サービスを使用することはできません。

解決策

ホスト DNS で Docker を使用できない問題を解決するには、次の措置を講じることができます:

1. カスタム DNS サーバーをセットアップするDocker コンテナ内

Docker でカスタム DNS サーバーをセットアップして、デフォルトの DNS サーバーを置き換えることができます。 Dockerfile で次のコマンドを使用して、カスタム DNS サーバーをセットアップできます。

RUN echo "nameserver 8.8.8.8" >> /etc/resolv.conf
ログイン後にコピー

これにより、Google のパブリック DNS サーバー 8.8.8.8 がコンテナ内の /etc/resolv.conf ファイルに追加されます。複数のネームサーバーを追加することで、複数の DNS サーバーをセットアップできます。

2. ホスト マシンに Docker の DNS サーバーをセットアップする

コンテナがホスト マシンを介してドメイン名解決を実行できるように、ホスト マシンに Docker の DNS サーバーをセットアップできます。 /etc/docker/daemon.json ファイルに次の構成を追加することで、Docker DNS サーバーをセットアップできます:

{
  "dns": ["8.8.8.8", "8.8.4.4"]
}
ログイン後にコピー

これにより、Google のパブリック DNS サーバー 8.8.8.8 および 8.8.4.4 が Docker DNS に追加されます。サーバー中間。複数の DNS サーバーを追加することで、複数の DNS サーバーをセットアップできます。

3. Docker コンテナの --dns オプションを使用する

Docker コンテナの起動時に --dns オプションを使用して、コンテナの DNS サーバーを設定できます。例:

docker run --dns 8.8.8.8 -it ubuntu:latest
ログイン後にコピー

これにより、Google のパブリック DNS サーバー 8.8.8.8 がコンテナの DNS サーバーとして設定されます。

概要

Docker はコンテナ内に隔離された環境を提供するためにいくつかのテクノロジーを使用するため、ホスト DNS では使用できません。この問題を解決するには、Docker コンテナにカスタム DNS サーバーを設定するか、ホストに Docker の DNS サーバーを設定するか、Docker コンテナの --dns オプションを使用してコンテナの DNS サーバーを設定します。これらのソリューションにより、Docker がホスト DNS と連携して、Docker コンテナ化プラットフォームをより効果的に使用できるようになります。

以上がDockerがホストDNSと通信できない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート