无法连接到docker发布的端口以获取tftp

时间:2015-07-27 16:31:12

标签: docker portforwarding tftp

我正拼命试图在码头工人的容器中运行tftp-hpa。我从dockerfile构建了一个图像,然后用:

启动它

docker run -v /tmp:/srv/tftp -d -p 69:69/udp -t tftp_server

它启动并运行,我可以通过虚拟docker接口访问服务器:

me@hostmachine$ tftp 172.17.0.79
tftp> get /srv/tftp/test
Received 7 bytes in 0.0 seconds

但是从我看来-p 69:69 / udp开关应该将我的主机的69端口转发到容器端口69.但这似乎不起作用:

me@hostmachine$ tftp localhost
tftp> get /srv/tftp/test
Transfer timed out.

从netstat,我看到我的hostmachine上的端口69已打开。 我尝试使用httpd服务器和端口80完全相同的情况。它可以在这里工作,我可以通过浏览器127.0.0.1:80访问该网站。 主机是ubuntu 15.04 intel,docker镜像基于debian基本图像。

任何人都可以帮助我吗?有什么我可以错过的吗?任何想法如何调试?我很乐意分享我的Dockerfile或更多信息,但试图保持简短的问题。

2 个答案:

答案 0 :(得分:0)

您使用的是boot2docker吗?如果是,请确保在VirtualBox配置中启用UDP端口转发。例如,在Mac控制台上:

for i in {10000..10999}; do
    VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i";
    VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i";
done

过去报道过MySQL 5.7 Reference Manual / ... / Server System Variables

答案 1 :(得分:0)

尝试将Docker容器的网络模式设置为“host”。

即。 1)如果您使用“docker run”运行容器,则附加选项“net = host” 2)如果你使用docker-compose运行,那么在tftp服务定义块下,添加“network-mode = host”行