![Docker 到本地主机](https://linux22.com/image/764661/Docker%20%E5%88%B0%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA.png)
我正在使用一个设置多个 Docker 容器并启动它们的框架。
我想更新其中一个的源代码,但又不想继续重建docker镜像。所以,我想到在本地开发代码,并将配置指向我的本地主机。
但是,docker 上运行的服务无法连接到我的本地实例(我可以在 docker 之外正常地对其进行 curl 操作)。经过一番研究,我能够获得映射,docker.host.internal
以便容器知道主机 IP,但这也不起作用。
我怀疑防火墙(iptables)可能阻止了流量。
- 我如何确认 iptables 是否阻止了流量?是否有任何日志可以检查以确认我的假设?
- 我想我需要添加一条 DNAT 规则,对吗?(例如:
iptables -A DOCKER -i <docker nic> -p tcp -m tcp --dport 6060 -j DNAT --to-destination 127.0.0.1:6060
;虽然这也没有帮助) - 如果我运行上述 iptables 命令,更改会立即生效还是需要以某种方式重新启动 iptables 才能生效?
谢谢你! :)
答案1
我还没有使用 NAT 进行测试,但我最终做的是设置GatewayPorts=clientspecified
并/etc/ssh/sshd_config
重新启动 sshd。
然后,我要做的就是使用 设置我的反向隧道ssh -R <docker host ip>:6060:localhost:6060 <host>
。这实际上可以避免将端口绑定到环回接口,而是直接将其绑定到 docker ip。
这样,我就可以在本地机器上进行开发,以测试快速更改,而无需重建 docker 镜像。此外,这样,我将不允许端口访问公共,因此它相当安全。:)