基于Linux的企业自动化实践:服务器的构建、部署与管理
上QQ阅读APP看书,第一时间看更新

4.2.4 Docker部署

Docker部署是我们在Linux环境中讨论的一个特例。实际上,它们与云环境有很多共同点,Docker映像是基于预先存在的最小OS映像构建的,并且通常使用本机Docker工具链构建,尽管使用Ansible的自动化是完全可能的。

由于Docker是一个特例,因此我们在本书中不重点讨论,不过需要注意的是,Docker作为Linux在企业中的一个新成员,它实际上是围绕我们在本书中已经考虑过的许多原则而设计的。让我们简要地研究一下用于创建官方nginx容器的Dockerfile。

对于那些不熟悉Docker的人来说,Dockerfile就是一个纯文本文件,其中包含构建用于部署的容器映像所需的所有指令和命令。

在编写本书时,此文件包含以下内容:

虽然不是基于Ansible,但我们可以在前面的代码块中看到以下内容:

1.靠近开头的FROM行定义了一个最小的Ubuntu基映像,在该映像上执行其余的配置,这可以被认为是我们已经针对其他平台讨论的SOE Linux映像。

2.RUN命令执行安装nginx软件包并采取必需的步骤执行一些内务处理,以保持映像整洁和最小化(减少空间需求和混乱)。

代码继续如下:

继续分析这个文件,我们可以看到以下内容:

1.VOLUME行定义了主机文件系统中哪些目录可以挂载在容器内。

2.WORKDIR指令告诉Docker在哪个目录运行它后面的CMD,我们可以把它看作一个引导时配置。

3.CMD行定义了容器启动时要运行的命令,这是在一个完整的Linux系统映像中定义哪些服务将在引导时启动的过程的缩影。

4.EXPOSE行定义容器应该向网络公开哪些端口。这可能有点像防火墙,允许某些端口通过。

简言之,构建Docker容器的本机过程与我们为企业Linux环境定义的构建过程非常一致,因此,我们可以放心地继续这个过程。考虑到这一点,我们现在将探索确保构建尽可能整洁和高效的过程。