Maison  >  Article  >  Opération et maintenance  >  Parlons de la solution au problème selon lequel Docker ne peut pas utiliser le port 80

Parlons de la solution au problème selon lequel Docker ne peut pas utiliser le port 80

PHPz
PHPzoriginal
2023-04-10 14:19:273676parcourir

Docker est un moteur de conteneur d'applications open source qui peut facilement regrouper des applications dans un conteneur pour le déploiement, l'exécution et la gestion. Cependant, lorsque vous utilisez Docker pour déployer des applications, vous rencontrez parfois le problème que le port 80 ne peut pas être utilisé. Cet article présentera quelques solutions pour résoudre ce problème.

Description du problème

Lors de l'utilisation de Docker pour déployer une application, si l'application doit s'exécuter sur le port 80, le message d'erreur suivant apparaîtra généralement :

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

Ce message d'erreur indique que d'autres processus utilisent déjà le port 80, donc Docker ne peut pas être utilisé ce port.

Solution

Voici plusieurs façons de résoudre le problème selon lequel Docker ne peut pas utiliser le port 80.

1. Arrêtez le processus occupant le port 80

Nous pouvons vérifier le processus occupant le port 80 et arrêter le processus afin que Docker puisse utiliser ce port. Voici les étapes pour arrêter le processus occupant le port 80 sur le système Linux :

  1. Exécutez la commande suivante pour afficher l'ID de processus occupant le port 80 :

    sudo lsof -i:80
  2. Affichez le processus correspondant avec l'ID de processus :

    sudo ps -p [PID]
  3. Arrêtez le processus :

    sudo kill [PID]

2. Modifier le port mappé Docker

En plus d'arrêter le processus occupant le port 80, vous pouvez également modifier le port mappé Docker pour éviter tout conflit avec le processus occupant le port 80.

Supposons que l'application écoute localement sur le port 8080 et que nous souhaitons mapper le port 80 du conteneur Docker au port 8080 local, nous pouvons alors utiliser la commande suivante pour démarrer le conteneur Docker :

sudo docker run -p 8080:80 [image name]

De cette façon, Docker va Le port 80 est mappé au port local 8080, nous permettant d'accéder à l'application dans le navigateur.

3. Utiliser le proxy Nginx

Une autre façon de résoudre le problème selon lequel Docker ne peut pas utiliser le port 80 consiste à utiliser le proxy Nginx. Nous pouvons configurer Nginx pour écouter sur le port 80 et transférer le trafic vers d'autres ports du conteneur Docker. Voici un exemple de configuration simple :

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;
        }
    }
}

Dans cet exemple, Nginx écoute sur le port 80 et transfère le trafic vers le conteneur Docker sur le port 8080.

Résumé

Voici trois méthodes ci-dessus pour résoudre le problème selon lequel Docker ne peut pas utiliser le port 80. Vous pouvez choisir la méthode qui vous convient en fonction de votre situation réelle. Lorsque vous utilisez Docker pour déployer des applications, vous devez faire attention aux conflits de ports pour éviter des problèmes inutiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn