前言
此篇主要是记录测试Docker registry使用minio作为镜像存储的可用性,目的是一台节点掉线后,docker registry还能用,因为实际场景需要优先满足只有两台机器的场景,不足以以多节点多驱动的形式搭建minio,所以采用形式部署Minio。
思路:两个节点都配置VIP, 运行minio(站点复制), 配置docker resgistry(s3.regionendpoint http://vip:9000
)
让节点掉线后,vip跳转,镜像仓库访问vip所在节点。
安装部署
minio安装(两个节点)
主要目的是测试Docker registry使用minio作为镜像存储的可用性,所以minio就简单运行
wget https: dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/
- 运行Minio 单节点单驱动无需挂载目录,简易运行测试
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
mkdir /data/minio
chown minio-user:minio-user /data/minio
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=adminadmin
minio server /data/minio
- 配置 Site Replication 我用的
Console
来配置
Keepalived配置vip(两个节点)
这里就不展开细讲,网上教程很多,这是我当时参考的博客
配置docker registry(两个节点)
docker load -i registry--2.8.3.tar.gz
mkdir /etc/docker/registry/
vim /etc/docker/registry/config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
delete:
enabled: true # 允许删除
s3:
#minio的用户名和密码
accesskey: admin
secretkey: adminadmin
#region参数可随意
region: us-east-1
#对外访问地址,填写keepalived的vip地址
regionendpoint: http://192.168.44.100:9000
#minio中的bucket名称
bucket: registry
encrypt: false
secure: false
v4auth: true
chunksize: 5242880
rootdirectory: /
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
配置docker(两个节点)
minio服务端创建Buckets: registry
修改
/etc/docker/daemon.json
{ "insecure-registries": ["192.168.44.100:1080"], "exec-opts":["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "live-restore": true }
加上了这句
"insecure-registries": ["192.168.44.135:1080"],
没有这句push时会出现下面提示The push refers to repository [192.168.44.135:1080/nginx] Get "https://192.168.44.135:1080/v2/": http: server gave HTTP response to HTTPS client
重启docker
systemctl daemon-reload systemctl restart docker
运行
docker run -d -p 1080:5000 \
-v /etc/docker/registry:/etc/docker/registry \
--restart always \
--name=registry registry:2.8.3
后记
站点复制有个缺陷,就是上传一个镜像到A后,在同步到B期间如果节点A宕机,此时docker pull就会出现问题,目前没有想到更好的解决办法,毕竟要优先保证两台机器下的镜像仓库的可用性,不满足多节点多驱动的节点数量。如果有大佬有好的解决方案,还望指点一二。