Как опубликовать изображения docker в Docker hub из gitlab-ci

Gitlab предоставляет .gitlab-ci.yml шаблон для создания и публикации изображений в собственный реестр (нажмите "новый файл" в одном из ваших проектов, выберите .gitlab-ci.yml и docker). Файл выглядит так, и он работает из коробки:)

# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest

services:
  - docker:dind

before_script:
  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

build-master:
  stage: build
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker push "$CI_REGISTRY_IMAGE"
  only:
    - master

build:
  stage: build
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
  except:
    - master

но по умолчанию это будет публиковаться в реестре gitlab. Как мы можем опубликовать в docker hub?

2 ответов


нет необходимости менять это .gitlab-ci.yml вообще, нам нужно только добавить / заменить переменные среды в настройках конвейера проекта.

во-первых, нам нужно знать url реестра. Используя hub.docker.com не будет работать, вы получите следующую ошибку:

ответ на ошибку от демона: попытка входа в https://hub.docker.com/v2/ сбой со статусом: 404 не найден

по умолчанию docker hub url реестра можно найти как это:

docker info | grep Registry
Registry: https://index.docker.io/v1/

индекс.докер.Ио это то, что я искал. Я хотел опубликовать изображение gableroux / unity3d, вот что я использовал в секреты трубопровода:

CI_REGISTRY_USER=gableroux
CI_REGISTRY_PASSWORD=********
CI_REGISTRY=index.docker.io
CI_REGISTRY_IMAGE=index.docker.io/gableroux/unity3d

CI_REGISTRY_IMAGE важно установить.
Значение по умолчанию registry.gitlab.com/<username>/<project>
regsitry url должен быть обновлен, поэтому используйте index.docker.io/<username>/<project>
Поскольку Docker hub является реестром по умолчанию, вы также можете использовать <username>/<project> вместо этого, но я предпочитаю, когда это подробно. Поэтому этот ответ также должен охватывать другие реестры просто обновляют переменные среды соответствующим образом.


расширить ответ на GabLeRoux, в

у меня были проблемы на стадии нажатия сборки GitLab CI:

denied: requested access to the resource is denied

внести CI_REGISTRY to docker.io (удалить index.) я смог успешно толкать.