Столбец Docker — сведения об установке и развертывании частного хранилища Docker

Docker

Установка приватного репозитория 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

успешно удален!!!