gpt4 book ai didi

mongodb - 使用其他服务启动时,Docker不启动MONGODB,并且IPAddress不出现

转载 作者:行者123 更新时间:2023-12-02 21:29:43 27 4
gpt4 key购买 nike

我已经在serverfault.com上问了这个问题。我也在这里问这个问题,因为我在这两个站点中看到了不同的问题集(看起来好像他们有不同的数据库)。

我一直试图从Fedora构建操作系统镜像失败,无法启动以下操作:

  • Systemd
  • SSHD
  • RabbitMQ
  • MongoDB

  • 我可以使前三个(Systemd,SSHD和RabbitMQ-Server)正常工作。我还可以让MongoDB在容器中工作。但是,我无法让MongoDB与其他3个服务一起使用。

    另外,当我尝试“dockerize” MongoDB时,没有显示IP地址。

    我是否在Dockerfile中丢失了某些内容?

    这是我的dockerfile:
    FROM fedora:20
    MAINTAINER “Ashfaque” <ashfaque@email.com>
    ENV container docker
    RUN yum -y update; yum clean all
    RUN yum -y install systemd; yum clean all; \
    (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*;\
    rm -f /etc/systemd/system/*.wants/*;\
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*;\
    rm -f /lib/systemd/system/anaconda.target.wants/*;

    # Dockerizing SSH - is working
    RUN yum -y install openssh-server
    RUN yum -y install openssh-clients
    RUN mkdir /var/run/sshd
    RUN systemctl enable sshd.service
    RUN echo 'root:mypassword' |chpasswd
    EXPOSE 22

    # Dockerizing RabbitMQ - is working
    RUN yum -y install rabbitmq-server
    EXPOSE 5672 15672
    RUN systemctl enable rabbitmq-server

    # Dockerizing MongoDB - is NOT WORKING
    RUN yum -y install mongodb-server
    RUN yum -y install boost
    RUN yum -y install scons
    # Create the MongoDB data directory
    RUN mkdir -p /data/db /var/log/mongodb /var/run/mongodb
    RUN sed -i 's/dbpath =\/var\/lib\/mongodb/dbpath =\/data\/db/' /etc/mongodb.conf
    # Expose port 27017 from the container to the host
    EXPOSE 27017
    # Set usr/bin/mongod as the dockerized entry-point application
    ENTRYPOINT ["/usr/bin/mongod"]
    #CMD ["--port", "27017", "--dbpath", "/data/db", "--smallfiles", "--fork", "--syslog"]
    #RUN /usr/bin/mongod --smallfiles --port 27017 --dbpath /data/db --fork --syslog

    VOLUME ["/sys/fs/cgroup", "/data/db", "/var/log/mongodb", "/usr/bin"]
    CMD ["/usr/sbin/init"]

    用于构建的Docker命令为:

    (1) docker build -t rabbitmq_mongo_heisenbug .
    (2) docker run --privileged -d -e 'container=docker' -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 29022:22 -p 29672:15672 -p 29017:27017 rabbitmq_mongo_heisenbug
    或..(3) docker run --privileged -ti -e 'container=docker' -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 29022:22 -p 29672:15672 -p 29017:27017 rabbitmq_mongo_heisenbug

    最佳答案

    您正在Dockerfile中同时使用ENTRYPOINTCMD。这意味着docker将使用默认参数/usr/bin/mongod运行/usr/sbin/init。我很确定这不是您想要的。

    只要您指定的命令正在运行,Docker就会一直运行。我不确定/usr/bin/mongod,但是如果它以守护程序模式运行(即生成一个进程并返回),则该容器将立即停止运行。产生的进程将终止。 /usr/sbin/init或您指定的任何其他命令也是如此。您可以编写一个小的Shell脚本,以生成进程并在前台运行该脚本,也可以使用 runit 或类似的工具。

    另外,您可能不需要在容器中运行sshd。看到here为什么。

    关于mongodb - 使用其他服务启动时,Docker不启动MONGODB,并且IPAddress不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481107/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com