Docker IPv6 несколько сервисов на одном порту в разных контейнерах - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь пройти через порты в докер-контейнеры, где несколько контейнеров имеют один и тот же порт и должны быть доступны через один и тот же порт. Звучит странно, но это хорошо, но давайте пойдем с этим так:

/etc/docker/daemon.json
{
   "ipv6": true,
   "fixed-cidr-v6": "2a01:a:b:c:FFFF::/80"
}

Создать сеть для более легкого обращения.

docker network create --ipv6 --subnet 2a01:a:b:c:AAAA::/80 --gateway 2a01:a:b:c:AAAA::1 --subnet 172.18.16.0/24 test

Теперь у меня есть test сеть с именем и могузапустите контейнеры на нем:

/usr/bin/docker run -it --rm --net test --ip6 2a01:a:b:c:AAAA:1::2 -p 80:80 --name nginx nginx:latest

Теперь у нас есть netstat:

netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.1:40945         0.0.0.0:*               LISTEN      0          31926551   17395/containerd    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        31917578   32693/systemd-resol 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          15061      816/sshd            
tcp6       0      0 :::80                   :::*                    LISTEN      0          31979291   23983/docker-proxy  
tcp6       0      0 :::22                   :::*                    LISTEN      0          15063      816/sshd            
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        31917577   32693/systemd-resol

Проблема в том, что он привязывается к :::: 80 вместо IP контейнера. Я могу получить доступ к nginx извне, как это через ping6, curl на настроенном ip, а также через шлюз :: 1 из test (который я не понимаю почему), а также по адресу Ipv4 и адресу IPv6 eth0

Я хочу, чтобы он отвечал на ping, а также на свой IP, но не на другие. Мне нужен другой nginx, который также слушает на 80. Я часто читаю, что все порты в EXPOSE доступны по умолчанию, даже если они не привязаны к хосту, когда IPv6 включен в контейнере. Это, кажется, не имеет место здесь. Привязка с -p [ipv6]:80:80 приведет к ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...