Установка приватного репозитория Docker
1.Registry
Официальный центр Docker — отличное место для управления общедоступными образами, где мы можем найти нужные образы или отправить свои собственные образы. Однако иногда наши сценарии использования требуют, чтобы у нас был частный репозиторий образов для управления нашими собственными образами. Это может быть достигнуто с помощью Реестра программного обеспечения с открытым исходным кодом.
Реестр имеет две кодовые базы на github: старую кодовую базу и новую кодовую базу. Старый код написан на питоне, есть проблемы с производительностью pull и push, после версии 0.9.1 он помечен как устаревший и больше не развивается. Начиная с версии 2.0 разрабатывается в новой кодовой базе.Новая кодовая база написана на языке go, изменены алгоритм генерации id образа и структура хранения образа в реестре, что значительно оптимизирует эффективность pull и push изображений.
Официальный образ реестра (подробности) представлен на концентраторе Docker, Мы можем напрямую использовать образ реестра для создания контейнера и нашей собственной службы частного хранилища. Образ реестра, тег которого является последним, имеет версию 0.9.1, и мы напрямую используем версию 2.1.1.
2. Развертывание реестра
2.1 Получите образ реестра
docker pull registry:2.1.1
2.2 Запустите образ реестра
[root@node1 bin]# docker run -d -v /opt/data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.1.1
По умолчанию реестр сохраняет загруженный образ в /var/lib/registry контейнера.
2.3 Проверьте ситуацию запуска
2.4 После запуска службы регистрации войдите в нее через браузер: 192.168.44.201:5000/v2.
3. Загрузите изображение в приватный репозиторий.
3.1 Тег (centos:7.5.1804 — локально существующий образ)
docker tag centos:7.5.1804 192.168.44.201:5000/centos:7.5.1804
3.2 push
docker push 192.168.44.201:5000/centos:7.5.1804
Начиная с Docker версии 1.3.X взаимодействие с реестром докеров по умолчанию использует https, однако построенное здесь личное хранилище предоставляет только сервисы по протоколу http, поэтому при взаимодействии с частным хранилищем будет выдаваться следующая ошибка:
Чтобы решить эту проблему, необходимо увеличить параметр запуска, чтобы по умолчанию использовать доступ по http при запуске сервера docker. Измените файл конфигурации запуска докера:
[root@node1 bin]# vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
#ExecStart=/usr/bin/dockerd --insecure-registry 192.168.44.201:5000 ##加上这一句
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
После этого перезапустите докер
systemctl daemon-reload
systemctl start docker
Затем повторно нажмите, успех
3.3 Просмотр в браузере
4. Просмотр информации о связанных частных репозиториях
4.1 Образы приватных репозиториев
[root@node1 bin]# curl http://192.168.44.201:5000/v2/_catalog
{"repositories":["centos"]}
[root@node1 bin]#
4.2 Просмотр информации тега соответствующего изображения
[root@node1 bin]# curl http://192.168.44.201:5000/v2/centos/tags/list
{"name":"centos","tags":["7.5.1804","7.5.1804.2"]}
[root@node1 bin]#
5. Удалить образ приватного репозитория
5.1 Загрузка ресурсов
curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
chmod +x /usr/local/bin/delete_docker_registry_image
5.2 Установите соответствующие переменные среды
[root@node1 bin]# export REGISTRY_DATA_DIR='/opt/data/registry/docker/registry/v2/'
Поскольку переменная среды REFISTRY_DATA_DIR должна использоваться в delete_docker_registry_image
5.3 удалить изображение
[root@node1 bin]# delete_docker_registry_image --image centos:7.5.1804.2
успешно удален!!!