【问题标题】:Connect to mongodb on centos7 docker image在centos7 docker镜像上连接mongodb
【发布时间】:2017-03-07 06:27:24
【问题描述】:

我是 docker 新手(1 天),我想为新人制作一个包含完整环境的图像。

所以我刚刚在我的图像上安装了 mongodb:

RUN echo $'[mongodb-org-3.2] \n\
name       = MongoDB Repository \n\
baseurl    = https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ \n\
gpgcheck   = 1 \n\
enabled    = 1 \n\
gpgkey     = https://www.mongodb.org/static/pgp/server-3.2.asc' > /etc/yum.repos.d/mongodb-org.repo
RUN yum install -y mongodb-org

但是当我使用 sudo docker run -t -i myimage /bin/bash 运行它并尝试使用 systemctl start mongod 启动 mongo 时,我收到了这个错误:

获取 D-Bus 连接失败:不允许操作

【问题讨论】:

    标签: bash mongodb docker


    【解决方案1】:

    您是否正在尝试创建自定义版本的 Mongo DB docker 镜像?如果没有,您可以使用 docker 存储库中已经存在的 mongo DB 映像。

    如果你只想在 docker 中只有 mongo DB,你可以用

    docker run mongo
    

    这将从存储库下载 mongo 图像。否则,如果你想在 docker 容器中拥有多个软件(如 redis 等),那么你可以让 docker compose 文件的内容与此类似

      mongo:
        image : mongo
        ports : 
          - "<your_mongodb_port>:27017"
      redis:
        image: redis
        ports: 
          - "<your_redis_port>:6379"
    

    端口配置是可选的

    docker-compose up 会同时启动 mongo db 和 redis。

    【讨论】:

    • 就是这样!!我已经找到了,我想发布解决方案,但你先做了:) 是的 docker-compose 这是最好的解决方案,因为我有一个 mongo 实例、一个 redis 实例和一个节点 + express 应用程序连接到该 mongo 实例和所有映射有了我想要的端口,真是太棒了
    • nice @FernandoDelOlmo .. 继续和 docker 一起摇摆
    【解决方案2】:

    您必须记住,Docker 并不是要完全替代虚拟机。在您的情况下,您必须明确提及运行 systemd - 但您的起点是 /bin/bash

    所以我建议你改变起点,比如/usr/bin/mongod。分离应用程序也是一个好主意 - 因此有一个用于 Mongo 的容器,另一个用于 Redis 等 - 这就是 LXC/Docker 背后的目的。

    在冒险将应用程序容器化并开始分发之前,您还应该阅读更多内容并更深入地了解 Docker,以了解和欣赏其理念。

    希望对您有所帮助,祝您一切顺利!

    【讨论】:

    • 非常感谢,但我的任务是构建一个具有完整 env、node、mongo、redis 的图像....阅读您的答案我开始认为这是不可能的
    • 嗯,你可以..没有什么能阻止你,但不建议这样做。您可以将不同的应用程序容器化并使用 Docker“数据卷”跨容器访问持久数据 - 阅读更多相关信息。
    猜你喜欢
    • 2021-12-25
    • 2018-06-09
    • 2017-02-22
    • 2018-06-19
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多