我想创建基于ubuntu的容器并在其中安装Rabbitmq
我尝试了docker run -dit ubuntu:18.04
并在容器内手动安装Rabbitmq,以获得我的dockerfile的列表步骤。当我将dockerfile构建为docker映像时,它失败。并显示
Not creating home directory `/var/lib/rabbitmq'.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for libc-bin (2.27-3ubuntu1) ...
和
Error: unable to connect to node rabbit@2e1645badb1d: nodedown
DIAGNOSTICS
===========
attempted to contact: [rabbit@2e1645badb1d]
rabbit@2e1645badb1d:
* connected to epmd (port 4369) on 2e1645badb1d
* epmd reports: node 'rabbit' not running at all
no other nodes on 2e1645badb1d
* suggestion: start the node
current node details:
- node name: 'rabbitmq-cli-01@2e1645badb1d'
- home dir: /var/lib/rabbitmq
- cookie hash: WYOXjiEogBIOb2jBVZzkPw==
这是我的dockerfile
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install rabbitmq-server -y
RUN service rabbitmq-server start
RUN rabbitmq-plugins enable rabbitmq_management
RUN rabbitmqctl start_app
RUN rabbitmqctl add_user test1 test1
RUN rabbitmqctl set_user_tags test1 administrator
RUN rabbitmqctl set_permissions -p / test1 ".*" ".*" ".*"
EXPOSE 25672
EXPOSE 5672
EXPOSE 15672
EXPOSE 4369
它应该正常运行,因为我放入dockerfile的步骤是相同的。
这里有人可以告诉我怎么做
答案 0 :(得分:1)
简而言之:否。这些命令在您正在运行的容器中的工作方式与在build中的工作方式完全不同。
您执行的每个命令都会创建一个容器。然后,将在该容器中执行docker build命令(例如RUN),然后将其保存为映像。
保存图像后,重要进程正在运行。后台/守护进程无法与docker配合使用-这是设计使然;) 这意味着,如果可能的话,请避免在dockerfile中运行“ service start”之类的命令(因为该命令不会持续到下一层/命令。
我建议您使用RabbitMQ https://hub.docker.com/_/rabbitmq
提供的官方图片您可以在此处查看相关的Dockerfile的最新信息:https://github.com/docker-library/rabbitmq/blob/b8ca2ef2814cf35de476e763db94eb9706657f3c/3.8/ubuntu/Dockerfile
如果您仍然想使用Dockerfile,它需要看起来像这样(以保持进程运行)
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install rabbitmq-server -y
RUN service rabbitmq-server start && \
rabbitmq-plugins enable rabbitmq_management && \
rabbitmqctl start_app && \
rabbitmqctl add_user test1 test1 && \
rabbitmqctl set_user_tags test1 administrator && \
rabbitmqctl set_permissions -p / test1 ".*" ".*" ".*" && \
service rabbitmq-server stop
EXPOSE 4369 5671 5672 25672
CMD ["rabbitmq-server"]