У меня похожая проблема обсуждалась в Не удается подключиться к 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>
ВМ:
docker-machine env
.Как говорится в документации 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}