我想在一个容器中创建一个包含多个图像的Dockerfile。
最好的方法是什么?下面列出了我想在一个容器中运行的内容。我没有运气制作包含所有这些的Dockerfile。
这是我到目前为止,我可以得到一些提示
FROM stackbrew/ubuntu:12.04
MAINTAINER
# Update the repository sources list #RUN apt-get update
# My SQL Server ###############
RUN apt-get
update -qq && apt-get
install -y mysql-server-5.5
ADD my.cnf /etc/mysql/conf.d/my.cnf
RUN chmod 664 /etc/mysql/conf.d/my.cnf
ADD run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run V
OLUME ["/var/lib/mysql"]
EXPOSE 3306
CMD ["/usr/local/bin/run"]
答案 0 :(得分:1)
你不能让多个图像在一个容器中运行",这是没有意义的。
但您可以编写 Dockerfile 来创建将安装您提及的所有服务的映像。示例(Ubuntu / Debian发布):
[...header...]
FROM stackbrew/ubuntu:12.04 #or use ubuntu-upstart:12.04
MAINTAINER BPetkov
# Update the repository sources list
RUN apt-get update -qq
# Mysql
RUN apt-get install -y mysql-server-5.5
ADD my.cnf /etc/mysql/conf.d/my.cnf
RUN chmod 664 /etc/mysql/conf.d/my.cnf
ADD run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run
# Other stuff
RUN apt-get -y install rabbitmq
RUN apt-get -y install nodejs
[...]
VOLUME ["/var/lib/mysql"]
EXPOSE 3306
EXPOSE .......
CMD ["/sbin/init"]
然后你必须在容器启动时自动启动它们。
您可以使用流程管理器,例如supervisord(Docker文档here)。
或者,您可以使用常规init系统,检查此基本映像:ubuntu-upstart。通过将 / sbin / init 指定为EntryPoint
或CMD
,您可以只需在Dockerfile中安装软件包并自动启动它们。你的Dockerfile。
答案 1 :(得分:0)
您正在寻找的功能是Docker Compose。