0

serverfault.com で既にこの質問をしています。これら 2 つのサイトで異なる一連の質問が表示されるため、ここでも質問しています (データベースが異なるようです)。

Fedora から OS イメージをビルドしようとして失敗しましたが、以下を開始しました。

  1. Systemd
  2. SSHD
  3. RabbitMQ
  4. モンゴDB

最初の 3 つ (Systemd、SSHD、RabbitMQ-Server) を動作させることができます。コンテナー内で MongoDB を動作させることもできます。ただし、MongoDB を他の 3 つのサービスと連携させることはできません。

さらに、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

4

1 に答える 1

2

Dockerfile でENTRYPOINTとの両方を使用しています。CMDこれは、docker が/usr/bin/mongodデフォルトのパラメーターで実行されることを意味します/usr/sbin/init。これはあなたが望むものではないと確信しています。

指定したコマンドが実行されている限り、Docker は実行されます。についてはわかりません/usr/bin/mongodが、デーモン モード (つまり、プロセスを生成して戻る) で実行すると、コンテナーはすぐに実行を停止します。生成されたプロセスは終了します。同じことが、または指定した他のコマンドにも当てはまり/usr/sbin/initます。プロセスを生成してフォアグラウンドで実行する小さなシェル スクリプトを作成するかrunit、または同様のツールを使用できます。

sshdまた、おそらくコンテナーで実行する必要はありません。理由はこちらをご覧ください。

于 2014-06-30T07:54:12.277 に答える