构建docker并在不同CI构建步骤中推进它的策略,无需tar

构建docker并在不同CI构建步骤中推进它的策略,无需tar,docker,continuous-integration,google-cloud-build,docker-build,docker-push,Docker,Continuous Integration,Google Cloud Build,Docker Build,Docker Push,我想在谷歌云构建的某个步骤中构建一些docker图像,然后在另一个步骤中推送它们。我认为这里使用的CI并不重要 这是因为一些推送命令依赖于其他一些条件,我不想重新构建图像 我可以docker保存到挂载的工作区中的一些tar,然后docker加载它。然而,这相当缓慢。有没有更好的策略?我曾想过尝试复制到/从/var/lib/docker,但这似乎是不明智的。这里的关键是从完成docker构建的同一主机上进行docker推送 但是,docker构建不需要在CICD构建机器本身上进行,因为您可以将其本

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

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


我可以
docker保存
到挂载的工作区中的一些
tar
,然后
docker加载
它。然而,这相当缓慢。有没有更好的策略?我曾想过尝试复制到/从
/var/lib/docker
,但这似乎是不明智的。

这里的关键是从完成docker构建的同一主机上进行docker推送

但是,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
DOCKER\u HOST=tcp::2376
DOCKER\u CERT\u 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,然后使用环境设置快捷方式,了解其工作原理:


一旦你掌握了这个概念,你就需要在你的CICD脚本中为这些环境变量的设置编写脚本,使客户端证书以一种安全的方式可用。

这里的关键是从你进行docker构建的同一台主机上推送docker

但是,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
DOCKER\u HOST=tcp::2376
DOCKER\u CERT\u 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,然后使用环境设置快捷方式,了解其工作原理:

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