从一个私有的仓库拉取镜像
登录Docker
docker login
当出现提示的时候,输入Docker的用户名和密码。
登录的过程创建或更新config.json文件来保存验证信息。
查看config.json文件:
cat ~/.docker/config.json
输出包含下面类似的部分:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "c3R...zE2"
}
}
}
新建一个Secret保存验证信息
新建一个名字为regsecret的Secret:
kubectl create secret docker-registry regsecret --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
参数解释
- <your-registry-server> Docker私有的镜像存储地址。
- <your-name> 仓库的用户名。
- <your-pword> 仓库的密码。
- <your-email> 仓库的email。
理解Secret
可以通过查看Secret YAML格式的试图来理解在Sercet创建了什么。
kubectc get secret regsecret --output=yaml
输出类似于下面:
apiVersion: v1
data:
.dockercfg: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
kind: Secret
metadata:
...
name: regsecret
...
type: kubernetes.io/dockercfg
.dockercfg字段的值是base64编码过得数据。
复制这个数据给一个名字为secret64的文件。
理解.dockercfg字段的内容是什么,可以转换成可读的格式。
base64 -d secret64
输出类似于下面:
{"yourprivateregistry.com":{"username":"janedoe","password":"xxxxxxxxxxx","email":"jdoe@example.com","auth":"c3R...zE2"}}
注意 秘密数据包含config.json文件里面的验证信息。
创建一个Pod使用你的Secret
下面是一个pod的配置文件需要访问秘密数据:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regsecret
把<your-private-image>替换成自己的私有仓库的镜像。
例如:
janedoe/jdoe-private:v1
从私有的镜像仓库拉取镜像Kubernetes需要认证信息。imagePullSecrets字段配置从名字为regsecret的Secret里面获取认证信息。
创建一个Pod使用Secret,并且验证Pod是否运行。
kubectl create -f my-private-reg-pod.yaml
kubectl get pod private-reg