Загрузка и загрузка изображений докера в другое хранилище в сборке - PullRequest
0 голосов
/ 21 октября 2019

Я хочу сделать определенные образы докеров общедоступными (в настоящее время частными). Итак, в основном я хочу, чтобы сборка сборки загружала из GCR (частное репо, а затем загружала в dockerhub (публичное репо)

. В настоящее время я использую docker in docker container, а затем запускаю команды докера, явные длясначала пометьте, а затем нажмите на dockerhub.

Может ли какой-либо из существующих ресурсов для докера сделать это автоматически?

EDIT

Оказывается, вы можете сделать это. docker-image-resource и registry-image-resource, при настройке ресурса необходимо установить тег в начале, однако я хочу запустить задачу, из которой я получаю теги, а затем загрузить образ докера с тегом из частного репозитория изатем загрузите его в публичный репозиторий. Это возможно?

1 Ответ

0 голосов
/ 24 октября 2019

Да, docker-image-resource может это сделать. Вы можете найти множество документов / примеров на github: https://github.com/concourse/docker-image-resource

Вот что я сделал для создания и отправки изображений в aws ecr.

Сначала определите его как ресурс в вашем конвейере инастроить это.

resources:
  - name: ecr-repository
    type: docker-image
    source:
      repository: xxxx.dkr.ecr.eu-central-1.amazonaws.com/some/ecr/path

Поскольку я работал с экземпляром ec2, мне не нужно было устанавливать какие-либо учетные данные. Если вы хотите отправить в докер-концентратор, вам нужно настроить ресурс с вашими учетными данными.

Итак, теперь конкурс знает этот ресурс и его можно использовать на этапах заданий. В случае сборки / push вы должны использовать шаг put следующим образом:

- put: ecr-repository
  params:
    build: .

Если ваш Dockerfile не находится в корне вашего ресурса, вы можете либо установить build для указания этого пути, либоиспользуйте опцию dockerfile. Смотрите документы для более.

Альтернативно, есть реестр-образ-ресурс. Я сам этим еще не пользовался, но если у вас уже есть работающая сборка, вы, возможно, можете просто отдать тот артефакт, который у вас есть, и перенести его туда, куда вы хотите. Конфигурация, вероятно, такая же (укажите URL, учетные данные) и используйте ее в шаге.

https://github.com/concourse/registry-image-resource

РЕДАКТИРОВАТЬ:

Оба ресурса имеют параметр «дополнительные_флаги». Чтобы не изменять задачу сборки, вы можете вывести изображение в виде архива вместе с файлом, в котором указаны теги, которые вы хотите нажать.

docker save image:latest | gzip > ./outdir/image.tar.gz
echo "some foo tags" > ./outdir/tags_file

Затем вы можете загрузить это изображение с дополнительными тегами, подобными этому

put: registry-resource
    params:
      image: ./outdir/image.tar.gz
      additional_tags: ./outdir/tags_file

Конечно, вы должны указать 'outdir' как вывод в первом задании и как ввод во втором заданиичтобы собеседники передали файлы.

...