【发布时间】:2021-02-07 17:18:06
【问题描述】:
我正在尝试在 IPv6 上运行具有多个公开端口的 docker 容器。我不希望容器拥有自己的 IPv6 地址。我只想让它们在主机的 IPv6 地址下可访问(使用端口转发)。
我在 docker 守护进程 (http://docs.docker.oeynet.com/engine/userguide/networking/default_network/ipv6/) 中启用了 IPv6。
我试过了
ports:
# The HTTP port
- ":::80:80"
在容器的 docker-compose.yaml 中,但这似乎完全弄乱了配置:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9774a1a6322c traefik:latest "/entrypoint.sh --ap…" 1 second ago Up Less than a second 80/tcp traefik
使用另一个容器(不在我的控制之下,我似乎无法知道它是如何启动的),端口被正确转发:
a04b40299a8f portainer/portainer-ce "/portainer" 7 days ago Up 3 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer
也可以使用主机的 IPv6 地址访问此地址(如预期的那样)。 我怎样才能为第一个容器实现这一点?
【问题讨论】:
-
IP,既不是 IPv4 也不是 IPv6,有端口。 一些传输协议使用端口,但IP不知道端口。
-
您是否已经使用您的 docker 守护进程查看并启用了 IPv6? docs.docker.com/config/daemon/ipv6
-
是的,和帖子里的链接内容基本一样。
-
不知何故,在新安装的环境(Docker v20.10.14)中,我可以通过主机的 IPv6 公开端口,而无需执行任何操作。我不确定这是否与我在无根模式下运行 Docker 或 Docker 开发人员修复此问题有关。
标签: docker docker-compose port ipv6