docker搭建私有仓库

docker搭建私有仓库

前言

我们都很熟悉Docker的公共仓库Docker Hub,我们使用的大部分Docker镜像基本都是来自于Docker Hub,它有一些基本用法,例如:

搜索镜像:docker search pytho

拉取镜像:docker pull python

推送镜像:docker push xxxx/yyyy:1.0

但有的时候,Docker Hub使用起来并不方便,对于企业来讲,一般都需要建立一个本地的私有仓库,来供企业内部使用。本章我们就来介绍下,如何基于docker-registry这个docker官方提供的工具,搭建一个私有的镜像仓库。

搭建docker私有仓库

安装httpd-tools

yum install httpd-tools -y

创建用户密码文件

mkdir -p /home/registry/auth
htpasswd -Bbn  thrj thrj@123 > /home/registry/auth/htpasswd

注意:网上有很多是这种方式: docker run --entrypoint htpasswd registry -Bbn username password auth/htpasswd 这个命令指运行docker窗口里的htpasswd命令。
但是现在使用这个命令一直报错:docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: “htpasswd”: executable file not found in $PATH: unknown.
因此使用httpd-tools来创建用户密码文件

创建带用户验证的仓库

docker run -d -p 5000:5000 --restart=always --name myregistry \
        -v /home/registry/data:/var/lib/registry \
        -v /home/registry/auth:/auth \
        -e "REGISTRY_AUTH=htpasswd" \
        -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
        -e  REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
        registry

解决远程不能访问问题

Error response from daemon: Get "https://192.168.2.123:5000/v2/": http: server gave HTTP response to HTTPS client

  1. 修改配置

    vim  /etc/docker/daemon.json
    
  2. 添加你的docker私服的ip和端口

    • 单个私服务

      "insecure-registries": ["106.13.2.249:5000"]
      
    • 多个私服务

      "insecure-registries": ["106.13.2.249:5000","106.13.2.250:5000"]
      
  3. 在私服加入加速镜像(后续登陆docker私服地址)

    "registry-mirrors": ["https://3ad96kxd.mirror.aliyuncs.com"]
    
  4. 重新加载配置和重启

    # 重新加载某个服务的配置文件
    systemctl daemon-reload
    # 重新启动 docker
    systemctl restart docker
    

查看与删除

查看私有仓库的镜像

使用方法:

curl -XGET -u <仓库用户名>:<用户名密码> http://<仓库ip地址>:<仓库端口>/v2/_catalog

curl -s -XGET -u thrj:thrj@123 http://192.168.2.122:5000/v2/_catalog | python -m json.tool
查看镜像tag
curl -s -XGET -u thrj:thrj@123 http://192.168.2.122:5000/v2/thrj/jiangsu/laboratorybizservice/tags/list | python -m json.tool
删除私有仓库指定镜像

查看当前镜像记录

curl -I -XGET --header "Accept:application/vnd.docker.distribution.manifest.v2+json" \
-u thrj:thrj@123 http://192.168.2.122:5000/v2/thrj/jiangsu/laboratorybizservice/manifests/1.0.0

获取当前镜像hash值

curl -I -XDELETE -u thrj:thrj@123 \
http://192.168.2.122:5000/v2/thrj/jiangsu/laboratorybizservice/manifests/sha256:1e1327f76f9ec81c7961a32ddb4b4086461f2f803ed7a4e63e0444e4fb3085a2

安装删除镜像插件

curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null sudo chmod a+x /usr/local/bin/delete_docker_registry_image

删除镜像(注意:/home/registry/data/docker/registry/v2属于docker挂载出来的目录)

export REGISTRY_DATA_DIR="/home/registry/data/docker/registry/v2" ls $REGISTRY_DATA_DIR delete_docker_registry_image --image trade-chat

参考博客链接:https://blog.csdn.net/imouse728/article/details/125620369

posted @ 2023-01-06 16:00  小学程序员  阅读(328)  评论(0编辑  收藏  举报