Как да

Инсталирайте регистъра на изображения на контейнер на пристанище на CentOS / Debian / Ubuntu

Инсталирайте регистъра на изображения на контейнер на пристанище на CentOS / Debian / Ubuntu

Как да инсталирам регистъра на контейнери Harbor на CentOS / Debian / Ubuntu Linux?. Harbor е облачен регистър с отворен код в облака, който съхранява, подписва и сканира изображения на контейнери за уязвимости. Ако търсите корпоративен регистър на изображения на Docker, тогава Harbor е правилният инструмент за вас. Той има някои от най-добрите функции, налични само в търговски продукти от системния регистър като Quay.

Harbor запълва празнина за приложения и организации, които не могат да използват публичен или облачен регистър. Ще се радвате на постоянно преживяване на всички платформи в облака. Това ръководство ще ви преведе през инсталацията на Harbor на всяка система с поддръжка на Docker.

Характеристики на пристанищния регистър

Какво ще ви трябва

Нуждаете се от операционна система с поддръжка за докер и следните системни изисквания:

Хардуер

РесурсКапацитетОписание
процесорминимален 2 процесора4 CPU е за предпочитане
Мемминимални 4GBЗа предпочитане е 8GB
Дискминимални 40GBЗа предпочитане е 160GB

Софтуер

СофтуерВерсия
Докер двигателверсия 17.06.0-ce + или по-висока
Docker ComposeВерсия 1.18.0 или по-висока
Отваряпредпочита се най-новата

Мрежови портове

ПортПротокол
443HTTPS
4443HTTPS
80HTTP

Нека сега започнем инсталацията на Harbor на Linux система - CentOS, Ubuntu & Debian Linux дистрибуция.

Подготовка за съхранение (по избор)

Ще използвам вторичен диск като хранилище за данни за всички изображения на контейнери - / dev / sdb

$ lsblk ИМЕ MAJ: MIN RM РАЗМЕР RO TYPE MOUNTPOINT sda 8: 0 0 100G 0 диск ├─sda1 8: 1 0 1G 0 част / зареждане └─sda2 8: 2 0 74G 0 част ├─rhel-root 253: 0 0 10G 0 lvm / ├─rhel-swap 253: 1 0 16G 0 lvm [SWAP] ├─rhel-home 253: 2 0 4G 0 lvm / home ├─rhel-var 253: 3 0 20G 0 lvm / var ├─rhel -var_log 253: 4 0 10G 0 lvm / var / log ├─rhel-var_log_audit 253: 5 0 2G 0 lvm / var / log / audit ├─rhel-tmp 253: 6 0 8G 0 lvm / tmp └─rhel-var_tmp 253: 7 0 4G 0 lvm / var / tmp sdb 8:16 0 200G 0 диск sr0 11: 0 1 1024M 0 rom 

Нека подготвим и монтираме този диск.

sudo се раздели -s -a оптимално - / dev / sdb mklabel gpt sudo се раздели -s -a оптимално - / dev / sdb mkpart основно 0% 100% sudo се раздели -s - / dev / sdb подравняване-проверка оптимално 1 sudo pvcreate / dev / sdb1 sudo vgcreate vg0 / dev / sdb1 sudo lvcreate -n пристанище -l + 100% БЕЗПЛАТНО vg0 sudo mkfs.xfs / dev / vg0 / harbor sudo mkdir / data echo "/ dev / vg0 / harbor / data xfs по подразбиране 0 0" | sudo tee -a / etc / fstab

Монтирайте и потвърдете:

$ sudo mount -a $ df -hT / data / Тип файлова система Използван Наличен Използвайте% Монтиран на / dev / mapper / vg0-harbor xfs 200G 1.5G 199G 1% / данни 

Стъпка 1: Инсталирайте Docker Engine

Следвайте нашите ръководства по-долу за инсталиране на Docker Engine.

Инсталирайте Docker и Docker Compose на Debian 10 Buster

Как да инсталирам Docker CE на Ubuntu / Debian / CentOS 

Как да инсталирате Docker на Fedora

Инсталирайте Docker CE на CentOS 8 | RHEL 8

Стъпка 2: Инсталирайте Docker Compose

Следващата ни инсталация е за команда docker-compose. Това не е налично в системните хранилища. Следвайте инструкциите, споделени в предишното ни ръководство по-долу.

Как да инсталирам най-новия Docker Compose на Linux

Стъпка 3: Изтеглете и инсталирайте Harbor

Изтеглете пристанището

curl -s https: // api.github.com / repos / goharbor / harbour / releases / последни | grep browser_download_url | cut -d '"' -f 4 | grep '\.tgz $ '| wget -i - 

