Недоступность Docker Hub может вызвать проблемы, если от загрузки образов из него зависят ваши приложения и процессы. Чтобы минимизировать последствия недоступности Docker Hub, можно:
Изменить публичный репозиторий, используемый по умолчанию, можно:
Передайте параметр --registry-mirror с нужным значением вручную при запуске dockerd.
Чтобы не менять репозиторий каждый раз вручную:
Добавьте в файл /etc/docker/daemon.json ключ-значение:
{"registry-mirrors": ["https://your-registry-mirror-url"]}
Где https://your-registry-mirror-url замените на URL нужного зеркала.
Сохраните файл и перезапустите Docker, чтобы изменения вступили в силу.
Убедитесь, что в /etc/containerd/config.toml задано:
plugins."io.containerd.grpc.v1.cri".registry.config_path = "/etc/containerd/certs.d"
Создайте файл /etc/containerd/certs.d/docker.io/hosts.toml с содержимым:
server = "https://registry-1.docker.io"host."https://your-registry-mirror-url".capabilities = ["pull", "resolve"]
Где https://your-registry-mirror-url замените на URL нужного зеркала.
Перезапустите containerd.
Автоматизируйте процесс изменения публичного репозитория по умолчанию с помощью параметра Post-installation Command во время создания узла.
Ограничения и особенности сервиса Cloud Container Engine:
Одновременно можно загрузить не больше 10 файлов. Размер файла после распаковки не должен превышать 2 ГБ.
Пакет образа создается с использованием механизма контейнеров 1.11.2 или более поздней версии.
Перед началом работы:
Убедитесь, что в SoftWare Repository for Container создана организация или создайте новую.
Убедитесь, что образ упакован в архив .tar или .tar.gz.
Чтобы загрузить образ в SWR:
Войдите в консоль управления Advanced:
В списке сервисов выберите SoftWare Repository for Container.
В меню слева перейдите в раздел My Images.
В правом верхнем углу нажмите Upload Through SWR.
Выберите организацию, нажмите Select File и выберите файлы для загрузки.
Над списком файлов нажмите Upload, чтобы начать загрузку файлов по очереди.
Cloud Container Engine позволяет создавать рабочие нагрузки, используя образы из сторонних репозиториев. Для доступа к стороннему хранилищу образов может потребоваться аутентификация. В таком случае для данных аутентификации нужно создать секрет.
Указать сторонний репозиторий можно через консоль управления или kubectl.
Узел, на котором выполняется рабочая нагрузка, должен быть доступен из публичной сети.
Войдите в консоль управления Advanced:
В списке сервисов выберите Cloud Container Engine.
Нажмите на название нужного кластера.
(Опционально) Если для доступа к репозиторию нужна аутентификация, создайте секрет в разделе ConfigMaps and Secrets → Secrets.
При создании в поле Secret Type выберите kubernetes.io/dockerconfigjson.
При создании рабочей нагрузки в поле Image Name введите путь к образу в формате domain-name/namespace/image-name:tag. Например:
your-registry-mirror-url/library/nginx:stable-perl
(Опционально) Если для доступа к репозиторию требуется аутентификация, при создании рабочей нагрузки в поле Image Access Credential выберите секрет, созданный ранее.
Задайте все остальные параметры и нажмите Create Workload.
(Опционально) Если для доступа к репозиторию нужна аутентификация, создайте секрет kubernetes.io/dockerconfigjson:
kubectl create secret docker-registry myregistrykey -n default --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
Где:
myregistrykey — имя ключа;
default — пространство имен, в котором находится ключ;
DOCKER_REGISTRY_SERVER — URL или IP-адрес репозитория;
DOCKER_USER — имя пользователя;
DOCKER_PASSWORD — пароль пользователя;
DOCKER_EMAIL — email.
Создайте рабочую нагрузку с использованием стороннего образа:
apiVersion: v1kind: Podmetadata:name: foonamespace: defaultspec:containers:- name: fooimage: your-registry-mirror-url/library/nginx:stable-perlimagePullSecrets:- name: myregistrykey
Где myregistrykey — опциональный параметр.
Чтобы изменить репозиторий для скачивания образов у существующего кластера, отредактируйте конфигурацию через консоль управления Advanced. Для этого:
Войдите в консоль управления Advanced:
В списке сервисов выберите Cloud Container Engine.
Нажмите на название нужного кластера.
В меню слева перейдите в раздел Workloads.
Напротив нужной рабочей нагрузки нажмите More → Edit YAML.
Найдите раздел файла, в котором задается репозиторий, и укажите нужный:
spec:containers:- name: container-nameimage: your-registry-mirror-url/library/nginx:stable-perl