【问题标题】:Docker - container with multiple imagesDocker - 具有多个图像的容器
【发布时间】:2014-05-13 16:04:08
【问题描述】:

我想制作一个包含多个镜像的 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"] 

【问题讨论】:

  • 请展示您到目前为止所做的尝试。这将帮助人们更好地回答您的问题,并为您提供更好的学习体验。

标签: image rabbitmq containers docker


【解决方案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)。

或者,您可以使用常规的初始化系统,检查此基础映像:ubuntu-upstart。这将允许你只需要在你的 Dockerfile 中安装包,并通过在你的 Dockerfile 中将 /sbin/init 指定为 EntryPointCMD 来自动启动它们。

【讨论】:

  • 这是我目前所拥有的code FROM stackbrew/ubuntu:12.04 MAINTAINER BPetkov # 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 VOLUME ["/var/lib/mysql"] EXPOSE 3306 CMD ["/usr/local/bin/run"]
  • 感谢您的帮助,我仍然无法弄清楚如何执行此操作,dockerfile 将无法构建。
【解决方案2】:

您要查找的功能是Docker Compose

【讨论】:

  • Compose 创建多个容器,其中包含 1 - 1 个不同的图像。我们也可以与每个容器进行通信,但它对 scal 没有帮助。你能用 Kubernetes 或 swarn 管理它吗
猜你喜欢
  • 2022-01-19
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 2017-10-05
  • 1970-01-01
  • 2018-12-05
相关资源
最近更新 更多