如何从Vuberrant上的Kubernetes访问私有Docker Hub存储库

时间:2016-03-26 07:46:43

标签: docker kubernetes

我无法从我的私有Docker Hub存储库进入我在Vagrant上运行的本地Kubernetes设置:

  

Container" hellonode"在pod" hellonode-n1hox"正在等待开始:图像不可能   拉

     

无法提取图片"用户名/ hellonode":错误:图片用户名/ hellonode:最新未找到

我已按照here描述的方式通过Vagrant在本地设置了Kubernetes并创建了一个名为" dockerhub"使用 kubectl创建秘密docker-registry dockerhub --docker-server = https://registry.hub.docker.com/ --docker-username = username --docker-password = ... --docker-email = ... 我提供的图像拉秘密。

我正在运行Kubernetes 1.2.0。

3 个答案:

答案 0 :(得分:68)

从Kubernetes YAML中提取私有DockerHub托管图像:

运行以下命令:

DOCKER_REGISTRY_SERVER=docker.io
DOCKER_USER=Type your dockerhub username, same as when you `docker login`
DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login`
DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login`

kubectl create secret docker-registry myregistrykey \
  --docker-server=$DOCKER_REGISTRY_SERVER \
  --docker-username=$DOCKER_USER \
  --docker-password=$DOCKER_PASSWORD \
  --docker-email=$DOCKER_EMAIL

如果您在DockerHub上的用户名是DOCKER_USER,并且您的私人仓库被称为PRIVATE_REPO_NAME,并且您要提取的图片被标记为latest,请创建此example.yaml文件:

apiVersion: v1
kind: Pod
metadata:
  name: whatever
spec:
  containers:
    - name: whatever
      image: DOCKER_USER/PRIVATE_REPO_NAME:latest
      imagePullPolicy: Always
      command: [ "echo", "SUCCESS" ]
  imagePullSecrets:
    - name: myregistrykey

然后运行:

kubectl create -f example.yaml

答案 1 :(得分:7)

创建k8秘密:

https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries

然后在pod或rc config中提到秘密。示例:

apiVersion: v1
kind: Secret
metadata:
  name: repositorySecretKey
data:
  .dockerconfigjson: <base64 encoded docker auth config>
type: kubernetes.io/dockerconfigjson

Docker auth config

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-pod
      image: quay.io/example/hello:1.1
  imagePullSecrets:
    - name: repositorySecretKey

{
   "https://quay.io": {
    "email": ".",
    "auth": "<base64 encoded auth token>"
  }
}

答案 2 :(得分:0)

您可以在how to configure nodes to authenticate to a private repository上按照这些说明操作,以便配置kubelet以使Docker使用您的凭据,或者遵循+ Phagun Baya的解决方案,使用适用于pod的imagePullSecrets。