Mapeamento de porta Docker / interconexão de contêiner

Um, mapeamento de porta

1. Conceito

  • O mapeamento da porta do Docker é mapear a porta de serviço do aplicativo no contêiner para a máquina host local

2. Implementação

Mapeamento aleatório

  • Ao usar o parâmetro -P, o Docker mapeará aleatoriamente uma porta para a porta de rede aberta do contêiner interno e abrirá um serviço nginx da seguinte maneira
$ docker run -d -P nginx
e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc
$ 
$ docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
e93349d53911    nginx        "nginx -g 'daemon ..."  11 seconds ago   Up 9 seconds    0.0.0.0:32769->80/tcp  zen_kirch

  • Neste momento, use docker ps para ver se a porta 32769 do host local está mapeada para a porta 80 do contêiner. Nesse momento, quando navegamos pelo host local e visitamos http: // localhost: 32769, o nginx página aparecerá.

Especifique o mapeamento da porta

  • Ao usar o parâmetro -p, você pode especificar a porta a ser mapeada e apenas um contêiner pode ser vinculado a uma porta especificada.
  • Os formatos suportados são:
    IP: HostPort: ContainerPort
    IP: ContainerPort
    HostPort: ContainerPort
  • Vamos iniciar um serviço nginx e mapear a porta local 8080 para a porta 80 do contêiner
$ docker run -d -p 8080:80 nginx
23e725098712d061a1382f33d6fe54da23ae37597a62f8debdd3731b5f9cc4b9
$ 
$ docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
23e725098712    nginx        "nginx -g 'daemon ..."  8 seconds ago    Up 6 seconds    0.0.0.0:8080->80/tcp  frosty_ptolemy

  • Neste momento, use docker ps para ver se a porta 8080 do host local está mapeada para a porta 80 do contêiner. Nesse momento, quando visitarmos http: // localhost: 8080 por meio do navegador local, a página de boas-vindas do nginx aparecerá .

3. Visualize a porta mapeada

  • Use o comando docker port para visualizar a configuração da porta mapeada no momento, e você também pode visualizar o endereço vinculado. O formato do comando é o seguinte:
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
  • O contêiner tem sua própria rede interna e endereço IP. Você pode usar docker inspect + ID do contêiner para obter informações específicas sobre o contêiner.

4. O Docker adiciona uma porta mapeada ao contêiner em execução

método um

Obtenha o IP do contêiner

docker inspect `container_name` | grep IPAddress    //将container_name 换成实际环境中的容器名

porta de encaminhamento de iptables

iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
//将容器的8000端口映射到docker主机的8001端口

Método Dois

Envie um contêiner em execução como uma imagem

docker commit containerid foo/live

Execute o espelho e adicione a porta

docker run -d -p 8000:80 foo/live /bin/bash

Em segundo lugar, a interconexão de contêineres

  • Crie e execute o contêiner denominado web1, e o número da porta é mapeado automaticamente
docker run -itd -P --name web1 centos /bin/bash
  • Crie e execute o domínio do contêiner web2, crie um link para web1 e comunique-se com ele
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash
  • Insira o ping do contêiner web2 web1

Acho que você gosta

Origin blog.csdn.net/weixin_45647891/article/details/115067654
Recomendado
Clasificación