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或更多信息,但试图保持简短的问题。
答案 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”行