logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    服务概览
    ansible
    chrony时间服务器
    dnsmasq
    ffmpeg
    frp
    ftp
    gitea
    gitlab
    jenkins
    lsyncd
    minio(私有化oss)
    nacos
    nexus3(私有仓库)
    ossftp
    redmine
    registry(docker私有仓库)
    saltstack
    svn
    上一页redmine下一页saltstack

    #registry

    #私有仓库

    #docker-compose.yml

    version: "3"
    services:
      registry:
        image: registry:2.8.3
        container_name: registry
        restart: always
        ports:
          - 5000:5000
        environment:
          REGISTRY_AUTH: htpasswd
          REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd
          REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
        volumes:
          - ./data/registry:/var/lib/registry
          - ./config:/etc/docker/registry
      registry-web:
        image: klausmeyer/docker-registry-browser
        container_name: registry-web
        ports:
          - 8083:8080
        environment:
          - DOCKER_REGISTRY_URL=https://xxx.top
          - PORT=8080
          - NO_SSL_VERIFICATION=false
          - PUBLIC_REGISTRY_URL=xxx.top
          - TOKEN_AUTH_USER=
          - TOKEN_AUTH_PASSWORD=
          - ENABLE_DELETE_IMAGES=true
          - SECRET_KEY_BASE=xxx
    

    #config/config.yaml

    version: 0.1
    log:
      fields:
      service: registry
    storage:
      cache:
        blobdescriptor: inmemory
      filesystem:
        rootdirectory: /var/lib/registry
      delete:
        enabled: true
    http:
      addr: :5000
      headers:
        X-Content-Type-Options: [nosniff]
    health:
      storagedriver:
        enabled: true
        interval: 10s
        threshold: 3
    
    Tip

    SECRET_KEY_BASE参数使用openssl rand -hex 64获取

    启动好以后,如果没有配过ssl证书,或者ssl证书链不完整(修复地址),需要在对应的服务器上在/etc/docker/daemon.json中增加"insecure-registries"配置

    {
      "insecure-registries": [
          "http://xxx.com"
      ],
      "registry-mirrors": [
        "https://pee6w651.mirror.aliyuncs.com"
      ],
      "data-root": "/data/data-docker",
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "tcp://127.0.0.1:514",
        "tag": "docker/{{.Name}},"
       }
    }
    Tip

    如果不需要密码去掉这三行

        environment:
          REGISTRY_AUTH: htpasswd
          REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd
          REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
    Tip

    如果有密码,则需要生成密码并配置

    yum install -y httpd-tools
    
    htpasswd -c -B -b htpasswd username password
    Tip

    最后在需要使用的机器上登录docker login xxx.com

    #代理仓库

    #registry-proxy.sh

    #!/bin/bash
    
    # 海外代理
    
    docker rm -f registry
    docker run -d \
    --restart=always \
    --name registry \
    --network host \
    -e REGISTRY_HTTP_ADDR=":5000" \
    -e REGISTRY_HTTP_HEADERS_X-Content-Type-Options="[nosniff]" \
    -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
    -e REGISTRY_STORAGE_MAINTENANCE="{\"readonly\":{\"enabled\":true},\"uploadpurging\":{\"enabled\":true,\"age\":\"72h\",\"dryrun\":false,\"interval\":\"12h\"}}" \
    -v ./data/registry:/var/lib/registry \
    registry:2.8.3
    Tip

    然后在registry-mirrors中填上域名即可(原来填写镜像的地方)

    readonly.enabled:这个选项将 Docker Registry 设置为只读模式。设置为 true 表示启用只读模式,在这种模式下,注册表中的内容不能被修改或删除,只能被读取。

    uploadpurging.enabled:这个选项启用上传清理功能。设置为 true 表示启用此功能。

    uploadpurging.age:这个选项指定了未完成的上传在被清理之前的最大年龄。8760h 表示 8760 小时,也就是一年。这意味着任何未完成的上传文件如果超过 8760 小时(1 年)将会被清理。

    uploadpurging.dryrun:这个选项用于测试清理功能。设置为 false 表示实际执行清理操作,而不是仅进行模拟。

    uploadpurging.interval:这个选项指定了执行清理操作的时间间隔。24h 表示每 24 小时执行一次清理操作。