0

我想在我的 Google Cloud Build 的某个步骤中构建一些 docker 映像,然后在另一个步骤中推送它们。我认为这里使用的 CI 并不重要。

这是因为一些推送命令依赖于其他一些条件,我不想重新构建图像。

我可以在已安装的工作区中docker save进行一些操作,然后再进行操作。然而,这相当缓慢。有没有更好的策略?我想过尝试复制到/从,但这似乎是不明智的。tardocker load/var/lib/docker

4

1 回答 1

2

这里的关键是从您完成 docker build 的同一主机上执行 docker push。

但是,docker 构建不需要在 CICD 构建机器本身上进行,因为您可以将其本地 docker 客户端指向远程 docker 主机。

要将 docker 客户端指向远程 docker 主机,您需要设置三个环境变量。

在 Linux 环境中:

DOCKER_HOST=tcp:<IP Address Of Remote Server>:2376
DOCKER_CERT_PATH=/some/path/to/docker/client/certs
DOCKER_TLS_VERIFY=1

这是一个非常强大的概念,有很多用途。例如,可以指向一个 dev|tst|prod docker swarm manager 节点。或者,从 Linux 指向远程 Windows 机器并启动 Windows 容器的构建。如果您有通用 CICD 工具来实现一些您希望也用于 Windows 容器的专有图像标签,则后一种用例可能会很有用。

这里的身份验证是双向 SSL/TLS,因此需要使用公共 CA 生成客户端和服务器私钥/公钥。起初这可能有点棘手,因此您可能希望首先使用环境设置快捷方式来了解它是如何使用 docker-machine 工作的: https ://docs.docker.com/machine/reference/env/

一旦您掌握了这个概念,您就需要在 CICD 脚本中编写这些环境变量的设置脚本,从而以安全的方式提供客户端证书。

于 2019-10-28T01:15:12.127 回答