官方api文档

https://docs.docker.com/reference/api/registry/latest/

Download OpenAPI specification

Docker - Registry

获取所有镜像列表,找到镜像的 name

curl -s http://127.0.0.1:5000/v2/_catalog

获取镜像tag

GET /v2//tags/list

curl -s http://127.0.0.1:5000/v2/<name>/tags/list | jq

获取manifest信息 GET /v2//manifests/

curl -s  http://registry.local:5000/v2/flannel/flannel/manifests/v0.25.3 | jq

安装部署

# docker run \
  -d \
  -p 5000:5000 \
  --restart always \
  --name registry \
  -v /data/registry-data:/var/lib/registry \
  registry:2
  • 部署带SSL证书的registry

    • 创建目录
      mkdir /data/docker.registry
      mkdir -p /data/docker.registry/etc/cert.d
      mkdir -p /data/docker.registry/var/lib/registry
      
    • install crt 复制registry.crt文件和registry.key文件到/data/docker.registry/etc/cert.d下面
      # cp registry.crt /data/docker.registry/etc/cert.d/registry.crt
      # cp registry.key /data/docker.registry/etc/cert.d/registry.key
      
    • 创建服务
      docker run -d \
      --name registry \
      -h registry \
      -p 5000:5000 \
      --memory 512m \
      --memory-swap -1 \
      --restart always \
      -v /data/docker.registry/etc/cert.d:/etc/cert.d \
      -v /data/docker.registry/var/lib/registry:/var/lib/registry \
      -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/cert.d/registry.crt \
      -e REGISTRY_HTTP_TLS_KEY=/etc/cert.d/registry.key \
      docker.io/registry
      

systemd 部署 registry 服务

  • 下载二进制 registry 二进制下载地址
    https://github.com/distribution/distribution/releases

    # chmod +x /usr/local/bin/registry
    
  • 设置 registry.service
    /etc/systemd/system/registry.service

    [Unit]
    Description=registry - docker registry
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    Restart=always
    RestartSec=5
    PIDFile=/var/run/registry.pid
    ExecStart=/usr/local/bin/registry serve /etc/docker/registry/config.yaml
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID  
    
    [Install]
    WantedBy=multi-user.target
    
  • 设置 config.yaml 文件
    /etc/docker/registry/config.yaml

    version: 0.1
    loglevel: info
    http:
      addr: :5000
      headers:
        Access-Control-Allow-Origin: ['*']
    storage:
      delete:
        enabled: true
      filesystem:
        rootdirectory: /data/image_registry
        maxthreads: 500