VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Подключение к реестру Docker

Вы можете подключиться к реестру Docker, если в кластере установлен соответствующий аддон.

При установке аддона для него создается стандартный балансировщик нагрузки с плавающим IP-адресом. Поэтому к реестру Docker можно подключиться с любого хоста, имеющего доступ в интернет.

Подготовительные шаги

  1. Убедитесь, что аддон реестра Docker (docker-registry) установлен в кластере.
  2. Убедитесь, что вы можете подключаться к кластеру с помощью kubectl.
  3. Получите данные для доступа к реестру Docker.

Подключение к реестру Docker

На хосте, с которого планируется подключаться к реестру:

  1. Установите Docker Engine, если он еще не установлен. Доступны на выбор либо Docker Desktop, либо серверный вариант Docker Engine без графического интерфейса.

    Docker Engine должен быть установлен на хосте, с которого будет использоваться реестр. Дальнейшие шаги выполняйте на этом хосте.

  2. Добавьте реестр Docker в список доверенных реестров:

    1. Добавьте в конфигурационный файл Docker daemon.json параметр insecure-registries с адресом эндпоинта реестра Docker.

      Адрес задается в формате <URL реестра Docker>:<порт реестра Docker>.

      {  ...  "insecure-registries": [    "https://192.0.2.2:5000"  ],  ...}

      Расположение этого файла для разных инсталляций Docker Engine приведено в официальной документации Docker.

    2. Перезапустите Docker Engine.

      • Для серверного варианта Docker Engine выполните одну из команд для перезапуска:

        sudo systemd restart docker
        sudo service docker restart
      • Для Docker Desktop воспользуйтесь графическим интерфейсом.

  3. Войдите в реестр:

    docker login <URL реестра Docker> --username <логин для реестра Docker>

    Введите пароль для реестра Docker.

Теперь вы можете выполнять любые операции с реестром, например, пушить туда Docker-образы.

Подробнее о работе с реестром в официальной документации Docker.

Использование реестра Docker в кластере Kubernetes

Чтобы разворачивать рабочие нагрузки (workloads) в кластере, используя образы из реестра Docker:

  1. Создайте секрет k8s-registry-creds, содержащий в себе данные для доступа к реестру.

    Если не указывать параметр --namespace, то секрет будет создан в пространстве имен (namespace) по умолчанию (default).

    kubectl create secret docker-registry k8s-registry-creds \   --docker-server=<IP-адрес реестра>:5000 \  --docker-username=<логин> \  --docker-password=<пароль> \  --namespace=<пространство имен>
  2. Укажите в манифесте для рабочей нагрузки:

    • Имя созданного секрета в параметре ìmagePullSecrets.

    • Путь к образу из реестра в параметре containers.image.

      Путь задается в формате <IP-адрес реестра>:5000/<директория с образом>/<имя образа>:<тег>.

    Примеры манифестов:

    apiVersion: v1kind: Podmetadata:  name: my-appspec:  imagePullSecrets:  - name: k8s-registry-creds  containers:  - name: my-app    image: <IP-адрес реестра>:5000/<директория с образом>/<имя образа>:<тег>