Недоступность 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 позволяет создавать рабочие нагрузки, используя образы из сторонних репозиториев. Для доступа к стороннему хранилищу образов может потребоваться аутентификация. В таком случае для данных аутентификации нужно создать секрет (en).
Указать сторонний репозиторий можно через консоль управления или 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