我需要在 docker 容器中对服务器上失败的内容进行 xdebug,并且从我的笔记本电脑上运行ssh -R 9000:localhost:9000 server并验证了隧道telnet localhost 9000。到目前为止一切顺利,我建立了联系。
现在,在服务器上我做了
iptables -t nat -I PREROUTING -p tcp -d 172.17.42.1 --dport 9000 -j DNAT --to 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
最后我提交了有问题的 docker 实例并运行
docker run --net=host -t -i snapshot /bin/bash
Run Code Online (Sandbox Code Playgroud)
容器内部telnet 172.17.42.1 9000拒绝连接。
小智 4
我遇到了同样的问题,除了我有两个容器用 --link 连接在一起,所以 --net=host 不适用于这种情况。
当使用 ssh 端口转发到远程主机时ssh -R 9000:localhost:9000 server,lsof -P -i -n可能会显示该端口已绑定到服务器环回设备,如下所示:
sshd 39172 ubuntu 9u IPv4 2941407 0t0 TCP ::1:9000 (LISTEN)
该环回接口不可用于 docker 容器内部的网络。我通过添加GatewayPorts yes到服务器上的 sshd_config 文件并重新启动 sshd 来解决此问题。
然后转发的端口 9000 绑定到普通接口,并可从 docker 容器内部使用。(以及与此相关的任何其他主机)。
| 归档时间: |
|
| 查看次数: |
4367 次 |
| 最近记录: |