Если вы не знаете, что такое реестр контейнеров, не волнуйтесь. Это станет ясно, когда вы действительно вставите свой первый образ контейнера в экземпляр GitLab. А пока считайте их репозиториями для образов ваших контейнеров. Это не запущенные контейнеры, а просто изображения (простые данные), находящиеся в удаленном экземпляре GitLab.
Зачем вам нужен реестр контейнеров GitLab?
Скорее всего, ваше приложение упаковано либо как один образ Docker, либо как набор таких образов. Это означает, что разные версии будут связаны с разными образами, а реестр контейнеров поможет вам отслеживать их по отдельности, а также увидеть, какие из них должны быть объединены в конкретный выпуск.
Реестр предназначен для контейнеров, а репозиторий - для исходного кода, а GitLab - это одно место для их всех.
Предпосылки
- Рабочий экземпляр GitLab через HTTPS
- Корневой доступ к экземпляру
- Доступ для изменения записей DNS вашего доменного имени
Предположим, наш GitLab работает на gitlab.пример.ком .
Реестр сертификатов DNS и TLS
Вы должны быть пользователем root, чтобы включить функцию реестра контейнеров в экземпляре GitLab. Затем отдельные пользователи могут выбрать использование этой функции в своих проектах, если они того пожелают. Это можно сделать двумя способами:
- Повторно использовать существующее доменное имя и сертификаты TLS для gitlab.пример.ком и запустите реестр на другом порту.
- Укажите другое доменное имя, скажем, реестр.gitlab.пример.ком на тот же IP-адрес, на котором запущен GitLab, и настройте реестр там.
Пойдем со вторым вариантом, так как он намного профессиональнее.
Шаг 1: Добавить запись A для реестр.gitlab.пример.ком указывающий на тот же IP-адрес, на котором запущен ваш экземпляр GitLab.
Шаг 2: Остановите службы gitlab, запущенные на вашем сервере.
$ sudo gitlab-ctl stopШаг 3: Добавить клиента ACME Certbot's PPA в вашу систему и установите certbot.
$ sudo add-apt-репозиторий ppa: certbot / certbot$ sudo подходящее обновление
$ sudo apt install certbot
Шаг 4: Получите сертификаты от Let's Encrypt.
$ certbot CertonlyВы увидите такое сообщение:
«'
Как вы хотите пройти аутентификацию в ACME CA?
--
1. Создайте временный веб-сервер (автономный)
2: Поместите файлы в каталог веб-корневого каталога (веб-корневой каталог)
--
Выберите соответствующий номер [1-2], затем [введите] (нажмите 'c' для отмены): 1
«'
Затем вам будет запрошен ваш адрес электронной почты, вас попросят согласиться с их условиями обслуживания и, что наиболее важно, вас попросят указать ваше доменное имя, которое будет реестр.gitlab.пример.ком в нашем примере. Вы получите сообщение о том, были ли получены сертификаты. Если да, переходите к шагу 5
Шаг 5: Теперь, когда у нас есть сертификаты, пришло время разместить их в каталогах, связанных с GitLab.
$ cp / и т. д. / letsencrypt / live / registry.gitlab.пример.com / fullchain.pem/ и т. д. / gitlab / ssl / реестр.gitlab.пример.crt
$ cp / и т. д. / letsencrypt / live / registry.gitlab.пример.com / privkey.pem
/ и т. д. / gitlab / ssl / реестр.gitlab.пример.ключ
Обеспечьте для них разрешения:
$ chmod 600 / etc / gitlab / ssl / registry.gitlab.пример.ком.*Как и в остальной части руководства, убедитесь, что вы заменили example.com с вашим существующим доменным именем. Поскольку это будет имя каталога, в котором certbot хранит сертификат.
Шаг 6: Изменить конфигурацию GitLab. Откройте файл / etc / gitlab / gitlab.rb и добавьте в его нижнюю часть следующие строки:
registry_external_url 'https: // реестр.gitlab.пример.com 'Если вы все сделали аккуратно, самая сложная часть настройки окончена! Теперь у вас есть реестр контейнеров, просто запустите:
$ sudo gitlab-ctl перенастроить$ sudo gitlab-ctl start
Включение реестра и отправка образов
Теперь, когда у нас есть Реестр контейнеров, давайте создадим новый проект, используя веб-интерфейс GitLab, и убедимся, что он работает.
В левом столбце вы можете увидеть раздел реестра. Вы можете щелкнуть по нему, чтобы увидеть подробные инструкции о том, как войти в систему и вставить в него изображения. Вернемся к нашему локальному рабочему столу, на котором должен быть установлен Docker.
Мы можем использовать его для создания простого контейнера hello-world и поместить его в этот реестр. В вашей локальной системе создайте новую папку:
$ cd ~$ mkdir sample_container
Внутри него создадим файл с именем Dockerfile и добавьте к нему следующее содержимое:
ОТ ubuntu: последний## Здесь ваши пользовательские команды
Вы можете сохранить свой Dockerfile только в первой строке. Это будет простой контейнер ubuntu. Теперь вы создаете его с помощью значимого тега (мы будем использовать тег мой проект которое совпадает с названием нашего проекта GitLab, это важно). В этом же каталоге запустите:
$ docker build -t реестр.gitlab.пример.com /Не забудьте подставить свое имя пользователя GitLab вместо
Он просто создает контейнер Ubuntu вместе с получением изображения. Это изображение - то, что подталкивают. Если вы измените контейнер и создадите с ним новый образ (используя докер коммит команда это будет новый образ). Давайте поместим образ vanilla ubuntu в наш реестр.
Сначала нам нужно войти в систему, используя наши имя пользователя и пароль Gitlab:
Реестр входа в $ docker.gitlab.пример.комЗатем запустите:
$ docker build -t реестр.gitlab.пример.ком / корень / мой-проект .$ docker push реестр.gitlab.пример.ком / корень / мой-проект
Если вы не уверены, каким должен быть тег вашего контейнера, посетите страницу реестра вашего проекта, и там будут четкие инструкции для него. Если команда docker push сработала правильно, вы можете увидеть, как новый образ докера загружается (или отправляется) в ваш экземпляр GitLab. Как это было показано в моем случае:
Заключение
Контроль версий - это гораздо больше, чем просто управление исходным кодом. Он постоянно совершенствуется, чтобы удовлетворить широкий спектр требований, которые могут неожиданно понадобиться любому программному проекту. Реестр контейнеров - это лишь верхушка айсберга. У вас могут быть конвейеры CD / CI, расширенное управление конфигурацией, авторизация с помощью токенов и множество других функций, включенных в GitLab. Надеюсь, вы узнали что-то новое об этой замечательной технологии в этом уроке.
Сообщите нам, если есть что-то, что вы хотите, чтобы мы осветили!