Maison  >  Article  >  Opération et maintenance  >  Comment mapper les ports dans les conteneurs Docker

Comment mapper les ports dans les conteneurs Docker

PHPz
PHPzoriginal
2023-04-18 15:21:129512parcourir

Docker est un moteur de conteneur d'applications open source qui permet aux développeurs de packager, distribuer et exécuter rapidement n'importe quelle application, que ce soit localement, dans le cloud ou sur un appareil mobile, à l'aide de cet excellent outil. La plus grande fonctionnalité de Docker est que les conteneurs en cours d'exécution peuvent être rapidement déployés sur différents hôtes et que la cohérence de l'environnement est maintenue. En raison des excellentes performances et de la facilité d'utilisation de Docker, il a été largement utilisé dans le cloud computing, le DevOps, les microservices et d'autres domaines. Cet article présentera le mappage de ports pour les conteneurs Docker.

  1. Mappage des ports pour les conteneurs Docker

Chaque service dans un conteneur Docker doit occuper un numéro de port. Si le service exécuté à l'intérieur du conteneur doit communiquer avec un système externe, ce numéro de port doit être mappé à un port de l'hôte. Ce processus peut être appelé mappage de ports.

Dans Docker, vous pouvez démarrer un conteneur via la commande docker run et spécifier les paramètres de mappage de port. Par exemple, en supposant qu'un service Web est en cours d'exécution dans le conteneur et que le port d'écoute est 8080, nous pouvons utiliser la commande suivante pour mapper le port 8080 du conteneur au >8000Port de l'hôte : docker run命令来启动一个容器,并指定端口映射参数。例如,假设在容器内运行的是一个Web服务,监听端口为8080,我们可以使用下面的命令将容器内的8080端口映射到主机的8000端口:

docker run -p 8000:8080 my-web-service

这个命令的参数-p 8000:8080表示将容器内的8080端口映射到主机的8000端口。最后一个参数my-web-service是指定要运行的Docker镜像。

  1. 多个端口的映射

如果容器内运行的服务需要暴露多个端口,可以通过多次添加-p参数进行映射。例如,假设在容器内运行的服务需要同时监听80808081两个端口,我们可以使用下面的命令将这两个端口映射到主机上的不同端口:

docker run -p 8000:8080 -p 8001:8081 my-web-service

这个命令的参数-p 8000:8080表示将容器内的8080端口映射到主机的8000端口,参数-p 8001:8081表示将容器内的8081端口映射到主机的8001端口。

  1. 绑定到本地IP

默认情况下,Docker容器映射的端口是绑定到主机的所有网卡接口上。如果要指定映射到某个特定的IP地址上,可以通过-p参数的格式:

docker run -p IP:HOST_PORT:CONTAINER_PORT my-web-service

其中,IP是指要映射的本地IP地址,HOST_PORT是主机上的端口号,CONTAINER_PORT是容器内服务实际监听的端口号。

  1. UDP端口的映射

与TCP端口不同,UDP端口需要使用-p参数的格式进行映射。例如,可以通过下面的命令将容器内的UDP端口8080映射到主机的UDP端口8000

docker run -p 8000:8080/udp my-udp-service
  1. 随机端口映射

在某些情况下,如果没有必要将容器内的端口映射到主机的固定端口上,可以使用-P参数来指定随机端口映射。例如,可以通过下面的命令启动并自动映射服务的端口:

docker run -P my-web-service

在这个命令中,参数-P表示将容器内的所有端口自动映射到主机上的随机端口。Docker会随机选择一个未被占用的主机端口并将容器内服务的端口映射到它上面。

  1. 查看映射端口

可以使用docker ps

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
Le paramètre de cette commande -p 8000:8080 signifie mapper le port 8080 du conteneur au port 8000 de l'hôte. Le dernier paramètre <code>my-web-service spécifie l'image Docker à exécuter.

    Mappage de ports multiples

    🎜Si le service exécuté dans le conteneur doit exposer plusieurs ports, vous pouvez le mapper en ajoutant le paramètre -p plusieurs fois. Par exemple, en supposant que le service exécuté dans le conteneur doit écouter deux ports 8080 et 8081 en même temps, nous pouvons utiliser la commande suivante pour mapper ces deux ports vers différents ports sur l'hôte. Port : 🎜rrreee🎜Le paramètre de cette commande -p 8000:8080 signifie mapper le port 8080 dans le conteneur au 8000. Paramètres -p 8001:8081 signifie mapper le port 8081 dans le conteneur au port 8001 de l'hôte. . 🎜
      🎜Lien à l'IP locale🎜🎜🎜Par défaut, les ports mappés par le conteneur Docker sont liés à toutes les interfaces de carte réseau de l'hôte. Si vous souhaitez spécifier le mappage vers une adresse IP spécifique, vous pouvez utiliser le format de paramètre -p : 🎜rrreee🎜où, IP fait référence à l'adresse IP locale à mapper , HOST_PORT est le numéro de port sur l'hôte et CONTAINER_PORT est le numéro de port que le service dans le conteneur écoute réellement. 🎜
        🎜Mappage des ports UDP🎜🎜🎜Différents des ports TCP, les ports UDP doivent être mappés à l'aide du format de paramètre -p. Par exemple, vous pouvez mapper le port UDP 8080 dans le conteneur au port UDP 8000 de l'hôte via la commande suivante : 🎜rrreee
          🎜Mappage de port aléatoire 🎜🎜🎜Dans certains cas, s'il n'est pas nécessaire de mapper le port du conteneur sur le port fixe de l'hôte, vous pouvez utiliser le paramètre -P pour spécifier un mappage de port aléatoire . Par exemple, vous pouvez démarrer et mapper automatiquement le port du service via la commande suivante : 🎜rrreee🎜 Dans cette commande, le paramètre -P signifie mapper automatiquement tous les ports du conteneur à des ports aléatoires sur l'hôte. Docker sélectionnera au hasard un port hôte inoccupé et lui mappera le port du service dans le conteneur. 🎜
            🎜Afficher les ports mappés🎜🎜🎜Vous pouvez utiliser la commande docker ps pour afficher les conteneurs en cours d'exécution et leurs ports mappés. Par exemple, vous pouvez utiliser la commande suivante pour répertorier tous les conteneurs en cours d'exécution et leurs ports mappés : 🎜rrreee🎜 Cette commande affichera l'ID, le nom et leur numéro de port mappé de chaque conteneur. 🎜🎜Le mappage du port Docker consiste à créer une interface réseau entre le conteneur et l'hôte pour la transmission de données bidirectionnelle. Lors de la configuration du mappage de ports, vous devez faire attention aux problèmes de sécurité du réseau et aux conflits de ports pour éviter des problèmes inutiles. J'espère que cet article pourra aider les lecteurs à comprendre le mappage des ports et la configuration réseau de Docker. 🎜

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