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