我试图从主机(仅为开发目的)连接到码头容器中的mongodb,但没有任何成功。我有下面的码头-撰写文件。
version: '2.2'
services:
mongo:
image: mongo
ports:
- "27017:21017"当我试图连接到它时,我会得到以下错误:
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但是如果我不直接作曲就启动它。
docker run --name my_mongox6 -d -p 27017:27017 mongo它应该与上面的坞-组合文件相当。而且它工作得很好
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]版本
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在运行时通过撰写与运行时通过码头。
组合中的端口列为
( 27017/tcp, 0.0.0.0:27017->21017/tcp ) vs
(0.0.0.0:27017->21017/tcp ) 码头本身。
它错过了第一个27017/tcp部分,这可能是问题所在,但不知道原因。
发布于 2017-10-25 18:09:56
好吧,这个问题是非常愚蠢和简单的。
港口:- "27017:21017“
第二个端口21017而不是27017。如何因为错误而浪费一整天
发布于 2017-10-25 01:38:08
如果您在linux上,它可以正常工作。当您在windows中运行容器时,您需要执行端口远距离操作。
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),您必须转发端口。
https://stackoverflow.com/questions/46922237
复制相似问题