Docker-Mongodb - Como se conectar à imagem mongo no Windows 10 local

1

Estou tentando conectar-me ao docker mongo image em minha máquina local do windows, instalei o mongodb no local e incluí o caminho do bin mongodb na variável de ambiente do caminho do windows. E estou fazendo os passos abaixo

cd <docker-location>

docker login

docker ps

-- to check already mongo running

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 

Saída: MongoDB começando: pid = 6 porta = 27017 dbpath = / data / db host de 64 bits = moby     docker ps Saída:

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

inicie o mongo no local:

mongo --port 27017

Mas estou recebendo um erro assim:

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

Por favor, deixe-me saber onde eu cometi erros.

    
por Sun 14.10.2016 / 07:06

1 resposta

2

Não use --net=host . Parece que você está pedindo ao docker para publicar a porta, pois forneceu a opção -p 27017:27017 , mas --net=host solicita ao Docker que desligue todos os recursos de isolamento da rede, incluindo a publicação de porta.

O Docker-for-windows configura uma pequena VM em hyperv onde o Docker é executado. Seu contêiner --net=host acaba escutando as interfaces dessa VM. O encaminhamento de porta de rede do Docker-for-windows presta atenção apenas a portas publicadas, e é por isso que nenhum encaminhamento está acontecendo.

Se você executar o mesmo comando sem --net=host , deverá obter um resultado diferente.

Às vezes, se você tentar executar um processo em contêiner e a porta publicada não estiver funcionando, é porque o processo está escutando na interface lo0 do contêiner e não na interface eth0 .

Aqui está um bom contêiner de teste de benchmark para testar as portas de publicação:

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

Você deve então se conectar ao link e ver uma página de boas-vindas do nginx.

    
por 18.10.2016 / 17:00