Можете също да изтеглите най-новата версия на Harbor от страницата за изтегляне.

Разопаковайте изтегления файл Harbor.

tar xvzf пристанище-офлайн-инсталатор *.tgz

Промяна в пристанище, създадено след разопаковане на файла.

cd пристанище

Пристанищна инсталация без SSL

При първата настройка ще разгледаме инсталирането без TLS / SSL. Копиране на конфигурационен шаблон:

cp пристанище.yml.tmpl пристанище.yml

Редактирайте конфигурационния файл на пристанището и задайте както по-долу.

$ нано пристанище.yml ... # IP адресът или името на хоста за достъп до администраторския потребителски интерфейс и услугата на регистъра. име на хост: регистър.computingforgeeks.com harbor_admin_password: [имейл защитен] $ d # База данни за конфигурация на Harbor DB: парола: [имейл защитен] $ d 

Пристанищна инсталация с Let's Encrypt SSL

ако вашият сървър има публичен IP, можете да използвате Нека шифроваме безплатен SSL сертификат.

Започнете с инсталиране certbot-auto инструмент.

wget https: // dl.еф.org / certbot-auto chmod + x certbot-auto sudo mv certbot-auto / usr / local / bin 

След това вземете SSL сертификат.

експортиране на DOMAIN = "регистър.computingforgeeks.com "export EMAIL =" [email protected] "certbot-auto certonly --standalone -d $ DOMAIN --preferred-challenge http --agree-tos -n -m $ EMAIL --keep-until-expiring 

Конфигурирайте конфигурация, свързана с https.

име на хост: регистър.computingforgeeks.com harbor_admin_password: [имейл защитен] $ d # База данни за конфигурация на DB Harbor: парола: [имейл защитен] $ d http: порт: 80 https: порт: 443 сертификат: / etc / letsencrypt / live / registry.computingforgeeks.com / пълна верига.pem private_key: / etc / letsencrypt / live / registry.computingforgeeks.com / privkey.пем

Инсталация в пристанището със самоподписани SSL сертификати

За самоподписани сертификати създайте конфигурационен файл на сертификат - Променете файла, за да съответства на вашите стойности.

$ cd / etc / pki / tls / certs $ sudo vim harbor_certs.cnf [req] default_bits = 4096 default_md = sha512 default_keyfile = harbor_registry.ключов ред = няма encrypt_key = няма разграничено име = req_distinguished_name # отличено_име [req_distinguished_name] countryName = "KE" localityName = "Nairobi" stateOrProvinceName = "Nairobi" organizationName = "Computingforgeeks" commonName = "регистър.computingforgeeks.com "emailAddress =" [имейл защитен] "

Генериране на ключ и csr:

sudo openssl req -out harbor_registry.csr -newkey rsa: 4096 --sha512 -nodes -keyout harbor_registry.ключ -config harbor_certs.cnf

Създайте самозаписан сертификат с 10-годишен срок на годност:

sudo openssl x509 -в harbor_registry.csr -out harbor_registry.crt -req -signkey harbor_registry.ключ-дни 3650

За да видите подробности за сертификата, използвайте командата:

$ openssl x509 -text -noout -in harbor_registry.crt

Конфигурирайте конфигурация, свързана с https.

име на хост: регистър.computingforgeeks.com harbor_admin_password: [имейл защитен] $ d # База данни за конфигурация на DB Harbor: парола: [имейл защитен] $ d http: порт: 80 https: порт: 443 сертификат: ./ пристанищен_регистър.crt private_key: ./ пристанищен_регистър.ключ

Инсталирайте регистъра на изображенията на Harbor Docker

Веднъж пристанище.yml и бекенда за съхранение (по избор) са конфигурирани, инсталирайте и стартирайте Harbor с помощта на Инсталирай.ш скрипт. 

$ sudo ./Инсталирай.ш

Обърнете внимание, че инсталацията по подразбиране не включва Нотариус или Клер обслужване. Тези услуги се използват за сканиране на уязвимости.

За да видите опциите на инсталатора, изпълнете:

$ ./Инсталирай.sh --help Забележка: Моля, задайте име на хост и други необходими атрибути в пристанището.yml първо. НЕ използвайте localhost или 127.0.0.1 за име на хост, тъй като Harbor трябва да бъде достъпен от външни клиенти. Моля, задайте --with-notary, ако е необходимо да активирате Notary in Harbor, и задайте ui_url_protocol / ssl_cert / ssl_cert_key в пристанището.yml, защото нотариусът трябва да работи под https. Моля, задайте --with-chartmuseum, ако има нужда, активирайте Chartmuseum в Harbour

Пример, активирайте нотариус и Chartmuseum:

