Docker - 具有多个图像的容器

时间:2014-05-13 16:04:09

标签: image rabbitmq containers docker

我想在一个容器中创建一个包含多个图像的Dockerfile。

最好的方法是什么?下面列出了我想在一个容器中运行的内容。我没有运气制作包含所有这些的Dockerfile。

  • MySQL服务器
  • 的RabbitMQ
  • Java8
  • Node.js的
  • 的Xvfb
  • 火狐

这是我到目前为止,我可以得到一些提示

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"] 

2 个答案:

答案 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 指定为EntryPointCMD,您可以只需在Dockerfile中安装软件包并自动启动它们。你的Dockerfile。

答案 1 :(得分:0)

您正在寻找的功能是Docker Compose