Docker registry + minio

前言

此篇主要是记录测试Docker registry使用minio作为镜像存储的可用性,目的是一台节点掉线后,docker registry还能用,因为实际场景需要优先满足只有两台机器的场景,不足以以多节点多驱动的形式搭建minio,所以采用Site Replication形式部署Minio。

思路:两个节点都配置VIP, 运行minio(站点复制), 配置docker resgistry(s3.regionendpoint http://vip:9000)

让节点掉线后,vip跳转,镜像仓库访问vip所在节点。

安装部署

minio安装(两个节点)

主要目的是测试Docker registry使用minio作为镜像存储的可用性,所以minio就简单运行

  1. 下载安装minio二进制文件
wget https: dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/
  1. 运行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
  1. 配置 Site Replication
    配置教程
    我用的Console来配置
Keepalived配置vip(两个节点)

这里就不展开细讲,网上教程很多,这是我当时参考的博客

  • https://developer.aliyun.com/article/979855
  • https://www.cnblogs.com/hahaha111122222/p/16415900.html
配置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(两个节点)
  1. minio服务端创建Buckets: registry

  2. 修改/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.100: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
    
  3. 重启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就会出现问题,目前没有想到更好的解决办法,毕竟要优先保证两台机器下的镜像仓库的可用性,不满足多节点多驱动的节点数量。如果有大佬有好的解决方案,还望指点一二。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值