1

Я пытаюсь подключиться к образу 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

Не используйте --net=host . Похоже, вы просите докер опубликовать порт, так как вы указали опцию -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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .