Docker-Mongodb - Как подключиться к образу монго в Windows 10 локально

2390
Sun

Я пытаюсь подключиться к образу docker mongo на моем локальном компьютере с Windows, я установил mongodb на локальном компьютере и добавил путь к бину mongodb в переменную окружения Windows. И я делаю ниже шаги

cd <docker-location>  docker login  docker ps 

- чтобы проверить уже работает Монго

docker pull myrepo/mymongo-image:1.0 docker run -p 27017:27017 -d --net=host --name=mytestDB myrepo/mymongo-image:1.0  docker logs mytestDB  

Вывод: MongoDB запускается: pid = 6 порт = 27017 dbpath = / data / db 64-битный хост = мобильный докер ps Вывод:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 34598734598 myrepo/mymongo-image:1.0 "/bin/sh -c /usr/bin/" 12 hours ago Up About a minute mytestDB 

начать монго в местном:

mongo --port 27017 

Но я получаю ошибку, как это:

MongoDB shell version: 3.2.1 connecting to: 127.0.0.1:27017/test 2016-10-13T20:04:12.273+0530 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, reason: errno:10061 No connection could be made because the target machine actively refused it. 2016-10-13T20:04:12.277+0530 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed : connect@src/mongo/shell/mongo.js:226:14 @(connect):1:6  exception: connect failed 

Пожалуйста, дайте мне знать, где я ошибся.

1

1 ответ на вопрос

2
programmerq

Не используйте --net=host. Похоже, что вы просите docker опубликовать порт, так как вы указали -p 27017:27017опцию, но --net=hostпросит Docker отключить все функции изоляции сети, включая публикацию портов.

Docker-for-windows устанавливает небольшую виртуальную машину в гипервизоре, где работает Docker. Ваш --net=hostконтейнер в конечном итоге прослушивает интерфейсы этой виртуальной машины. Переадресация сетевых портов Docker-for-windows обращает внимание только на опубликованные порты, поэтому пересылка не происходит.

Если вы выполняете ту же команду без --net=host, вы должны получить другой результат.

Иногда, если вы пытаетесь запустить контейнерный процесс, а опубликованный порт не работает, это происходит потому, что процесс прослушивает lo0интерфейс контейнера, а не eth0интерфейс.

Вот хороший тестовый контейнер для запуска тестирования тестовых портов:

docker run --name testweb -d -p 8989:80 nginx:alpine 

После этого вы сможете подключиться к http://127.0.0.1:8989 и увидеть страницу приветствия nginx.

Похожие вопросы