本节书摘来自异步社区《Docker生产环境实践指南》一书中的第2章,第2.1节,作者: 【美】Joe Johnston(乔•约翰斯顿)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
第2章 技术栈
生产环境的Docker设置包括了一些基本的架构组件,这些组件对运行容器化的及传统的服务器集群来说是通用的。在很多方面,可以简单地认为构建和运行容器的方式与当前构建和运行虚拟机的方式是一样的,只是使用了一套新的工具和技术。
(1)构建并保存镜像快照。
(2)将镜像上传到仓库中。
(3)下载镜像到某台宿主机中。
(4)以容器方式运行镜像。
(5)将容器连接到其他服务上。
(6)路由流量到容器中。
(7)将容器日志发送到指定位置。
(8)监控容器。
与虚拟机不同的是,容器通过将宿主机(裸机或虚拟机)与应用程序服务隔离,从而提供了更高的灵活性。这为构建和配备流程带来了直接的改善,但由于额外的容器嵌入层,会增加一些开销。
典型的Docker技术栈将包括用于解决以下关注点的组件:
构建系统;
镜像仓库;
宿主机管理;
配置管理;
部署;
编排;
日志;
监控。
2.1 构建系统
如何构建镜像,并将其推送到镜像仓库中?
Dockerfile位于何处?
构建Docker镜像通常有以下两种方式。
(1)在开发人员电脑上手工构建,然后推送到到仓库中。
(2)使用CI/CD系统在代码提交时自动构建。
理想的Docker生产环境将使用类似Jenkins或Codeship这样的CI/CD(配置集成/持续部署)系统,在代码提交时自动构建镜像。一旦容器构建完毕,它将被发送到镜像仓库中,自动化测试系统就可以从中下载并运行该镜像。