docker registry setting

Делаем свой Dockerhub или что такое docker registry

Если вы собираете свои контейнеры (образы) Docker, то наверняка их где то размещаете, а раз читаете эту статью, то размещаете скорее всего на dockerhub. Проблема такого способа в том, что в бесплатной версии есть ограничения, да и все ваши образы видны всему интернету. А вдруг вы захотите спрятать что то ценное в контейнер и не захотите этим делиться? Тогда на помощь нам приходит docker registry.

Registry

Docker registry это обычный docker контейнер, который выполняет роль репозитория. Это дает нам возможность поднять репозиторий для docker образов, который можно разместить где угодно, привязать доменное именное, сертификат, ограничить доступ к серверу и другие плюшки, которые только сможете придумать.

Конечно чтобы доступ был откуда угодно желательно на сервере (или компьютере) иметь статичный адрес. Можно конечно это все обойти, соединив например компьютеры при помощи VPN сетей, но это уже другая история.

Установка registry

Установка проще быть не может. Лезем в официальную документацию по Docker и находим там статью по docker registry.

Нам нужна строчка:

docker run -d -p 5000:5000 --name registry registry:2

У нас происходит запуск контейнера в фоновом режиме с прокинутым портом 5000 на хост и 5000 внутри контейнера. Контейнер называется registry и использует образ registry:2.

Сам контейнер вешается на широковещательный адрес 0.0.0.0:5000. Так же мы можем повесить контейнер на любой адрес какой захотим, для этого изменим немного команду запуска контейнера:

docker run -d -p 213.32.53.115:5000:5000 --name registry registry:2

Где 213.32.53.115 это адрес, на который хотите повесить контейнер. Собственно по 213.32.53.115:5000 мы будем заливать образы и скачивать их.

Вроде все легко и просто. Registry можно поднять так же и через docker-compose, и через docker swarm. Разницы в способе запуска нет, это всего лишь контейнер.

Docker daemon.json

У нас нет сертификатов, а может и есть, но мы их еще не прикручивали к нашему контейнеру ( а точнее серверу), из-за чего обращение к нашему репозиторию будет происходит без шифрования, подписей и др., т.е по HTTP. Из-за этого docker будет ругаться, т.к он работает только по HTTPS.

Чтобы поставить заглушечку нам нужно создать файл /etc/docker/daemon.json (если такого еще нет) и добавить туда строчку:

 {
  "insecure-registries" :["213.32.53.115:5000"]
}

IP и PORT меняем наши (вместо IP можно указать доменное имя). Перезапускаем docker:

service docker restart

И вот теперь можно приступить к работе с нашим репозиторием.

Небольшое примечание.

Такую операцию придется делать на каждом хосте, где вы захотите скачать образ из вашего репозитория (docker registry). Все это до тех пор, пока не прикрутите сертификат для HTTPS.

Docker push

Время для самого сладкого — заливки образа в наш приватный репозиторий.

Давайте скачаем какой нибудь образ, чтобы пока не заморачиваться со сборкой своего. Пусть это будет например созданный мной образ для основы контейнеров с криптокошельками:

docker pull welest/base_wallet

Образ у нас в системе, теперь нужно дать ему метку:

docker tag welest/base_wallet 213.32.53.115:5000/base_our

Мы говорим докеру на какой образ вешать метку и как он будет называться далее. IP адрес и порт указываем нашего регистри (репозитория). Т.е мы говорим докеру, чтобы он залил образ по такому адрес:порт под названием base_our.

Осталось все это дело только запушить:

docker push 213.32.53.115:5000/base_our

И вуаля — наш docker образ залился в созданный нами приватный репозиторий.

Теперь чтобы скачать это чудо с другой машинки. Нам нужно всего лишь выполнить:

docker pull 213.32.53.115:5000/base_our

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Отправить ответ

avatar
  Subscribe  
Уведомить