docker搭建环境的方式

刚学玩了基础的docker
装nginx我看到有2种方式
第一个A容器装centos 然后在A容器装nginx php mysql
第二个是 A容器装ngixn
B容器装mysql 然后在打通
用哪种比较好呢 如果是独立安装 好像里面的nginx没有yum装的东西多的

阅读 1.5k
2 个回答

真算起来其实有四种,不过严格意义上的的确就两种。

  1. 拉起系统镜像作为初始容器,手动安装所需软件并配置,但是有些违背 Docker 的初衷:一个容器只干一件事
  2. 类似(1),只不过是用 Dockerfile 声明,一般而言(2)写的好做出来的镜像体积会比(1)小一些
  3. 直接拉取官方制作的软件镜像,这个多数情况下会比(1)小很多,毕竟精简,所以你感觉没有 yum 装的多,但是对于 Nginx 这类软件来说,它的配置是可以通过 docker -v 外挂绑定配置文件所在的目录来灵活控制的,这样也更符合 Docker 的理念
  4. 基于1、2、3,使用 docker-compose 一类的编排技术,将配置(-v -e --link 等等)也都写成文件形式,利于传输和重复部署。

有时,多个进程使用一个容器可能更好的解决方案,特别是当进程一起用于完成其任务时。如想通过使用ELK(Elasticsearch,Logstash,Kibana)跟踪 Web 应用程序日志记录时,可以一起运行在一个容器内。

但对于大多数情况,最好每个容器使用一个进程。虽然将流程分成单独的容器通常是一个很好的经验法则,但这不是docker的主要好处/目的。docker的好处是不变性。如果将两个进程放入一个容器中可以获得更清晰的逻辑,但做无妨。虽然在这种情况下,我肯定会考虑至少将数据库剥离到自己的容器中,并通过 docker 链接与它通信。因为每次重建镜像时,数据库都不应该停机,更何况还要持久化。

另外,要区分开发与生产环境的差别, 开发时,开发效率是核心要素,能方便开发,提高效率就是好办法, 放在一起的LNMP显然更简单; 但生产环境考虑的是高可用,可扩展等特性,放在一起显然很难水平扩展。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题