一、创建密钥
使用 docker repository 的用户信息来生成 secret
kubectl create secret
\ docker-registry <secret-name>
\ --docker-server=<host:port>
\ --docker-username=<docker user>
\ --docker-password=<docker user psw >
\ --docker-email=<email>
参数含义:
- docker-registry 指定密钥的键名称, 自定义
- docker-server: 指定 docker 仓库地址
- docker-username: 指定 docker 仓库账号
- docker-password: 指定 docker 仓库密码
二、使用imagePullSecrets指定拉取镜像时的身份验证信息
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
imagePullSecrets:
- name: <secret-name> # 与第一步生成密钥时一致
containers:
- name: nginx
image: <private-repository-host:port>/nginx # 与第一步生成密钥时一致,私有仓库host和端口号
三、可能遇到的问题:
1. http: server gave HTTP response to HTTPS client
原因:为私服没有开启https
解决方案(Linux):
- 编辑/etc/docker/daemon.json文件,在里面加入如下内容:
{"insecure-registries":["仓库ip:port"]}
- 重启Docker
systemctl daemon-reload
systemctl restart docker