Mongodb官方图片错误:111尝试创建replicaset时拒绝连接

时间:2016-09-04 06:58:15

标签: mongodb docker mongodb-replica-set

我正在尝试使用官方MongoDB docker镜像在单个容器中创建一个3组复制群集。

this官方指南后,我创建了以下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开始创建图像,结果相同
  • 好吧,这似乎是某种docker文件权限问题。当我将代码移动到bash脚本并从那里运行时,一切正常。这不是为什么会发生这种情况的答案,而是一个解决方案,如果你需要它。

1 个答案:

答案 0 :(得分:0)

你的dockerfile无效,因为你输入了多个CMD,这是无效的。

documentation说:

  

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