Назад | Перейти на главную страницу

Не удается подключиться к MongoDB в докере на хосте Windows

У меня похожая проблема обсуждалась в Не удается подключиться к MongoDB в докере.

я использовал docker run --name mongo2 -p 127.0.0.1:27017:27017 mongo для создания контейнера MongoDB.

Когда я подключаюсь к контейнеру (docker -it mongo2 /bin/bash), Я могу подключиться к Mongo через mongo localhost:27017.

Я также проверил с netstat что Монго слушает 0.0.0.0:27017, а не только localhost.

Тем не менее, я не могу подключиться с моего хоста Windows к контейнеру. Я даже попытался отключить брандмауэр Windows, но все равно ничего:

rs@ausus:~$ telnet localhost 27017
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Любые идеи?

На самом деле ответ дается в первом комментарии (и он решил для меня ту же проблему), но его легче найти, когда он находится в разделе ответов.

В ответе предполагается, что вы используете Docker Toolbox.


Вместо бега:

docker run --name mongo2 -p 127.0.0.1:27017:27017 mongo

необходимо запустить следующую команду:

docker run --name mongo2 -p <ip of boot2docker VM>:27017:27017 mongo

Чтобы получить <ip of boot2docker VM> ВМ:

  1. Перейдите в VirtualBox -> выберите виртуальную машину «по умолчанию» -> нажмите кнопку «Показать».
  2. Выполните команду: docker-machine env.
  3. IP-адрес виртуальной машины будет на выходе.

Как говорится в документации Docker на https://hub.docker.com/_/mongo/ : "Это означает, что невозможно запустить контейнер MongoDB с каталогом данных, сопоставленным с хостом"

Наконец-то я сделал .bat сценарий, который определяет мой IP-адрес Win10 и сопоставляет его с переменной. Я запускаю MongoDB прямо на моем Win10, а затем получаю к нему доступ по IP. Я не этого хочу, но это работает.

startup.bat:

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip=%%b
set DOCKERHOST=%ip:~1%
docker-compose up

docker-compose.yml:

environment:
     - MONGO_HOST=${DOCKERHOST}