Skip to content

Docker自建镜像加速

搭建registry服务

搭建registry服务

yaml
services:

  registry:
    # image: registry:3.0
    image: registry:2.8
    container_name: registry
    restart: always
    ports:
      - 3003:5000
    volumes:
      - ./data/registry:/var/lib/registry
    environment:
      # 如果是国外设置这个
#      REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io
      # 如果是腾讯云的服务器,可以设置这个
      REGISTRY_PROXY_REMOTEURL: https://mirror.ccs.tencentyun.com
bash
server {
    listen 80;
    listen 443 ssl;
    server_name 0xj82etb.mirror.ccs.httpsok.com;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
    
    access_log /var/log/nginx/0xj82etb.mirror.ccs.httpsok.com.https.log;
    ssl_certificate certs/0xj82etb.mirror.ccs.httpsok.com.pem;
    ssl_certificate_key certs/0xj82etb.mirror.ccs.httpsok.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:3003;
    }

}

启动容器

bash
docker start registry

设置镜像代理地址

在没法访问国外的镜像源的时候,可以设置镜像代理地址

设置镜像代理地址

json
{
  "registry-mirrors": ["https://0xj82etb.mirror.ccs.httpsok.com/"]
}

重启docker服务

bash
systemctl restart docker

测试拉取

没有配置镜像代理地址,会报如下错误

bash
root@sh1:~# docker pull busybox:1.37.0
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
root@sh1:~#

配置好镜像代理后,秒拉

image-20250625172949467

查看registry日志

image-20250625205535958

管理Registry

bash
# 列出所有镜像
curl https://0xj82etb.mirror.ccs.httpsok.com/v2/_catalog
{"repositories":["jenkins/jenkins","library/busybox"]}

# 列出某个镜像的标签(如 busybox)
# 所有tag列表
curl https://0xj82etb.mirror.ccs.httpsok.com/v2/library/busybox/tags/list

# 列出当前的tags(暂时不可用)
#curl https://0xj82etb.mirror.ccs.httpsok.com/v2/busybox/tags/list

可视化管理

人生感悟