Docker on Synology - 绑定到所有界面
Docker on Synology - Binding to all interfaces
我在 Synology DS918+ 上有一个 MariaDB docker 容器 运行ning 并将流量从容器端口 3306 重定向到外部端口 3333
当我看到它如何绑定到端口时,它似乎与我为另一个服务提供的工作示例不同 运行 docker
工作:
ash-4.3# netstat -nao | grep 5000
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 :::5000 :::* LISTEN
不工作:
ash-4.3# netstat -nao | grep 3333
tcp6 0 0 :::3333 :::* LISTEN off (0.00/0/0)
当我尝试从我的笔记本电脑访问端口 3333 到远程机器时 运行ning docker 我能够这样做,问题是当我试图从我的笔记本电脑访问机器的私有 IP 时在机器内部,这个失败了
在此感谢任何帮助
澄清一下,虽然你的 docker 只绑定到 ipv6 接口(“::”)而不是 ipv4(“0.0.0.0”),Docker 禁止环回连接到它的docker-来自主机的代理。我相信这在所有网络模式下也会失败。
如果您从容器连接到另一个容器,请通过 docker-dns 和专用 LAN 使用容器名称。例如,如果您的 MariaDB 容器名为“maria”,我相信 docker 在 127.0.0.11 上的 DNS 会提供对名称“maria”的查找到 172...* ipv4,如果在与您的 MariaDB 主机相同的 172.{subnet}../16 中,其他容器可以连接到该 ipv4。连接到另一个容器中的“maria”,tcp 神奇地到达了正确的位置。
如果您尝试从 docker 主机连接到一个容器,这是一个问题,我已经放弃在发夹 NAT 中代理我的路由器到我已经拥有的相同 upnp 端口通过 Synology 上的外部访问导出,这感觉是一个糟糕的解决方案,但今天有效。
我在 Synology DS918+ 上有一个 MariaDB docker 容器 运行ning 并将流量从容器端口 3306 重定向到外部端口 3333
当我看到它如何绑定到端口时,它似乎与我为另一个服务提供的工作示例不同 运行 docker
工作:
ash-4.3# netstat -nao | grep 5000
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 :::5000 :::* LISTEN
不工作:
ash-4.3# netstat -nao | grep 3333
tcp6 0 0 :::3333 :::* LISTEN off (0.00/0/0)
当我尝试从我的笔记本电脑访问端口 3333 到远程机器时 运行ning docker 我能够这样做,问题是当我试图从我的笔记本电脑访问机器的私有 IP 时在机器内部,这个失败了
在此感谢任何帮助
澄清一下,虽然你的 docker 只绑定到 ipv6 接口(“::”)而不是 ipv4(“0.0.0.0”),Docker 禁止环回连接到它的docker-来自主机的代理。我相信这在所有网络模式下也会失败。
如果您从容器连接到另一个容器,请通过 docker-dns 和专用 LAN 使用容器名称。例如,如果您的 MariaDB 容器名为“maria”,我相信 docker 在 127.0.0.11 上的 DNS 会提供对名称“maria”的查找到 172...* ipv4,如果在与您的 MariaDB 主机相同的 172.{subnet}../16 中,其他容器可以连接到该 ipv4。连接到另一个容器中的“maria”,tcp 神奇地到达了正确的位置。
如果您尝试从 docker 主机连接到一个容器,这是一个问题,我已经放弃在发夹 NAT 中代理我的路由器到我已经拥有的相同 upnp 端口通过 Synology 上的外部访问导出,这感觉是一个糟糕的解决方案,但今天有效。