$ sudo ./Инсталирай.sh --с нотариус - с картамузей

За да включите нотариална услуга, трябва да разрешите и конфигурирате https в пристанището.yml.

[Стъпка 0]: проверка на инсталационната среда ... Забележка: версия на докер: 19.03.1 Забележка: docker-compose версия: 1.24.1 [Стъпка 1]: зареждане на изображения от пристанището ... Заредено изображение: goharbor / harbour-core: v1.8.1 Заредено изображение: goharbor / harbor-registryctl: v1.8.1 Заредено изображение: goharbor / redis-photon: v1.8.1 Заредено изображение: goharbor / notary-server-photon: v0.6.1-v1.8.1 Заредено изображение: goharbor / chartmuseum-photon: v0.8.1-v1.8.1 Заредено изображение: goharbor / harbour-db: v1.8.1 Заредено изображение: goharbor / harbor-jobservice: v1.8.1 Заредено изображение: goharbor / nginx-photon: v1.8.1 Заредено изображение: goharbor / registry-photon: v2.7.1-пластир-2819-v1.8.1 Заредено изображение: goharbor / harbour-migrator: v1.8.1 Заредено изображение: goharbor / подгответе: v1.8.1 Заредено изображение: goharbor / harbour-portal: v1.8.1 Заредено изображение: goharbor / harbour-log: v1.8.1 Заредено изображение: goharbor / notary-signer-photon: v0.6.1-v1.8.1 Заредено изображение: goharbor / clair-фотон: v2.0.8-v1.8.1 [Стъпка 2]: подготовка на средата ... Подготовката на базата е зададена на / root / harbor Генериран конфигурационен файл: / config / log / logrotate.conf Генериран конфигурационен файл: / config / nginx / nginx.conf Генериран конфигурационен файл: / config / core / env Генериран конфигурационен файл: / config / core / app.conf Генериран конфигурационен файл: / config / registry / config.yml Генериран конфигурационен файл: / config / registryctl / env Генериран конфигурационен файл: / config / db / env Генериран конфигурационен файл: / config / jobservice / env Генериран конфигурационен файл: / config / jobservice / config.yml Генерирана и запазена тайна във файл: / secret / keys / secretkey Генериран сертификат, ключов файл: / secret / core / private_key.pem, файл с сертификат: / секрет / регистър / корен.crt Генериран конфигурационен файл: / config / clair / postgres_env Генериран конфигурационен файл: / config / clair / config.yaml Генериран конфигурационен файл: / config / clair / clair_env Създаване на конфигурационна папка: / config / chartserver Генериран конфигурационен файл: / config / chartserver / env Генериран конфигурационен файл: / compose_location / docker-compose.yml Почистете входния каталог [Стъпка 3]: стартиране на Harbor ... ✔ ---- Harbor е инсталиран и стартиран успешно.---- Сега трябва да можете да посетите администраторския портал на http: // registry.computingforgeeks.com. За повече подробности, моля, посетете https: // github.com / goharbor / пристанище .

Потвърдете, че всички контейнери са стартирани.

... [Стъпка 5]: стартиране на Harbor ... Създаване на мрежа "harbor_harbor" с драйвера по подразбиране Създаване на мрежа "harbor_harbor-clair" с драйвера по подразбиране Създаване на мрежа "harbor_harbor-notary" с драйвера по подразбиране Създаване на мрежа "harbor_harbor-chartmuseum" с подразбиране драйвер Създаване на мрежа "harbor_notary-sig" с драйвера по подразбиране Създаване на harbor-log ... готово Създаване на регистър ... готово Създаване на registerctl ... готово Създаване на harbor-db ... готово Създаване на redis ... готово Създаване на пристанищен портал ... готово Създаване на chartmuseum ... готово Създаване на нотариус-подписващ ... готово Създаване на clair ... готово Създаване на harbor-core ... готово Създаване на нотариален сървър ... готово Създаване на clair-adapter ... готово Създаване на harbor-jobservice ... готово Създаване на nginx ... готово ✔ ---- Harbour е инсталиран и стартиран успешно.---- 

Регистрационните файлове на пристанището се съхраняват в директорията / var / log / harbour /:

$ ls -1 / var / log / harbor / chartmuseum.дървена клер.log ядро.регистрационна служба.дневник портал.log postgresql.регистрационен прокси.log redis.регистър на регистъра.регистър на регистъра.дневник

Стъпка 4: Достъп до пристанището

След като инсталацията е успешна, влезте в уеб конзолата на Harbor https: // register_domain.

Влез с:

Потребителско име: администратор Парола: Разположен в пристанището.yml

