Mongodb官方镜像errno:111尝试创build复制数据库时连接被拒绝

我正在尝试使用官方的MongoDB docker镜像在一个容器内创build一个3集复制集群。

遵循这个官方指南,我创build了以下dockerfile:

FROM mongo:3.2 RUN mkdir -p /srv/mongodb/rs0-0 /srv/mongodb/rs0-1 /srv/mongodb/rs0-2 CMD mongod --port 27017 --dbpath /srv/mongodb/rs0-0 --replSet rs0 --smallfiles --oplogSize 128 & CMD mongod --port 27018 --dbpath /srv/mongodb/rs0-1 --replSet rs0 --smallfiles --oplogSize 128 & CMD mongod --port 27019 --dbpath /srv/mongodb/rs0-2 --replSet rs0 --smallfiles --oplogSize 128 & CMD mongo --port 27017 --eval 'rs.initiate({_id: "rs0",members: [{_id: 0,host: "localhost:27017"}]})' CMD mongo --port 27017 --eval "printjson(rs.conf())" CMD mongo --port 27017 --eval 'rs.add("localhost:27018")' CMD mongo --port 27017 --eval 'rs.add("localhost:27019")' CMD mongo --port 27017 --eval "printjson(rs.status())" 

但是当我运行它,我得到以下错误:

  MongoDB shell version: 3.2.9 connecting to: 127.0.0.1:27017/test 2016-09-04T06:53:06.664+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused 2016-09-04T06:53:06.664+0000 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed : connect@src/mongo/shell/mongo.js:231:14 @(connect):1:6 
  exception: connect failed 

当我运行原始的mongo镜像并尝试运行相同的CMD时,我并不相同。

我试图添加USER root到Dockerfile,但是根本没有任何帮助。

我能做些什么来完成这项工作?

更新

  • 也试图从ubuntu开始创build一个映像,结果相同
  • 那么,这似乎是某种泊坞窗文件权限问题。 当我将代码移动到bash脚本并从那里运行时,一切正常。 这不是为什么发生这种情况的答案,而是一个解决scheme,如果你需要的话。

您的dockerfile不起作用,因为您已经放入了多个CMD,这是无效的。

该文件说:

Dockerfile中只能有一个CMD指令。 如果列出多个CMD,则只有最后一个CMD才会生效。