Почему boot2docker и переадресация портов на мои экземпляры docker периодически зависают?

Я выполнил следующую команду, чтобы перенаправить порты sinatra и redis на мой экземпляр докера, работающий в виртуальном боксе на OSX:

ports=( 4567 6379 )
for port in "${ports[@]}"
do
echo "Forwarding $port"
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcpport$port,tcp,,$port,,$port"
done

Однако периодически (например, каждые 60 секунд) запросы к любому из этих экземпляров докеров через общедоступный IP-адрес моей машины, исходящие с моей машины, будут зависать на 40-60 секунд. Однако мой экземпляр докера исправен, и я могу подключиться напрямую через 192.168.59.103.

Итак, зачем такое соединение, как:

redis-cli -h 192.168.1.1 PING

Периодически зависают, но

redis-cli -h 192.168.59.103 PING

Всегда работать? Есть ли какая-то ошибка в VirtualBox или boot2docker?

Более того, в периоды зависания этих запросов я заметил, что обращения к

boot2docker ip

и

boot2docker ssh

Сами оба висят. Я использую boot2docker 1.6.2 и VirtualBox 4.3.28 на OSX 10.10.3.

Дополнительная отладка показывает, что связь между экземплярами теперь также нарушена. Я связал два контейнера, и периодически между ними будут висеть HTTP-запросы. Я дошел до того, что запустил telnet container_name 4567, затем набрал

GET /

Что, конечно же, является самым простым способом тестирования веб-сервера. Изнутри container_name я запустил curl http://localhost:4567/. Запрос телнета завис, но curl http://localhost:4567/ вернулся немедленно.


person esilver    schedule 15.05.2015    source источник


Ответы (1)


Это одна из основных причин, по которой мы добавили дополнительный интерфейс только для локального хоста (192.168.59.103) - переадресация портов bat для виртуального ящика ужасна и очень ненадежна.

person SvenDowideit    schedule 17.05.2015
comment
Хорошо понял - спасибо за эту информацию! Похоже, что это, вероятно, (известная?) ошибка VirtualBox. - person esilver; 17.05.2015