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