Внутренний реестр докеров OpenShift недоступен
Я пытаюсь подключиться к внутреннему реестру докеров кластера openshift с помощью
/bin/docker login -u user -p password` `oc get svc -n default | grep docker-registry `:5000
Получение следующего сообщения:
Error response from daemon: Get https://VirtualIP:5000: cannotconnect
1 ответ
Я предполагаю, что вы используете OpenShift версии 4. Возможно, это может быть даже в форме контейнеров CodeReady (тип среды разработки OpenShift 4 с одним узлом).
OpenShift предоставит доступ к своему реестру контейнеров по следующему URL-адресу:
https://default-route-openshift-image-registry.apps-crc.testing:5000/
(где apps-crc.testing — это домен приложения, которое есть в вашем развертывании). Обратите внимание, что это ВНЕШНИЙ доступ к хранилищу изображений; внутри вы захотите обратиться к изображению (в данном случае к изображению «shiny-proxy:latest» в проекте «shiny») следующим образом:
image-registry.openshift-image-registry.svc:5000/shiny/shiny-proxy:latest
Для контейнеров CodeReady вы можете увидеть:https://code-ready.github.io/crc/#accessing-the-internal-openshift-registry_gsg .
Это также поможет вам решить проблемы с сертификатами (например, самозаверяющими сертификатами).
Обратите особое внимание на то, как вы входите в систему; вы не используете пароль, а вместо этого используете токен, который можно получить с помощью «oc whoami -t».
PS> docker login -u developer -p $(oc whoami -t) `
https://default-route-openshift-image-registry.apps-crc.testing:5000/
Особое примечание для контейнеров CodeReady и режима vsock.
Если вы используете режим «vsock». Вам нужно будет перенаправиться в службу регистрации изображений (от имени kubeadmin; пользователь-разработчик не будет иметь доступа). Кроме того, демон Docker должен иметь возможность подключаться к этому перенаправленному порту, а 127.0.0.1 не будет работать, поэтому разрешите переадресацию порта для подключения к 0.0.0.0 (обратите внимание на потенциальную проблему доступа) и подключите Docker. в «host.docker.internal».
PS> oc -n openshift-image-registry port-forward service/image-registry 5000:5000 --address 0.0.0.0
Вам необходимо настроить небезопасные реестры Docker Daemon, чтобы добавить host.docker.internal:
{
"registry-mirrors": [],
"insecure-registries": [
"host.docker.internal:5000"
],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
}
}
PS> docker login -u developer -p $(oc whoami -t) host.docker.internal:5000
Конечно, имя «host.docker.internal» вводит в заблуждение, поскольку это внутренний реестр OpenShift. Давайте пометим и отправим изображение в OpenShift.
PS> docker tag openshift-r-shiny:latest host.docker.internal:5000/cameron-rshiny/openshift-r-shiny:latest
docker push host.docker.internal:5000/cameron-rshiny/openshift-r-shiny:latest
Проверять:
PS> oc -n cameron-rshiny get is
NAME IMAGE REPOSITORY TAGS UPDATED
openshift-r-shiny default-route-openshift-image-registry.apps-crc.testing/cameron-rshiny/openshift-r-shiny latest About a minute ago
См. также [Epic] демон GA.