当前位置: 首页 > news >正文

docker—私有仓库搭建

docker—私有仓库搭建

HTTP

部署

docker run -d \-p 5000:5000 \--restart=always \--name registry \-v /opt/data/registry:/var/lib/registry \registry:2
  • 使用官方的 registry​ 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 /var/lib/registry​ 目录下。你可以通过 -v​ 参数来将镜像文件存放在本地的指定路径,当然你也可以选择其它本地路径,上面的只是一个示例。

使用

  1. 配置非HTTPS方式推送镜像

    cat <<EOF | tee /etc/docker/daemon.json
    {"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com"],"insecure-registries": ["your_ip_addr:5000"]
    }
    EOFsystemctl daemon-reload
    systemctl restart docker
    
  2. push and pull

    docker tag $image $registry_host_address:5000/$image
    docker push $registry_host_address:5000/$image
    docker pull $registry_host_address:5000/$image
    
  3. check images

    curl your_ip_address:5000/v2/_catalog
    

HTTPS

部署

  1. registry_name

    export registry_name=registry.domain.local
    
  2. 生成证书

    sudo -E mkdir -p /opt/registry/certs/
    sudo -E openssl req \-newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/domain.key \-subj "/CN=${registry_name}" \-addext "subjectAltName = DNS:${registry_name}" \-x509 -days 365 -out /opt/registry/certs/domain.crt
    
  3. deploy registry

    docker run -d \--restart=always \--name registry \-v /opt/registry/certs:/certs \-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \-p 443:443 \registry:2
    
  4. add certificate to host trust chain

    1. 任何需要访问registry的主机都需要配置

    2. cat /etc/os-release

    3. case "ubuntu"|"debian"

      sudo cp /opt/registry/certs/domain.crt /usr/local/share/ca-certificates/$registry_name.crt
      sudo update-ca-certificates
      
    4. case "centos"|"fedora"|"alinux"

      sudo cat /opt/registry/certs/domain.crt >> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
      cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
      sudo update-ca-trust
      
    5. case "rhel"

      # https://access.redhat.com/solutions/3220561
      sudo cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
      sudo update-ca-trust extract
      cd /etc/pki/tls/certs/ && sudo openssl x509 -in ca-bundle.crt -text -noout
      
    6. case others, Please manual add registry certificates to host trust chain.

  5. Append the entry to allow ip-address resolved to the registry name

    任何需要访问registry的主机都需要配置

    registry_ip=`hostname -I | awk '{print $1}'`
    echo "$registry_ip   $registry_name" | sudo tee -a /etc/hosts
    
  6. Verifiy registry service works

    export no_proxy=$no_proxy,$registry_name
    if ! curl https://$registry_name/v2/_catalog ; thenif ! nc -zv $registry_name 443 ; thenecho "ERROR: failed to connect to 443 port "fiecho "ERROR: registry service is not ready"exit 1
    fi
    

使用

push and pull

docker tag $image $registry_address/$image
docker push $registry_address/$image
docker pull $registry_address/$image

注意:

  • push​的时候,需要把docker仓库设置成insecure-registries
  • pull​时不需要设置

注意

镜像拉取

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/registry:2
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/registry:2  docker.io/registry:2
http://www.lryc.cn/news/504106.html

相关文章:

  • 【SpringAOP】深入浅出SpringAOP从原理到源码
  • Java 从查询超时到性能提升 (实战讲解)
  • 《C 语言携手 PaddlePaddle C++ API:开启深度学习开发新征程》
  • Mysql之存储过程
  • XV6 开发环境搭建
  • Windows 系统下 Python 环境安装
  • VMware Workstation的有线连接消失了
  • 73页车企大数据平台规划与数据价值挖掘应用咨询项目方案解读
  • MIF格式详解,javascript加载导出 MIF文件示例
  • 若依实现图片上传时自动添加水印
  • 用于日语词汇学习的微信小程序+ssm
  • 【信息系统项目管理师】高分论文:论信息系统项目的范围管理(融媒体发布系统)
  • Kaggler日志--Day5
  • VScode MAC按任意键关闭终端 想要访问桌面文件
  • 小粑记故乡的记忆
  • git使用小记
  • Python实现办公自动化——自动编写word文档
  • 番外篇 | BGF-YOLO:引入双层路由注意力、广义特征金字塔网络和第四检测头,提高YOLOv8检测性能
  • Python运维自动化之字典Dict
  • axios请求拦截器和响应拦截器,封装naive-ui的 Loading Bar加载条和useMessage消息提示
  • 9.Python 条件语句和循环语句
  • 智能家居控制系统设计
  • Windows系统word插入公式自动编号并交叉引用
  • 0.基础语法
  • mysql命令行界面(黑框)的登录
  • 【机器学习】解构概率,重构世界:贝叶斯定理与智能世界的暗语
  • threejs——无人机概念切割效果
  • electron学习笔记(一)
  • 基于Arduino蹲便器的自动清洁系统(论文+源码)
  • 【JavaWeb后端学习笔记】使用HttpClient发送Http请求