Я выполнил следующую команду, чтобы перенаправить порты 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/
вернулся немедленно.