ホームページ >運用・保守 >Docker >Dockerがポート80を使用できない問題の解決策について話しましょう

Dockerがポート80を使用できない問題の解決策について話しましょう

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

Docker は、展開、実行、管理のためにアプリケーションをコンテナに簡単にパッケージ化できるオープンソースのアプリケーション コンテナ エンジンです。ただし、Docker を使用してアプリケーションをデプロイする場合、ポート 80 が使用できないという問題が発生することがあります。この記事では、この問題に対処するためのいくつかの解決策を紹介します。

問題の説明

Docker を使用してアプリケーションをデプロイする場合、アプリケーションをポート 80 で実行する必要がある場合、通常、次のエラー メッセージが表示されます:

Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.

このエラー メッセージ別のプロセスがポート 80 を使用しているため、Docker はこのポートを使用できないことを示します。

解決策

Docker がポート 80 を使用できない問題を解決するためのいくつかの方法を以下に紹介します。

1. ポート 80 を占有しているプロセスを停止します

ポート 80 を占有しているプロセスを確認し、Docker がこのポートを使用できるようにプロセスを停止します。 Linux システムでポート 80 を占有しているプロセスを停止する手順は次のとおりです。

  1. 次のコマンドを実行して、ポート 80 を占有しているプロセス ID を表示します。

    sudo lsof -i:80
  2. プロセス ID に対応するプロセスの表示:

    sudo ps -p [PID]
  3. プロセスの停止:

    sudo kill [PID]

2. マップされた Docker を変更します。 port

ポート 80 を占有しているプロセスを停止するだけでなく、Docker にマップされたポートを変更することで、ポート 80 を占有しているプロセスとの競合を回避することもできます。

アプリケーションがローカルのポート 8080 でリッスンしており、Docker コンテナのポート 80 をローカル ポート 8080 にマップすると仮定すると、次のコマンドを使用して Docker コンテナを起動できます。

sudo docker run -p 8080:80 [image name]
このようにして、Docker はコンテナーのポート 80 をローカル ポート 8080 にマップし、ブラウザーでアプリケーションにアクセスできるようにします。

3. Nginx プロキシを使用する

Docker がポート 80 を使用できない問題を解決するもう 1 つの方法は、Nginx プロキシを使用することです。ポート 80 でリッスンし、トラフィックを Docker コンテナ内の他のポートに転送するように Nginx を構成できます。以下は簡単な構成例です:

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
この例では、Nginx はポート 80 でリッスンし、トラフィックを Docker コンテナのポート 8080 に転送します。

まとめ

上記は、Docker がポート 80 を使用できない問題を解決する 3 つの方法です。実際の状況に応じて、適切な方法を選択できます。 Docker を使用してアプリケーションをデプロイする場合は、不要なトラブルを避けるためにポートの競合に注意する必要があります。

以上がDockerがポート80を使用できない問題の解決策について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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