Создание приватного 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 - Подключение сторонних хранилищ
Скрытый контент
Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram

Спасибо
Спасибо, замечательный урок.
а Lets Encrypt здесь, в Docker регистре, это то же самое, как, напр., у Nginx gateway/docker/production/nginx/conf.d/frontend.conf?
Да, всё то же самое.
Очень полезный урок. В начале бы курса, но и сейчас хорошо.
И всё же это вариант с отдельной виртуалкой для реестра? Если пытаться поднять этот проект на уже занятой виртуалке, то пишет что порт 443 уже занят. Естественно, ведь там уже gateway есть. Добился что можно менять проекты на одной виртуалке с одинаковым gateway с настроенным доступом к реестру. Использую один реестр на всё про всё с помощью volumes: registry: name: registryname. После пуша и деплоя другого проекта реестр продолжает работать.
Хотя сейчас понял, что можно не задавать жестко имя реестра, а пользоваться одинаковым COMPOSE_PROJECT_NAME
В этом случае registry можно поднять на любом другом порту и указывать везде его поддомен с этим портом.
Может мы о разном? я про то что сервис nginx из этого проекта не может подняться поскольку gateway из другого уже занимает порты 80 и 443. Или я не понял.
В nginx реестра убираем порт 80 и меняем 443 на 5443. И работаем с
registry.xxx:5443
.Понял, спасибо!
удалить всю эту часть?
в docker\production\nginx\conf.d\registry.conf
а как тогда ssl?
Да, либо удалить этот блок с
listen 80;
и оставитьlisten 5443 ssl;
, либо поменять порты вdocker-compose-production,yml
:понял, спасибо.
заработало, registry.demo-auction.arsku.com:5443/v2/_catalog , но не могу попасть - пароль почему-то не верный...
у Вас пароль password или htpasswd?
наконец вошел - оказывается, в пароль не можно знак $
Дмитрий, извиняюсь, а вы не могли бы уточнить, зачем нам эти реестры и прочее если на локальной машине все есть, разве не проще грузить на виртуалку наш проект и запустить уже там докер по нашему прод файлу, предварительно поставив то что надо ансамблем? А надо там только докер как я понял, извиняюсь если не внимательно слушал, но этот момент не смог понять что-то. Или это делается для того, что бы не качались официальные образы, которые могут резко измениться и что то нам сломать в самый неподходящий момент? Если это так, то разве нельзя грузить из официального реестра строго определенный образ, который мы точно знаем что работает?
Так можно в примитивном случае сделать с проектами на PHP, так как не нужно что-то компилировать.
Но если мы запустим docker-compose build в проекте на NodeJS или Java, то на слабой одноядерной виртуалке оно будет собираться десять минут со 100% нагрузкой. Если запускаем на кластере из нескольких виртуалок, то так весь кластер "ляжет".
Поэтому при работе с Docker предполагается, что мы собираем образ-архив с готовым скомпилированным кодом у себя на сборочном компьютере. И через реестр закидываем уже собранные образы на свои виртуалки и мгновенно там запускаем.
Спасибо, за исчерпывающий ответ, но конечно всё равно хотелось бы рассмотреть и такой вариант в курсе, если есть такая возможность конечно, клонирование проекта может помочь если надо что то быстро поменять на проде, а на пример с реестром что то случилось и быстро разобраться не получается.
Если в проекте автодеплой, то вручную на прод обычно вообще никто не ходит. Если что-то сломалось, то либо запускают откат, либо сразу коммитят исправление и запускают следующий деплой.
Ясно, спасибо.
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
Да, так как в новой версии Slim в ErrorHandler добавили свой
protected $logger
.спасибо за ответ.
что это за параметр в docker-compose-production.yml: SENTRY_DSN: ${SENTRY_DSN} ?
Ключ для подключения сервиса Sentry из 24-го эпизода.
Спасибо за урок! Очень полезно. Сделайте еще по sentry.
Про его установку себе через Docker?
Да да, не облачное решение, а поднятии своего с использованием докера
Поддержу, всегда приятнее иметь такую вещь у себя и не зависеть от внешних источников, а то мало ли, возьму и уберут бесплатный тариф вообще или РКН адресом ошибется и все посыпется, а так на одном образе можно разные проекты держать и не париться.
Почему-то после docker run --rm registry:2 htpasswd -Bbn registry password > htpasswd
Ошибка write /dev/stdout: permission denied
Может с убунтой что не так, подскажите пожалуйста линуксоводы
Понял в чем ошибка, она возникает при работе через терминал шторма. Решение - все команды вводил через родную консоль убунты - все отработало , без ошибок доступов. Может как шторм надо в убунте поднастроить незнаю, чтоб робить нормально через его консоль.
После ввода команды docker run --rm registry:2 htpasswd -Bbn registry password > htpasswd пишет, что htpasswd не найдено. А когда используется nginx, то вовсе создает пустую папку вместо файла. Но аутентификация работает, правда я не знаю ни логина, ни пароля. Вроде делал то же самое.
А просто команда
docker run --rm registry:2 htpasswd -Bbn registry password
хэш генерирует?Тот же результат. /entrypoint.sh: exec: line 10: htpasswd: not found Решил проблему только установкой apache-utils и команда в итоге чуть другая. Может из-за этого у меня не пулятся образы с реестра при деплое с основного проекта. Я эту проблему описал в комментарии к 5-му уроку.
Удалили в последней версии. Используйте
registry:2.6
вместоregistry:2
Так заработало. Спасибо.
Дмитрий, какие посоветуете UI для докер репозитория?
Любой.
Подскажите Dockrer начал выдавать ошибки при сборке - net/http: TLS handshake timeout. Причем то на один пакет ругается то на другой. В чем может быть проблема? Конфигурацию не менял.
Да, тоже бывает иногда. Проблема на сервере Docker.
Или войти через: