💳 Установите и используйте Docker Registry на Fedora 30/29/28

by itisgood

В этом руководстве обсуждается, как установить и настроить реестр Docker на Fedora 30/29/28. Реестр Docker – это система хранения и доставки контента, в которой хранятся именованные образа Docker, доступные в различных версиях с тегами.

Пользователи, использующие Docker, взаимодействуют с реестром с помощью команд push и docker pull.

Наиболее распространенный способ хранения общедоступных образов – использование Docker hub.

В этом руководстве мы настроим локальный реестр Docker, доступ к которому возможен только внутри локальной сети компании / ограниченный доступ.

Шаг 1: Установите Docker

Используйте наше руководство ниже, чтобы установить Docker на Fedora.

Как установить Docker в CentOS

Не забудьте добавить свою учетную запись в группу Docker, созданную во время установки.

sudo usermod -aG docker $(whoami)
newgrp docker

Шаг 2: Установите пакет docker registry(docker-distribution)

Пакет docker-distribution доступен в репозитории Fedora.

Distribution – это набор инструментов Docker для упаковки, отправки, хранения и доставки контента.

sudo dnf install docker-distribution

Шаг 3: Настройте Docker registry в Fedora

Файл конфигурации registry Docker находится по адресу /etc/docker-distribution/registry/config.yml. в формате в YAML.

Если вам нужно внести какие-либо изменения, сделайте это здесь.

Пример файла конфигурации показан ниже:

$ cat  /etc/docker-distribution/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
http:
    addr: :5000

Из файла конфигурации по умолчанию:

  • /var/lib/registry – это каталог, в котором будут храниться образы
  • Служба будет привязана к порту 5000 на всех сетевых интерфейсах

Если firewalld включен и работает, разрешите порт на брандмауэре.

sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

Шаг 4: Запустите службу Docker registry

Теперь вы можете запустить службу и настроить его запуск при загрузке.

sudo systemctl start docker-distribution
sudo systemctl enable docker-distribution

Подтвердите статус сервиса:

$ sudo systemctl status docker-distribution
● docker-distribution.service - v2 Registry server for Docker
   Loaded: loaded (/usr/lib/systemd/system/docker-distribution.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-05-04 02:11:27 EAT; 22s ago
 Main PID: 9310 (registry)
    Tasks: 6 (limit: 2323)
   Memory: 9.8M
   CGroup: /system.slice/docker-distribution.service
           └─9310 /usr/bin/registry serve /etc/docker-distribution/registry/config.yml

May 04 02:11:27 localhost.localdomain systemd[1]: Started v2 Registry server for Docker.
May 04 02:11:27 localhost.localdomain registry[9310]: time="2019-05-04T02:11:27+03:00" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple reg>
May 04 02:11:27 localhost.localdomain registry[9310]: time="2019-05-04T02:11:27+03:00" level=info msg="redis not configured" go.version=go1.12beta2 instance.id=eb5f7905-8ab3-4b70-9ee2-3bed7a8cc5f2 version="v2.>
May 04 02:11:27 localhost.localdomain registry[9310]: time="2019-05-04T02:11:27+03:00" level=info msg="Starting upload purge in 48m0s" go.version=go1.12beta2 instance.id=eb5f7905-8ab3-4b70-9ee2-3bed7a8cc5f2 ve>
May 04 02:11:27 localhost.localdomain registry[9310]: time="2019-05-04T02:11:27+03:00" level=info msg="using inmemory blob descriptor cache" go.version=go1.12beta2 instance.id=eb5f7905-8ab3-4b70-9ee2-3bed7a8cc>
May 04 02:11:27 localhost.localdomain registry[9310]: time="2019-05-04T02:11:27+03:00" level=info msg="listening on [::]:5000" go.version=go1.12beta2 instance.id=eb5f7905-8ab3-4b70-9ee2-3bed7a8cc5f2 version="v>

Также проверьте отзывчивость порта 5000.

$ telnet 127.0.0.1 5000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Шаг 5: Добавьте незащищенный реестр в Docker Engine

По умолчанию Docker использует https для подключения к реестру Docker.

Но могут быть случаи использования небезопасного реестра, особенно если вы находитесь в доверенной сети.

Это устраняет необходимость в подписанном СА сертификате для внутреннего использования или для доверия самоподписанному сертификату во всех док-узлах.

Вот шаги необходимые, чтобы добавить Небезопасный Реестр в Docker Engine.

Для CentOS / Fedora / Ubuntu

Отредактируйте файл /etc/docker/daemon.json, например,

cat << EOF | sudo tee /etc/docker/daemon.json 
 {
     "insecure-registries" : [ "myregistry.local:5000" ]
 }
EOF

Для пользователей Arch Linux: используйте небезопасные реестры.

Затем перезапустите Docker engine.

sudo systemctl restart docker

Шаг 6: Загрузка образов Docker в локальный реестр

Теперь, когда реестр готов, вы можете начать вставлять в него образа Docker.

Если у вас нет активного DNS-сервера, используйте файл /etc/hosts, чтобы сопоставить имя хоста с IP-адресом.

$ cat /etc/hosts
192.168.10.20 myregistry.local

Я скачаю образ Docker Alpine Linux из Docker hub и перенесу его в мой локальный реестр Docker.

$ docker pull alpine:latest
latest: Pulling from library/alpine
bdf0201b3a05: Pull complete 
Digest: sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913
Status: Downloaded newer image for alpine:latest

Отметьте образ как myregistry.local:5000/alpine:last.

Это создает дополнительный тег для существующего образа.

Когда первая часть тега является именем хоста и портом, Docker интерпретирует это как местоположение реестра при отправке.

$ docker tag alpine:latest myregistry.local:5000/alpine:latest

Отправьте образ в локальный реестр, запустив

$ docker push myregistry.local:5000/alpine:latest
The push refers to repository [myregistry.local:5000/alpine]
a464c54f93a9: Pushed 
latest: digest: sha256:5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907 size: 528

Если загрузка образа прошла успешно, вы должны получить хеш sha256 в конце процесса.

Отправленные образа хранятся в каталоге /var/lib/registry/docker/registry/v2/repositories.

$ ls /var/lib/registry/docker/registry/v2/repositories
alpine

Это тот же метод, который вы можете использовать для отправки пользовательских образов Docker.

Чтобы загрузить образы докера в локальный реестр, используйте команду:

$ docker pull myregistry.local:5000/alpine:latest
latest: Pulling from alpine
Digest: sha256:5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907
Status: Downloaded newer image for myregistry.local:5000/alpine:latest

 

You may also like

Leave a Comment