Стратегия построения докера и его реализации на разных этапах сборки CI без tar - PullRequest
0 голосов
/ 27 октября 2019

Я хочу создать несколько образов докеров на определенном этапе моей сборки Google Cloud Build, а затем перенести их на другой шаг. Я думаю, что используемый CI здесь не имеет значения.

Это потому, что некоторые команды push зависят от некоторых других условий, и я не хочу перестраивать образы.

Я могу docker save до tar в смонтированном рабочем пространстве, затем docker load позже. Однако это довольно медленно. Есть ли лучшая стратегия? Я думал о попытке скопировать в / из /var/lib/docker, но это, кажется, не рекомендуется.

1 Ответ

2 голосов
/ 28 октября 2019

Ключевым моментом здесь является запуск докера с того же хоста, на котором вы выполнили сборку докера.

Однако сборка докера не обязательно должна выполняться на самой машине сборки CICD,потому что вы можете указать его локальный док-клиент на удаленный док-хост.

Чтобы указать ваш док-клиент на удаленный док-хост, вам нужно установить три переменные среды.

В среде 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. Или перейдите от Linux к удаленной машине Windows и запустите сборку контейнера Windows. Этот последний вариант использования может быть полезен, если у вас есть общий инструмент CICD, который реализует некоторую проприетарную маркировку изображения, которую вы хотите повторно использовать также для контейнеров Windows.

Аутентификация здесь взаимная SSL / TLS, и поэтому необходимобыть закрытыми / открытыми ключами клиента и сервера, сгенерированными общим CA. Поначалу это может быть немного сложнее, и поэтому вы можете захотеть посмотреть, как это работает, сначала используя docker-machine, используя ярлыки настроек среды: https://docs.docker.com/machine/reference/env/

Как только вы освоите эту концепцию, вы сможетенеобходимо настроить эти переменные среды в ваших сценариях CICD, чтобы клиентские сертификаты были доступны безопасным способом.

...