Docker没有';如果无法启动MONGODB,则IPAddress不会';当使用其他服务启动时,不显示
我已经在serverfault.com上问过这个问题。我在这里也是这么问的,因为我在这两个网站上看到了不同的问题集(看起来他们有不同的数据库) 我一直在尝试从Fedora构建操作系统映像,但未能成功启动以下操作: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
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——我从中提取的小文件容器中的历史记录。有些可能是多余的,不必要的;无论如何,他们都会抛出一个错误。