Создание приватного Docker Registry

Создание персонального приватного реестра образов Docker Registry. Создание поддомена и виртуальной машины. Подключение сторонних хранилищ.

  • 00:02:45 - Обзор документации
  • 00:07:20 - Создание реестра
  • 00:08:42 - Сборка и push образов
  • 00:11:37 - Аутентификация
  • 00:13:03 - Добавление Nginx proxy
  • 00:15:47 - Фиксация девелоперского htpasswd
  • 00:17:15 - Прокси с Lets Encrypt для рабочего сервера
  • 00:18:42 - Команда деплоя на production
  • 00:21:12 - Настройка виртуальной машины с Ansible
  • 00:24:29 - Создание виртуальной машины
  • 00:26:38 - Деплой на готовый сервер
  • 00:29:53 - Push в рабочий репозиторий
  • 00:31:22 - Контроль места на диске
  • 00:32:25 - Garbage collector
  • 00:35:19 - Подключение сторонних хранилищ
Скрытый контент
Комментарии (30)
fedot
2020-05-11 15:18

Спасибо

Ответить
Arunas
2020-05-11 16:41

Спасибо, замечательный урок.

Ответить
Arunas
2020-05-11 16:52

а Lets Encrypt здесь, в Docker регистре, это то же самое, как, напр., у Nginx gateway/docker/production/nginx/conf.d/frontend.conf?

Ответить
Deworker Pro
2020-05-13 11:24

Да, всё то же самое.

Ответить
Дмитрий
2020-05-12 04:23

Очень полезный урок. В начале бы курса, но и сейчас хорошо.

Ответить
Дмитрий
2020-05-12 17:35

И всё же это вариант с отдельной виртуалкой для реестра? Если пытаться поднять этот проект на уже занятой виртуалке, то пишет что порт 443 уже занят. Естественно, ведь там уже gateway есть. Добился что можно менять проекты на одной виртуалке с одинаковым gateway с настроенным доступом к реестру. Использую один реестр на всё про всё с помощью volumes: registry: name: registryname. После пуша и деплоя другого проекта реестр продолжает работать.

Ответить
Дмитрий
2020-05-13 02:13

Хотя сейчас понял, что можно не задавать жестко имя реестра, а пользоваться одинаковым COMPOSE_PROJECT_NAME

Ответить
Deworker Pro
2020-05-13 12:04

порт 443 уже занят

В этом случае registry можно поднять на любом другом порту и указывать везде его поддомен с этим портом.

Ответить
Дмитрий
2020-05-13 13:49

Может мы о разном? я про то что сервис nginx из этого проекта не может подняться поскольку gateway из другого уже занимает порты 80 и 443. Или я не понял.

Ответить
Deworker Pro
2020-05-13 15:50

В nginx реестра убираем порт 80 и меняем 443 на 5443. И работаем с registry.xxx:5443.

Ответить
Дмитрий
2020-05-13 15:52

Понял, спасибо!

Ответить
Arunas
2020-05-13 16:33

удалить всю эту часть?

server {
    listen 80;
    server_name registry.demo-auction.arsku.com;

в docker\production\nginx\conf.d\registry.conf

а как тогда ssl?

Ответить
Deworker Pro
2020-05-13 16:50

Да, либо удалить этот блок с listen 80; и оставить listen 5443 ssl;, либо поменять порты в docker-compose-production,yml:

ports:
    - "5443:443"
Ответить
Arunas
2020-05-13 16:55

понял, спасибо.

Ответить
Arunas
2020-05-13 17:05

заработало, registry.demo-auction.arsku.com:5443/v2/_catalog , но не могу попасть - пароль почему-то не верный...
у Вас пароль password или htpasswd?

Ответить
Arunas
2020-05-13 18:19

наконец вошел - оказывается, в пароль не можно знак $

Ответить
fedot
2020-05-13 09:53

Дмитрий, извиняюсь, а вы не могли бы уточнить, зачем нам эти реестры и прочее если на локальной машине все есть, разве не проще грузить на виртуалку наш проект и запустить уже там докер по нашему прод файлу, предварительно поставив то что надо ансамблем? А надо там только докер как я понял, извиняюсь если не внимательно слушал, но этот момент не смог понять что-то. Или это делается для того, что бы не качались официальные образы, которые могут резко измениться и что то нам сломать в самый неподходящий момент? Если это так, то разве нельзя грузить из официального реестра строго определенный образ, который мы точно знаем что работает?

Ответить
Deworker Pro
2020-05-13 12:34

Так можно в примитивном случае сделать с проектами на PHP, так как не нужно что-то компилировать.

Но если мы запустим docker-compose build в проекте на NodeJS или Java, то на слабой одноядерной виртуалке оно будет собираться десять минут со 100% нагрузкой. Если запускаем на кластере из нескольких виртуалок, то так весь кластер "ляжет".

Поэтому при работе с Docker предполагается, что мы собираем образ-архив с готовым скомпилированным кодом у себя на сборочном компьютере. И через реестр закидываем уже собранные образы на свои виртуалки и мгновенно там запускаем.

Ответить
fedot
2020-05-13 13:28

Спасибо, за исчерпывающий ответ, но конечно всё равно хотелось бы рассмотреть и такой вариант в курсе, если есть такая возможность конечно, клонирование проекта может помочь если надо что то быстро поменять на проде, а на пример с реестром что то случилось и быстро разобраться не получается.

Ответить
Deworker Pro
2020-05-13 15:43

если надо что то быстро поменять на проде

Если в проекте автодеплой, то вручную на прод обычно вообще никто не ходит. Если что-то сломалось, то либо запускают откат, либо сразу коммитят исправление и запускают следующий деплой.

Ответить
fedot
2020-05-13 15:44

Ясно, спасибо.

Ответить
Arunas
2020-05-13 14:43

auction в Dev реж. поднялся хорошо - работало localhost/8080, 8081, 8082.
Но после
docker-compose run --rm api-php-cli composer update
не поднялся 8081 (api):
Fatal error: Access level to App\ErrorHandler\LogErrorHandler::$logger must be protected (as in class Slim\Handlers\ErrorHandler) or weaker in /app/src/ErrorHandler/LogErrorHandler.php on line 15

Ответить
Deworker Pro
2020-05-13 15:53

Да, так как в новой версии Slim в ErrorHandler добавили свой protected $logger.

Ответить
Arunas
2020-05-13 16:46

спасибо за ответ.

Ответить
Arunas
2020-05-16 09:58

что это за параметр в docker-compose-production.yml: SENTRY_DSN: ${SENTRY_DSN} ?

Ответить
Deworker Pro
2020-05-19 14:59

Ключ для подключения сервиса Sentry из 24-го эпизода.

Ответить
Александр
2020-05-16 14:32

Спасибо за урок! Очень полезно. Сделайте еще по sentry.

Ответить
Deworker Pro
2020-05-19 14:59

Про его установку себе через Docker?

Ответить
Александр
2020-05-19 15:02

Да да, не облачное решение, а поднятии своего с использованием докера

Ответить
fedot
2020-05-21 09:47

Поддержу, всегда приятнее иметь такую вещь у себя и не зависеть от внешних источников, а то мало ли, возьму и уберут бесплатный тариф вообще или РКН адресом ошибется и все посыпется, а так на одном образе можно разные проекты держать и не париться.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий