Docker没有';如果无法启动MONGODB,则IPAddress不会';当使用其他服务启动时,不显示

Docker没有';如果无法启动MONGODB,则IPAddress不会';当使用其他服务启动时,不显示,mongodb,rabbitmq,docker,sshd,systemd,Mongodb,Rabbitmq,Docker,Sshd,Systemd,我已经在serverfault.com上问过这个问题。我在这里也是这么问的,因为我在这两个网站上看到了不同的问题集(看起来他们有不同的数据库) 我一直在尝试从Fedora构建操作系统映像,但未能成功启动以下操作: 系统的 固态硬盘 兔子 蒙哥达 我可以让前3个(Systemd、SSHD和RabbitMQ服务器)工作。我还可以让MongoDB在容器中工作。但是,我无法让MongoDB与其他3个服务一起工作 此外,当我尝试“dockerize”MongoDB时,IP地址不会显示 我在Dockerfi

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

我一直在尝试从Fedora构建操作系统映像,但未能成功启动以下操作:

  • 系统的
  • 固态硬盘
  • 兔子
  • 蒙哥达
  • 我可以让前3个(Systemd、SSHD和RabbitMQ服务器)工作。我还可以让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"]
    
    来自fedora:20 维护者“阿什法库” 环境集装箱装卸工 运行yum-y更新;清除所有缓存 运行yum-y安装systemd;百胜全洁\ (cd/lib/systemd/system/sysinit.target.wants/;for i in*;do[$i==systemd-tmpfiles-setup.service]| | rm-f$i;完成)\ 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/*; #对SSH进行docking-正在工作 运行yum-y安装openssh服务器 运行yum-y安装openssh客户端 运行mkdir/var/RUN/sshd 运行systemctl enable sshd.service 运行echo“root:mypassword”| chpasswd 暴露22 #对接RabbitMQ-正在工作 运行yum-y安装rabbitmq服务器 曝光567215672 运行systemctl启用rabbitmq服务器 #Dockerizing MongoDB-不起作用 运行yum-y安装mongodb服务器 运行yum-y安装boost 运行yum-y安装scons #创建MongoDB数据目录 运行mkdir-p/data/db/var/log/mongodb/var/RUN/mongodb 运行sed-i的/dbpath=\/var\/lib\/mongodb/dbpath=\/data\/db/'/etc/mongodb.conf #将端口27017从容器暴露到主机 曝光27017 #将usr/bin/mongod设置为停靠的入口点应用程序 入口点[“/usr/bin/mongod”] #CMD[“--port”、“27017”、“--dbpath”、“/data/db”、“--smallfiles”、“--fork”、“--syslog”] #运行/usr/bin/mongod--smallfiles--port 27017--dbpath/data/db--fork--syslog 卷[“/sys/fs/cgroup”、“/data/db”、“/var/log/mongodb”、“/usr/bin”] CMD[“/usr/sbin/init”] 用于生成的Docker命令包括:

    (1)
    docker build-t rabbitmq\u mongo\u 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中同时使用
    入口点
    CMD
    。这意味着docker将使用默认参数
    /usr/sbin/init
    运行
    /usr/bin/mongod
    。我很确定这不是你想要的

    只要您指定的命令正在运行,Docker就会运行。我不确定
    /usr/bin/mongod
    ,但是如果它在守护进程模式下运行(即,生成一个进程并返回),那么容器将立即停止运行。生成的进程将被终止。这同样适用于
    /usr/sbin/init
    或您指定的任何其他命令。您可以编写一个小的shell脚本,它生成进程并在前台运行一个进程,或者您可以使用,或者其他类似的工具


    此外,您可能不需要在容器中运行
    sshd
    。查看原因。

    有关运行/启动MongoDB时失败的具体原因的一些信息将有助于提供任何建议。有指向那个的日志吗?您是否能够安装MongoDB,然后无法启动它或以其他方式启动它。当我在交互模式下运行时,它会抛出一个错误:“无效命令:/usr/sbin/init”。在守护进程中,我无法SSH到容器中(因为它不会启动,IP地址也不会被占用)。感谢您提供的信息性响应。SSH:我需要SSH,因为我希望我的3个守护进程在容器中运行(以及rabbitmq/etc),稍后在登录后运行另外2个应用程序。我这里有一个问题-运行几个守护进程不是一种正确的方法吗?MongoDB:我确实尝试过使用CMD(注释掉它是为了指出我尝试过的一些尝试和错误场景。例如,我使用了一个用逗号分隔的CMD)CMD[“/usr/sbin/init”[“/usr/sbin/init”、“--port”、“27017”、“--dbpath”、“/data/db”、“--smallfiles”、“--fork”、“--syslog”]这个场景有正确的方法吗?实际上,你的回答回答了我的问题。谢谢我可以在看了你的回复后设置它。以下是我所做的:1。注释掉入口点2。在容器中运行以下命令:chown mongod:mongod/data/db chmod 0755/data/db useradd mongodb groupadd mongodb chown mongod:mongod/data/db systemctl start mongod.service touch/data/db/mongod.lock chown mongod:mongod/data/db/mongod.lock/usr/bin/mongod——我从中提取的小文件容器中的历史记录。有些可能是多余的,不必要的;无论如何,他们都会抛出一个错误。