【发布时间】:2019-03-05 19:00:21
【问题描述】:
现状
我在 DigitalOcean 上创建了一个 Kubernetes 集群。我想部署一个托管在私有中的 Docker 映像,该私有映像又属于 Docker Hub 中的一个组织。
- Docker Hub 组织名称(示例):myorg
- Docker Hub 存储库名称(示例):myorg/mo-server
所以为了推送新图片,我使用docker push myorg/mo-server
(注意:上面的示例在我的真实姓名中的图像名称中包含破折号(-)
问题
当我尝试使用 kubectl 将该 docker 映像部署到 kubernetes 时,部署总是以状态 ErrImagePull 结束。错误信息:
ailed to pull image "index.docker.io/myorg/mo-server": rpc error: code = Unknown desc = Error response from daemon: pull access denied for myorg/mo-server, repository does not exist or may require 'docker login'
到目前为止我尝试了什么
因为它是一个私有存储库,所以我预先创建了一个秘密。为此,我使用了自己的用户名和电子邮件。
set DOCKER_REGISTRY_SERVER=https://index.docker.io/v1/
set DOCKER_USER=sarensw
set DOCKER_EMAIL=stephan@myorg.com
set DOCKER_PASSWORD=...
凭据与我使用 docker login 时的凭据相同。然后我使用以下方法创建一个秘密:
kubectl create secret docker-registry regcred
--docker-server=%DOCKER_REGISTRY_SERVER%
--docker-username=%DOCKER_USER%
--docker-password=%DOCKER_PASSWORD%
--docker-email=%DOCKER_EMAIL%
然后,我使用kubectl create 创建一个新部署。
kubectl create -f ci\helper\kub-deploy-staging.yaml
kub-deploy-staging.yaml 如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mo-server
spec:
replicas: 1
selector:
matchLabels:
app: mo-server
template:
metadata:
labels:
app: mo-server
spec:
containers:
- name: mo-server
image: index.docker.io/myorg/mo-server
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
imagePullSecrets:
- name: regcred
如上所述,结果是ErrImagePull。
我很确定image: index.docker.io/myorg/mo-server 是罪魁祸首,因为它是我尝试与普通帐户一起使用的组织图像。而且所有访问私有镜像的教程都没有考虑到组织。
那我做错了什么?
(许多类似的)参考: https://gist.github.com/rkuzsma/b9a0e342c56479f5e58d654b1341f01e
【问题讨论】:
-
图片上没有标签?
-
我有。我试过有无。
标签: docker kubernetes dockerhub