Docker - 具有多个图像的容器

use*_*313 6 containers image rabbitmq docker

我想制作一个包含多个图像的 Dockerfile 以在一个容器中运行。

解决这个问题的最佳方法是什么?下面是我想在单个容器中运行的列表。我在制作包含所有这些内容的 Dockerfile 方面没有任何运气。

  • MySQL服务器
  • 兔MQ
  • Java8
  • 节点.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"] 
Run Code Online (Sandbox Code Playgroud)

mba*_*emy 6

您不能“在一个容器中运行多个图像”,这是没有意义的。

但是您可以编写一个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"]
Run Code Online (Sandbox Code Playgroud)

然后,您必须在容器启动时自动启动所有这些。

您可以使用进程管理器,例如supervisord此处为Docker 文档)。

或者,您可以使用常规的 init 系统,检查此基本映像:ubuntu-upstart。这个人会允许你只需要安装的软件包你Dockerfile,并让他们没有任何努力自动启动,通过指定/ sbin目录/初始化EntryPointCMD在Dockerfile。