指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
docker之加速器配置以及修改默认仓库地址

通过如下命令进入docker仓库配置

$ vim /etc/docker/daemon.json
docker 镜像加速器配置

{ "registry-mirrors": [ "https://docker.1ms.run" ] }

👌 你这个配置里的

{
  "registry-mirrors": [
    "https://docker.1ms.run"
  ]
}

是 配置镜像加速器(mirror),而不是直接改 Docker 的默认仓库地址。

区别要搞清楚:

  1. 默认仓库 (default registry)

    • https://registry-1.docker.io (官方 Docker Hub 的注册服务器)

    • 在镜像名称中简写为 docker.io

    • 默认的命名空间是 library,所以 nginx 实际全名是 docker.io/library/nginx

    • 也就是说,docker pull nginx 依然是去拉 docker.io/library/nginx:latest。

  2. 镜像加速器 (registry-mirror)

    • Docker 在访问 docker.io 时,会先通过你配置的镜像加速器(https://docker.1ms.run)去拉。
    • 如果加速器有缓存,就直接下;如果没有,它会再去 Docker Hub 拉取,然后缓存起来。
    • 常见于国内网络环境,用于解决访问 Docker Hub 慢或者被墙的问题。
  3. 如果你想改成真正的“默认仓库”(比如所有 docker pull xxx 都不是从 Docker Hub,而是从你自己的仓库),需要改成这样:

{
  "registry-mirrors": ["https://docker.1ms.run"],
  "registry": "https://registry.mycompany.com"
}

这样 docker pull nginx 就会去你的 registry.mycompany.com 找,而不是 docker.io。

修改默认仓库地址

{ "registry": "https://registry.mycompany.com" }

1. 默认情况下

docker pull nginx

等价于:

docker pull docker.io/library/nginx:latest

镜像会显示为:

REPOSITORY          TAG       IMAGE ID       ...
nginx               latest    xxxx

但实际上完整名是 docker.io/library/nginx:latest。

2. 如果你在 /etc/docker/daemon.json 配置了
{
  "registry": "https://registry.mycompany.com"
}

那么:

docker pull nginx

就会变成去拉:

registry.mycompany.com/library/nginx:latest

镜像本地保存时的完整信息就是:

registry.mycompany.com/library/nginx:latest

(注意:Docker Hub 的 library 命名空间是“默认公共库”的概念,你自己私有仓库可能也需要加 library 才能兼容)

3. 验证方式

你可以在拉取后执行:

docker images

会看到:

REPOSITORY                              TAG       IMAGE ID       ...
registry.mycompany.com/library/nginx    latest    xxxx

如果不想带上 library,你需要在拉取时明确写出仓库路径,比如:

docker pull registry.mycompany.com/nginx:latest

那保存下来的就是 registry.mycompany.com/nginx:latest。


docker官方仓库: https://hub.docker.com/u/library

如果要自己搭建一个mirror,主要有三种方式

搭建自己的Docker镜像源有几种方案,我来详细介绍:

方案一:使用官方Docker Registry作为Mirror
方案二:使用docker-compose部署(具体配置,这个下次自己操作以后再写)
方案三:使用Nginx作为缓存代理
1. 使用docker-compose方式(推荐,下面基于方案二来理解,因为没有自己搭建,所以先记录一下)
# 创建目录
mkdir docker-mirror && cd docker-mirror

# 下载上面的配置文件
# 创建数据目录
mkdir data

# 启动服务
docker-compose up -d

# 查看状态
docker-compose logs -f
2. 配置客户端使用
{
  "registry-mirrors": [
    "http://your-server-ip:5000"
  ]
}
3. 验证是否工作
# 测试拉取
docker pull hello-world

# 检查镜像源日志
docker-compose logs docker-mirror
高级配置

1. 添加HTTPS支持

# 生成证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout tls.key -out tls.crt
2. 添加认证
# 在config.yml中添加
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/docker/registry/htpasswd
3. 多镜像源支持

可以同时代理多个镜像仓库:

  • Docker Hub
  • Quay.io
  • GCR.io
  • 阿里云等
注意事项
  1. 存储空间 - 缓存会占用大量磁盘空间
  2. 网络带宽 - 首次拉取仍需要从官方下载
  3. 定期清理 - 设置缓存清理策略
  4. 安全性 - 考虑访问控制和HTTPS
  5. 监控 - 添加日志和监控指标

这样你就有了自己的Docker镜像源,既能加速下载,又能在网络受限时提供服务!

自建 Docker 镜像加速&缓存服务(下面是别人搭建的,但是和我上面的差不多)
https://v2ex.com/t/1048655
https://github.com/brighill/registry-mirror