跳到主要内容

Docker CLI

Buddy提供了构建测试部署Docker镜像所需的完整工具和服务集合。在流程中需要更多灵活性的用户可以使用Docker CLI操作。该操作在流水线附加到的 Git存储仓的相关联工件中在具有预安装Docker CLI的Ubuntu虚拟机上运行命令。

这对于需要以下运作的操作特别有用:

  • docker-compose
  • 对Docker容器的权限访问(Docker中的Docker)
  • 访问Docker daemon

Docker CLI in action roster

使用Docker CLI构建的Docker镜像不适用于流水线中的“推送镜像”和“运行惊喜”操作。换句话说,如果您想在虚拟机上构建镜像,然后将其推送到注册中心,则必须从CLI执行这两项操作。

缓存

运行操作时,Buddy将文件从流水线文件系统和存储仓的克隆复制到带有Docker的虚拟机。一旦完成后,输出将传输回文件系统(默认情况下是/home/ubuntu/build)并终止虚拟机。如果您正在从虚拟机构建或提取镜像,您可以附加驱动器来缓存镜像、层和容器,并加快交付过程。

要启用缓存,请转到选项并选中“将缓存驱动器附加到运行此操作的虚拟机”。这会将驱动器挂载到 /var/lib/docker 路径。

驱动器的默认空间为10GB。如果您需要更多空间,请联系客服。

与其他操作共享缓存

默认情况下,每个Docker CLI操作都使用自己附加到主机VM的缓存。如果您正在运行多个CLI操作,您可以通过选中“使用共享缓存驱动器”选项来强制它们共享同一个缓存。

请确保两个操作中范围和驱动器的标签相同。

并行运行

如果您并行运行共享同一缓存的两个操作,则第二个操作将创建另一个驱动器并独立使用,直到流水线运行之间的间隔超过7天(磁盘保留期)。

清除缓存

如果您清除流水线缓存,所有附加到Docker CLI操作的驱动器都将被删除 —— 即使它们与其他流水线中的操作共享。

例外的是清除缓存操作可让您精确定义应清除的内容。

共享缓存中的容器

如果您在操作中运行容器(例如:docker run --name mongo-db -d mongo)并且最后不手动终止,则容器镜像将保留在缓存中。这意味着如果您在另一个共享相同缓存的Docker CLI操作中运行容器,它将失败并出现如下错误:

docker: Error response from daemon: Conflict. The container name "/mongo-db" is already in use`.

要解决此问题,请使用命令 docker start 而不是 docker run 启动容器。例如:

$ docker start mongo-db

参看

流水线介绍

CI/CD进程中的Docker

标签推送Docker镜像