2015-07-27 2 views
1

Я отчаянно пытаюсь запустить tftp-hpa в контейнере докера. Я построил изображение с dockerfile и запустить его с:Не удается подключиться к порту, опубликованному докере для tftp

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

Это и работает, и я могу получить доступ к серверу через виртуальный интерфейс Docker:

[email protected]$ tftp 172.17.0.79 
tftp> get /srv/tftp/test 
Received 7 bytes in 0.0 seconds 

Но из-моему -p 69: 69/УДП переключатель должен направить 69 порт моего хозяина машины в контейнеры порт 69. Но это не похоже на работу:

[email protected]$ tftp localhost 
tftp> get /srv/tftp/test 
Transfer timed out. 

от netsta t, я вижу, что порт 69 на моей хост-машине открыт. Я пробовал точно такой же сценарий с сервером httpd и портом 80. Он работает здесь, я могу получить доступ к веб-сайту через 127.0.0.1:80 в моем браузере. Хост-компьютер - это ubuntu 15.04 intel, а изображение докеры основано на базовом изображении debian.

Может кто-нибудь мне помочь? Есть ли что-то, что я мог пропустить? Любые идеи отладки? Я с радостью расскажу о своем файле Dockerfile или о какой-либо дополнительной информации, но постараюсь держать короткий вопрос.

+0

Является ли ваша проблема чем-то подобным этому? http://serverfault.com/questions/599101/tftpd-allows-connections-but-times-out-transferring-a-file – Viswesn

+0

убедитесь, что tfpt не привязывается к localhost, но все интерфейсы (0.0.0.0) – milan

+0

@milan Сервер tftp действительно связан со всеми интерфейсами. В противном случае я не смог бы подключиться к его интерфейсу докеров в 172.17.0.79. –

ответ

0

Вы используете boot2docker? Если да, то убедитесь, что перенаправление портов UDP включено в вашей конфигурации VirtualBox. Например, на консоли 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 

В прошлом были several boot2docker UDP issues сообщили.

+0

Спасибо за ваш ответ, но хост-компьютер не является ubuntu 15.04 64-разрядным без каких-либо виртуальных ботов. Это, кажется, общая проблема, но не для меня: / –

0

Попробуйте установить сетевой режим контейнера Docker на «host».

т.е. 1), если вы используете свой контейнер с помощью «Docker запустить», а затем добавить опцию «чистый = хост» 2), если вы работаете с помощью докер-Compose, затем в блоке определения TFTP услуг, добавить line "network-mode = host"

Смежные вопросы