ホームページ  >  記事  >  運用・保守  >  docker は正常に作成されたが接続できない場合はどうすればよいですか?

docker は正常に作成されたが接続できない場合はどうすればよいですか?

PHPz
PHPzオリジナル
2023-04-18 09:05:431558ブラウズ

前に書いた内容:
この記事は主にdockerの作成は成功したものの接続できない場合の原因と解決策について述べた、docker初心者向けの実践的な記事です。記事内の操作と解決策は、Ubuntu システム環境に基づいています。

docker を使用するプロセスでは、コンテナーが正常に作成されても、接続できない状況が発生することがあります。このような状況では、人々は多くの場合、問題を見つけることができずに非常に悩みます。この記事では、docker の作成は成功したが接続できない原因と解決策を実際の事例を用いて解説します。

ケースの説明:

Docker を使用してローカル コンピューター上に nginx コンテナーを作成しましたが、アクセスすると正常に接続できませんでした。
手順は次のとおりです:

  1. Ubuntu システムに docker をインストールします

コマンド ラインに次の手順を入力します:

sudo apt -get install docker.io

インストールが完了したら、次のコマンドを使用して docker を起動します:

sudo systemctl start docker

  1. Docker 上に nginx コンテナを作成します
#コマンド ラインに次のコマンドを入力します:

sudo docker run --name mynginx -p 80:80 -d nginx

このコマンドの意味は次のとおりです。新しいコンテナーを作成するための nginx イメージ、container 名前は mynginx で、ポート 80 をローカル ポート 80 にマップし、バックグラウンドで実行されます。

    コンテナが正常に作成されたかどうかを確認します
コマンド ラインに次の手順を入力します:

sudo docker ps

If次の内容が表示されます。コンテナが正常に作成されたことを示します:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

aaed7c1b cccf nginx "/docker-entrypoint.…" 21 秒前 上昇 20 秒 0.0。 0.0:80->80/tcp mynginx

    ブラウザで nginx にアクセス
ブラウザに localhost または 127.0.0.1 と入力して、nginx のようこそインターフェイスを表示します。

ただし、場合によってはnginxにアクセスできない場合があります。

問題分析:

まず、問題がどこにあるのかを確認する必要があります。

    システム ファイアウォール構成の表示
Ubuntu システムのデフォルトのファイアウォール ツールは ufw です。次のコマンドを使用してその構成を表示できます:

sudo ufw status

出力が次の場合、システム ファイアウォールがオンになっていることを意味します:

Status: active

To Action From

#22/tcp ' 許可 ' ' s ' s ' s ' t - ----- , ##80/tcp どこでも許可
22/tcp (v6) どこでも許可 (v6)

80/tcp (v6) Anywhere (v6)

この時点で、ポート 80 がシステム ファイアウォールの通過を許可されているかどうかを確認する必要があります。上記の出力からわかるように、ポート 80 へのアクセスは許可されているため、これは問題ではありません。

ネットワーク接続ステータス

  1. ping コマンドを使用して 127.0.0.1 のネットワーク接続ステータスを確認すると、次のエラー メッセージが表示されます。
ping : connect: ネットワークに到達できません

これは、ネットワーク接続の問題がここにあることを意味します。引き続き原因の調査を行ってください。

ローカル ネットワーク アドレスは正しいですか?

  1. コンテナを作成したときにポート 80 を nginx コンテナにマッピングしたため、nginx コンテナのローカル ネットワーク アドレスに接続してみます。ローカル ポート 80 なので、コンテナにアクセスするにはコンテナのローカル ネットワーク アドレスを使用する必要があります。次のコマンドを使用して、ローカル コンテナのアドレスを表示できます:
sudo docker Inspection mynginx | grep IPAddress

応答は次のようになります:

"IPAddress" : "172.17.0.2",

ブラウザで 172.17.0.2 にアクセスしてみると、nginx のウェルカム ページが表示されます。これは、現時点ではポート マッピングとファイアウォール ルールが正しいことを意味します。問題はローカル ネットワーク アドレスの設定にあります。

解決策:

nginx 構成ファイルを変更し、次のように構成ファイルにサーバー ノードを追加します。ホスト名はローカル IP アドレスです。

server {

listen 80 default_server;
listen [::]:80 default_server;

server_name localhost;

root /var/www/html;
index index.html index.htm;

location / {
    try_files $uri $uri/ =404;
}

# 新增的本机IP节点
server {
    listen 80;
    listen [::]:80;

    server_name <本机IP>;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
}

変更が完了したら、nginx 構成ファイルをリロードします:

sudo nginx -s reload

localhost または 127.0.0.1 に再度アクセスし、開きますブラウザで nginx のウェルカム ページが表示されます。

要約:

docker は正常に作成されたが接続できないという問題は、ネットワーク接続ステータス、システムのファイアウォール構成、ローカル ネットワーク アドレス設定などに関連している可能性があります。問題をトラブルシューティングし、適切な解決策を講じることで、問題はスムーズに解決されます。今後 docker を使用する場合は、問題が発生したときに慌てず、落ち着いてログを確認し、問題を特定し、解決策を策定することでのみ docker 技術を習得し、開発効率を向上させることができます。 。

以上がdocker は正常に作成されたが接続できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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