无法连接到docker公布端口的tftp

我拼命试图在Docker容器中运行tftp-hpa。 我从dockerfilebuild立了一个图像,然后启动它:

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,我看到我的主机上的端口69是打开的。 我尝试了与httpd服务器和端口80完全相同的情况。它在这里工作,我可以在我的浏览器中通过127.0.0.1:80访问网站。 主机是Ubuntu 15.04英特尔和docker的形象是基于Debian的基础形象。

有谁能够帮助我? 有什么我可以错过? 任何想法如何debugging? 我会高兴地分享我的Dockerfile或更多的信息,但试图保持简短的问题。

你用的是boot2docker吗? 如果是,则确保在VirtualBoxconfiguration中启用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 

过去有几个boot2docker UDP问题报告。

尝试将您的Docker容器的networking模式设置为“主机”。

即1)如果你正在运行你的容器使用“docker运行”,然后附加选项“净=主机”2)如果您使用docker-compose运行,然后在tftp服务定义块添加行“networking模式=主办”