gpt4 book ai didi

docker - docker IPs 范围内的 eth0 IP

转载 作者:行者123 更新时间:2023-12-02 18:28:37 25 4
gpt4 key购买 nike

我们需要部署 docker 容器的其中一台机器的 eth0 IP 设置在 docker IP 范围内(172.17.0.1/16)。

问题是,当我们尝试从外部(SSH 等)通过 NAT 访问该服务器时,一切都“挂起”。我猜这些数据包被 docker iptables 规则误导了。

如果我们无法更改 eth0 IP,在这种情况下有什么建议?

最佳答案

如果 Docker 在创建网络时看到所有正在使用的子网,它应该避免子网冲突。但是,如果您更改网络(例如笔记本电脑),那么您需要设置地址池供 docker 使用。我的幻灯片中的步骤如下:
https://sudo-bmitch.github.io/presentations/dc2018eu/tips-and-tricks-of-the-captains.html#19

重要的细节是设置一个/etc/docker/daemon.json 文件,其中包含:

{
"bip": "10.15.0.0/24",
"default-address-pools": [
{"base": "10.20.0.0/16", "size": 24},
{"base": "10.40.0.0/16", "size": 24}
]
}

根据需要调整 ip 范围。停止坏网络中的所有容器,删除容器,删除任何用户创建的网络,重新启动 docker 引擎,然后重新创建任何用户创建的网络和容器(通常最后两个步骤只涉及删除和重新部署 compose 项目或 swarm 堆栈) .

请注意,不清楚您是否尝试连接到您的主机或容器。您不应该直接从外部连接到容器 IP(极少数异常(exception))。相反,您发布需要能够从外部访问的所需端口,然后连接到该发布端口上的主机 IP 以访问容器。例如。
docker run -d -p 8080:80 nginx

将使用容器内的正常端口 80 启动 nginx,您通常无法从外部访问。发布主机端口 8080(可以很容易地使用 80 来匹配容器端口)将连接映射到容器端口 80。

一个重要的先决条件是容器内的应用程序必须监听所有接口(interface),而不仅仅是 127.0.0.1,以便能够从该容器的网络命名空间外部访问它。

关于docker - docker IPs 范围内的 eth0 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54782160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com