Трябва да стигнете до уеб таблото за управление на Harbor.

С Let's Encrypt SSL:

Стъпка 5: Управление на жизнения цикъл на пристанището

Списък на работещите контейнери за обслужване на пристанището:

$ sudo docker-compose ps Име Команда Държавни портове ---------------------------------------- -------------------------------------------------- -------------------------------------------------- ---- графичен музей ./ docker-entrypoint.sh up (здрав) клир ./ docker-entrypoint.sh Рестартиране на clair-adapter / home / clair-adapter / entryp ... Нагоре (здрав) harbor-core / harbor / entrypoint.sh Up (здраве: стартиране) harbor-db / docker-entrypoint.нагоре (здравословно) пристанище-служба / пристанище / входна точка.нагоре (здраве: стартиращо) harbor-log / bin / sh -c / usr / local / bin / ... Up (здравословно) 127.0.0.1: 1514-> 10514 / tcp harbor-portal nginx -g демон изключен; Нагоре (здрав) nginx nginx -g демон изключен; Нагоре (здравословно) 0.0.0.0: 4443-> 4443 / tcp, 0.0.0.0: 80-> 8080 / tcp, 0.0.0.0: 443-> 8443 / tcp notary-server / bin / sh -c migrate-patch - ... Up notar-signer / bin / sh -c migrate-patch - ... Up redis redis-server / etc / redis.conf Up (здрав) регистър / дом / пристанище / входна точка.sh Up (здрав) registryctl / home / harbour / start.sh up (здрав) 

Можете да използвате docker-compose, за да управлявате жизнения цикъл на Harbor. Вижте примерите по-долу.

Спиране на пристанището:

$ sudo docker-compose stop topping nginx ... Спиране на пристанището-услуга ... готово Спиране на пристанището-портал ... готово Спиране на клир ... готово Спиране на диаграма на музея ... готово Спиране на ядрото на пристанището ... готово Спиране на пристанището-db ... готово Спиране на повторно ... готово Спиране на системния регистър ... готово Спиране registryctl ... готово Спиране на пристанищния дневник ... готово

Рестартиране на пристанището след спиране:

$ sudo docker-compose start Стартиране на регистрационен файл ... готово Стартиране на системния регистър ... готово Стартиране на registerctl ... готово Стартиране на postgresql ... готово Стартиране на ядро ​​... готово Стартиране на портал ... готово Стартиране на redis ... готово Стартиране на jobservice ... готово Стартиране на прокси ... готово Стартиране на clair ... готово Стартиране на графичен музей ... готово

Актуализиране на конфигурацията на Harbor:

Първо, за да промените конфигурацията на пристанището, спиране на съществуващия пристанищен порт и актуализиране на пристанището.yml. След това стартирайте скрипт за подготовка, за да попълните конфигурацията. След това пресъздайте и стартирайте екземпляра на Harbor:

$ sudo docker-compose down -v $ nano harbour.yml $ sudo подготви $ sudo docker-compose up -d

Когато Harbor е инсталиран с нотариус, Clair и услуга за съхранение на диаграми:

$ sudo docker-compose down -v $ nano harbour.yml $ sudo ./ подготви - с-нотариус - с-клир - с-графичен музей $ sudo docker-compose up -d

За отстраняване на неизправности проверете регистрационния файл на въпросната услуга за контейнери в директорията / var / log / harbour.

$ tail -n 100 / var / log / harbor / clair.дневник

Посетете страницата с ръководството на потребителя на Harbor, за да научите повече за използването.

Още ръководства за пристанището:

Как да интегрирам пристанищния регистър с LDAP за удостоверяване на потребителя

Как да попречим на потребителите да създават проекти в регистъра на пристанището

Подобни статии:

Как да настроите регистъра на Red Hat Quay на CentOS / RHEL / Ubuntu

Инсталирайте и използвайте регистъра на Docker на Fedora

Инсталирайте и конфигурирайте регистъра на Docker на CentOS 7

Етикети:

Twitter ви предлага да промените паролата си, след като те бъдат „демаскирани във вътрешен дневник“
Знаете ли вашата парола за Twitter наизуст? Това е страхотно, но проблемът е, че може да има и повече хора от вас, които също го знаят. Социалната мре...
Китайското правителство събира данни от мозъка на своите работници
Напоследък говорим много за данни, които ни се вземат без наше знание. Но какво, ако не бяха взети данни от социалните мрежи, а данни за нашите собств...
MIT проектира първата система за самоуправляващи се автомобили, която да се справи с неасфалтирани пътища
Докато технологиите постигнаха голям напредък със самоуправляващите се автомобили, има един мост, по който още не бяха успели да преминат: неасфалтира...