ホームページ  >  記事  >  運用・保守  >  コンテナがホスト Docker を使用する場合のエラーを解決する方法

コンテナがホスト Docker を使用する場合のエラーを解決する方法

PHPz
PHPzオリジナル
2023-04-17 16:42:43841ブラウズ

近年、効率的なコンテナ化ソリューションとして Docker の人気が高まっています。ただし、コンテナー化されたデプロイメントに Docker を使用する場合、コンテナー内のホストにアクセスすると、コンテナーはホスト Docker を使用してエラーを報告するなど、いくつかの問題も発生します。この記事では、この問題の原因とその解決方法について説明します。

問題の説明

Docker を使用してアプリケーションをデプロイする場合、コンテナー内からホスト ファイル システムまたはホストの Docker デーモンにアクセスする必要がある場合があります。通常、これは、コンテナにこの関数を実装します。ただし、場合によっては、コンテナーがホスト Docker デーモンにアクセスしようとすると、次のようなエラー メッセージが表示されます。 <pre class="brush:php;toolbar:false">FATA[0000] Post http:///var/run/docker.sock/v1.18/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?</pre> これは、コンテナー内のプロセスが最初に Docker デーモンを見つけようとするためです。コンテナ内の /var/run/docker.sock ディレクトリを検索しますが、このディレクトリはコンテナ内に存在しないため、このエラーが発生します。

解決策方法 1:

--privileged

パラメーターを使用します。

コンテナーを起動するときは、--privileged パラメーターを使用します。パラメーター コンテナーには、Docker デーモンへのアクセスを含む、ホストのすべての権限を付与できます。ただし、この方法を使用すると、コンテナーがより高い権限を取得できるようになり、より大きなセキュリティ リスクが生じるため、注意して使用することをお勧めします。

docker run --privileged -v /:/host -v /var/run/docker.sock:/var/run/docker.sock <image>

方法 2: 環境変数を使用するコンテナを起動するときに、環境変数を使用して Docker デーモンのアドレスを指定し、コンテナが

/var/run に置かれないようにすることができます。 /docker.sock

Docker デーモンのプロセスを検索します。

docker run -v /:/host -e DOCKER_HOST=unix:///host/var/run/docker.sock <image>

方法 3: TCP 接続方法に切り替えるUnix Socket の代わりに TCP 接続を使用すると、この問題を解決できる可能性があります。 Docker デーモンの起動時に

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

パラメーターを追加し、

DOCKER_HOST を使用する必要があります。 # コンテナ内 ## Docker デーモンへの接続に TCP を使用することを指定する環境変数。

docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
docker run -e DOCKER_HOST=172.xx.xx.xx:2375 <image>
結論コンテナがホスト Docker を使用するときに報告されるエラーの問題は、コンテナ内のプロセスが Docker デーモン プロセスを検索するときのパスの問題によって発生します。この記事では、--privileged パラメーターを使用する、環境変数を使用する、Docker デーモンの接続方法を変更するという 3 つの解決策を紹介します。この問題は、実際の状況に応じて適切な方法を選択することで簡単に解決できます。

以上がコンテナがホスト Docker を使用する場合のエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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