banner
Hi my new friend!

Docker私有registry仓库部署

Scroll down

本文作者:丁辉

Docker私有registry仓库部署

部署 registry

Centos安装

1
yum -y install httpd-tools

Ubuntu安装

1
apt-get install apache2-utils
  1. 生成密码
1
htpasswd -Bbn user password > /opt/registry/htpasswd
  1. 创建 secret
1
kubectl create secret generic registry-password -n docker --from-file=/opt/registry/htpasswd
  1. 部署镜像仓库
1
vi registry.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: docker
name: docker-registry
spec:
replicas: 1
serviceName: docker-registry
selector:
matchLabels:
app: docker-registry
template:
metadata:
labels:
app: docker-registry
spec:
containers:
- name: docker-registry
image: registry:latest
env:
- name: REGISTRY_AUTH
value: htpasswd
- name: REGISTRY_AUTH_HTPASSWD_PATH
value: /auth/htpasswd
- name: REGISTRY_AUTH_HTPASSWD_REALM
value: Registry Realm
volumeMounts:
- mountPath: /var/lib/registry
name: data
- mountPath: /auth
name: registry-password
readOnly: true
volumes:
- name: data
hostPath:
path: /opt/registry/data
- name: registry-password
secret:
defaultMode: 420
secretName: registry-password
---
apiVersion: v1
kind: Service
metadata:
namespace: docker
name: docker-registry
spec:
selector:
app: docker-registry
ports:
- port: 5000
targetPort: 5000
protocol: TCP
type: ClusterIP
1
kubectl apply -f registry.yaml

Docker 配置私有仓库

1
vi /etc/docker/daemon.json
1
2
3
4
5
{
"insecure-registries": [
"192.168.1.100:5000"
]
}

创建 Ingress 对外提供访问

  1. 创建 secret
1
kubectl create secret tls registry-ssl --key nginx.key --cert nginx.pem -n docker
  1. 部署 Ingress
1
vi registry-ingress.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "1024m"
name: registry-ingress
namespace: docker
spec:
ingressClassName: nginx
rules:
- host: #域名
http:
paths:
- pathType: Prefix
backend:
service:
name: docker-registry
port:
number: 5000
path: /
tls:
- hosts:
- #域名
secretName: registry-ssl
1
kubectl apply -f registry-ingress.yaml

registry 配置文件配置

1
vi /opt/registry/config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: 0.1
log:
fields:
service: registry

#这里添加存储类型

http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
Access-Control-Allow-Origin: ['*']

health:
storagedriver:
enabled: true
interval: 10s
threshold: 3

存储类型介绍

官网文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
storage: #本地存储
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry

storage: #配置s3类型存储
cache:
blobdescriptor: inmemory
s3:
accesskey: YOUR_MINIO_ACCESS_KEY #MinIO上设置的访问密钥ID
secretkey: YOUR_MINIO_SECRET_KEY #MinIO上设置的访问密钥
region: local #MinIO存储桶所在的地域或区域
regionendpoint: http://x.x.x.x:9000 #MinIO地址
bucket: YOUR_MINIO_BUCKET_NAME #MinIO存储桶的名称
encrypt: false #可选项,是否启用加密传输
secure: true #可选项,是否使用 HTTPS 连接到 MinIO
v4auth: true #可选项,使用 MinIO v4 版本认证
chunksize: 5242880 #可选项,分块上传时的块大小,单位为字节
rootdirectory: / #默认存储路径

# 配置Docker Registry的存储后端为阿里云对象存储服务 (OSS)
storage:
oss: #配置oss类型存储
# 用于访问OSS服务的Access Key ID,是进行身份验证的一部分
accesskeyid:
# 与Access Key ID 相对应的访问密钥,是进行身份验证的另一部分
accesskeysecret:
# OSS存储桶所在的地域,这里设置为oss-cn-shanghai表示存储桶位于阿里云上海地域
region: oss-cn-shanghai
# 用于存储Docker镜像的OSS存储桶的名称
bucket:
# 配置删除功能相关选项
delete:
# 是否启用Docker Registry的删除功能,这里设置为false表示禁用删除功能
enabled: false
# 配置重定向功能相关选项
redirect:
# 是否禁用Docker Registry的重定向功能,这里设置为false表示不禁用重定向功能
disable: false
# 配置维护功能相关选项
maintenance:
# 配置上传清理相关选项
uploadpurging:
# 是否启用上传清理功能,这里设置为true表示启用上传清理功能
enabled: true
# 镜像上传后保留的时间,这里设置为168h表示保留镜像上传后的168小时(7天)
age: 168h
# 执行清理的时间间隔,这里设置为24h表示每24小时执行一次上传清理
interval: 24h
# 是否启用“干跑”模式,干跑模式下不会真正删除镜像,仅模拟删除操作,这里设置为false表示不启用干跑模式
dryrun: false
# 配置只读模式相关选项
readonly:
# 是否启用只读模式,这里设置为false表示不启用只读模式
enabled: false
1
kubectl create secret generic registry-conf -n docker --from-file=/opt/registry/config.yml

添加存储

1
2
3
4
5
6
7
volumeMounts:
- mountPath: /etc/docker/registry
name: registry-conf
volumes:
- name: registry-conf
secret:
secretName: registry-conf

清理镜像仓库

  • 查看镜像
1
curl -u user:password http://<registry-url>/v2/_catalog
  • 查看镜像标签
1
curl -u user:password  -X GET http://<registry-url>/v2/<image-name>/tags/list
  • 删除
1
2
curl -I -XGET --header "Accept:application/vnd.docker.distribution.manifest.v2+json" \
-u user:password http://<registry-url>/v2/<IMAGE_NAME>/manifests/<TAG>
1
curl -I -XDELETE -u user:password http://<registry-url>/v2/<IMAGE_NAME>/manifests/<TAG>

I'm so cute. Please give me money.

其他文章
cover
部署Nginx
  • 23/11/28
  • 14:48
  • 未分类
cover
k8s-svc代理外部服务
  • 23/11/28
  • 14:48
  • 未分类
请输入关键词进行搜索