首页 理论教育 完全Docker化的持续集成流程实战

完全Docker化的持续集成流程实战

时间:2023-11-05 理论教育 版权反馈
【摘要】:Docker Machine使得属于当前用户的整个目录在虚拟机内可用。在Docker v1.12版之前,Docker Machine是在Mac和Windows上运行Docker的唯一方法。从Docker v1.12版开始,出现了Docker for Mac和Docker for Windows,它们更适合较新的桌面和笔记本电脑。Docker for Mac和Docker for Windows的安装程序包括Docker Machine和Docker Compose。本书的例子假设你已安装1.13以上版本Docker Engine的Docker Machine v0.9,可以在Install Docker Machine页面找到安装命令。问题在于Hyper-V不允许安装主机卷,因此,建议在使用Docker Machine时使用Docker Toolbox。

完全Docker化的持续集成流程实战

每个持续集成过程都以从代码库检出的代码开始。本书将使用GitHub代码库vfarcic/go-demo(https://github.com/vfarcic/go-demo),它包含本书使用的服务代码。该服务是用Go编写的(https://golang.org/)。别担心!你不需要学习Go。我们仅使用go-demo服务演示和解释流程。所有例子都是与编程语言无关的。

本章中的所有命令都可以在01-continuous-integration.sh中找到(https://gist.github.com/vfarcic/886ae97fe7a98864239e9c61929a3c7c)。

给Windows用户的说明

请确保你的Git客户端配置为原样(AS-IS)检出代码。否则,Windows可能会将回车更改为Windows格式。

下面开始吧,看看go-demo代码:

有些文件将在主机文件系统和我们即将创建的Docker Machine之间共享。Docker Machine使得属于当前用户的整个目录在虚拟机内可用。因此,请确保代码在用户的某个子文件夹中检出。

现在已经从代码库中检出了代码,还需要一个服务器来构建和运行测试。我们将使用Docker Machine,因为它能在笔记本电脑上简单地创建Docker ready虚拟机。

Docker Machine(https://docs.docker.com/machine/overview/)可让你在虚拟主机上安装Docker Engine,并使用docker-machine命令管理主机。Docker Machine可以在本地Mac或Windows机器、公司网络、数据中心或云供应商(如AWS或DigitalOcean)上创建Docker主机。

使用docker-machine命令可以启动、检查、停止并重启被管理的主机,升级Docker客户端和守护程序,并配置Docker客户端与主机通信

在Docker v1.12版之前,Docker Machine是在Mac和Windows上运行Docker的唯一方法。从Docker v1.12版开始,出现了Docker for Mac和Docker for Windows,它们更适合较新的桌面和笔记本电脑。Docker for Mac和Docker for Windows的安装程序包括Docker Machine和Docker Compose。

本书的例子假设你已安装1.13以上版本Docker Engine的Docker Machine v0.9(https://www.docker.com/products/docker-machine),可以在Install Docker Machine(https://docs.docker.com/machine/install-machine/)页面找到安装命令。

给Windows用户的说明

建议从(通过Docker Toolbox和Git安装的)Git Bash运行所有示例。这样,使用的命令将与OSX或Linux系统上执行的相同。

给Linux用户的说明

Linux上的Docker Machine可能无法在虚拟机中挂载主机卷。这跟主机操作系统和Docker Machine操作系统都使用/home目录有关。从主机挂载/home将覆盖一些所需的文件。如果你在安装主机卷时遇到问题,请设置VIRTUALBOX_SHARE_FOLDER变量:(www.xing528.com)

如果已经创建了Docker机器,则必须销毁并再次创建。

请注意,此问题在较新的Docker Machine版本中已解决,因此,仅当你遇到未加载卷时才使用此解决方法(来自主机的文件在VM中不可用)。

使用下面的命令创建第一个名为go-demo的服务器。

给windows用户的说明

如果你使用的是Docker for Windows而不是Docker Toolbox,则需要将驱动程序从virtualbox更改为Hyper-V。问题在于Hyper-V不允许安装主机卷,因此,建议在使用Docker Machine时使用Docker Toolbox。选择在Docker Machine内部运行Docker而不是在主机上本地运行的原因在于需要运行一个集群(第2章将介绍)。Docker Machine是模拟多节点集群的最简单的方法。

该命令将virtualbox指定为驱动程序(如果你正在运行Docker for Windows,则指定为Hyper-V)并将machine命名为go-demo:

给Windows用户的说明

在某些情况下,Git Bash可能会认为它仍在以BAT批处理形式运行。如果你遇到docker-machine env命令的问题,请设置SHELL环境变量

现在机器正在运行,我们应该让本地Docker Engine使用它,请使用以下命令:

docker-machine env go-demo命令输出本地引擎所需的环境变量以查找我们想要使用的服务器。这种情况下,远程引擎位于我们使用docker-machine create命令创建的VM内部。

输出如下:

我们可以将env命令封装到一个执行输出的eval中,在本例中,使用以下命令创建环境变量:

从现在开始,我们在本地执行的所有Docker命令将会被引导到go-demo机器运行的引擎。

现在我们准备好运行CI流程的前两个步骤。下面将运行单元测试并构建服务的二进制文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