首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongodb在通过docker编写运行时无法在主机上访问,但通过docker工作。

Mongodb在通过docker编写运行时无法在主机上访问,但通过docker工作。
EN

Stack Overflow用户
提问于 2017-10-25 00:57:33
回答 2查看 1.6K关注 0票数 2

我试图从主机(仅为开发目的)连接到码头容器中的mongodb,但没有任何成功。我有下面的码头-撰写文件。

代码语言:javascript
运行
复制
version: '2.2'
services:
  mongo:
    image: mongo
    ports:
      - "27017:21017"

当我试图连接到它时,我会得到以下错误:

代码语言:javascript
运行
复制
C:\Program Files\MongoDB\Server\3.4\bin>mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
2017-10-25T03:48:53.331+0300 E QUERY    [thread1] Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:27017'  :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

但是如果我不直接作曲就启动它。

代码语言:javascript
运行
复制
docker run --name my_mongox6 -d -p 27017:27017 mongo

它应该与上面的坞-组合文件相当。而且它工作得很好

代码语言:javascript
运行
复制
C:\Program Files\MongoDB\Server\3.4\bin>mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
Server has startup warnings:
2017-10-25T00:49:58.983+0000 I STORAGE  [initandlisten]
2017-10-25T00:49:58.983+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-10-25T00:49:58.983+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-10-25T00:49:59.076+0000 I CONTROL  [initandlisten]
2017-10-25T00:49:59.076+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-10-25T00:49:59.076+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-10-25T00:49:59.076+0000 I CONTROL  [initandlisten]

版本

代码语言:javascript
运行
复制
c:\Program Files\MongoDB\Server\3.4\bin>docker --version
Docker version 17.09.0-ce, build afdb6d4

c:\Program Files\MongoDB\Server\3.4\bin>docker-compose --version
docker-compose version 1.16.1, build 6d1ac219

我使用的是通过超级V运行的窗口。

我的撰写文件有什么问题,以及为什么它通过docker运行而不是通过docker-组合工作。我抓挠我的头,在谷歌上搜索了几个小时

其他端口共享通过坞-撰写(例如,nginx,postgresql)工作非常好。

更新

让我的朋友去试一试。同样的行为。因此,它的可复制性和它完全不特定于windows。工作通过码头,而不是通过码头-撰写工作。即使当我试图通过telnet连接时,mongo日志也会显示在通过docker运行时的连接尝试,但在通过compose运行时没有显示任何结果。

我也看到了码头ps在运行时通过撰写与运行时通过码头。

组合中的端口列为

代码语言:javascript
运行
复制
 ( 27017/tcp, 0.0.0.0:27017->21017/tcp ) 

vs

代码语言:javascript
运行
复制
(0.0.0.0:27017->21017/tcp ) 

码头本身。

它错过了第一个27017/tcp部分,这可能是问题所在,但不知道原因。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-25 18:09:56

好吧,这个问题是非常愚蠢和简单的。

港口:- "27017:21017“

第二个端口21017而不是27017。如何因为错误而浪费一整天

票数 4
EN

Stack Overflow用户

发布于 2017-10-25 01:38:08

如果您在linux上,它可以正常工作。当您在windows中运行容器时,您需要执行端口远距离操作。

代码语言:javascript
运行
复制
netsh interface portproxy add v4tov4 listenport=27017 listenaddress=localhost connectport=27017 connectaddress=192.168.99.100(IP of the Docker)

无论调用开始回滚,它都将被重定向到带有停靠主机的容器。

下面是关于用Windows主机的解决方案在窗口中进行端口远放的帮助性讨论

这一行我使用的窗口是通过超级v.运行的窗口,假设您在windows和停靠将不是环回(127.0.0.1),您必须转发端口。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46922237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档