【发布时间】:2014-12-27 05:56:42
【问题描述】:
这个问题是我继续探索 Docker 的一部分,并且在某些方面是对我的earlier questions 之一的跟进。我现在明白了如何通过将一堆 Docker 容器链接在一起来获得完整的应用程序堆栈(实际上是一个迷你 VPS)。例如,可以创建一个堆栈,为 Apache + PHP5 提供一系列扩展 + Redis + MemCached + MySQL,所有这些都运行在 Ubuntu 之上,有或没有额外的数据容器,以方便序列化用户数据。
一切都非常漂亮和优雅。然而,我不禁想知道......运行那个小 VPS 的 5 个容器(我数 5 而不是 6,因为 Apache + PHP5 进入一个容器)。那么假设我有 100 个这样的 VPS 正在运行?这意味着我有 500 个容器正在运行!我理解这里的论点 - 编写新的应用程序堆栈、更新堆栈的一个组件等很容易。但是以这种方式操作没有不必要的开销吗?
假设我这样做了
- 将我所有的应用程序放在一个容器中
-
写一个小shell脚本
!/bin/bash 服务 memcached 启动 服务 redis 服务器启动 …… 服务 apache2 启动 尽管: 做 : 完成
在我的 Dockerfile 中有
ADD start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh
....
ENTRYPOINT ["/bin/bash"]
CMD ["/usr/local/bin/start.sh"]
然后我让那个容器启动并运行
docker run -d -p 8080:80 -v /var/droidos/site:/var/www/html -v /var/droidos/logs:/var/log/apache2 droidos/minivps
我在做生意。现在,当我想以编程方式关闭该容器时,我可以通过执行一个 docker 命令来实现。
使用 Google 搜索会发现许多类似性质的问题。除了我在上面重复的论点之外,对于每个容器一个应用程序方法给出的最常见原因之一是“这就是 Docker 的设计工作方式”。我想知道什么
- 运行 N 个链接容器的 x100 实例有哪些缺点 - 在主机上通过速度、内存使用等进行权衡?
- 我在这里所做的有什么问题?
【问题讨论】:
-
可能想看看这个phusion.github.io/baseimage-docker 开发人员,它解决了当多个应用程序在 Docker 映像中运行时存在的大多数问题
标签: docker