docker之加速器配置以及修改默认仓库地址
通过如下命令进入docker仓库配置
$ vim /etc/docker/daemon.json
docker 镜像加速器配置
{ "registry-mirrors": [ "https://docker.1ms.run" ] }
👌 你这个配置里的
{
"registry-mirrors": [
"https://docker.1ms.run"
]
}
是 配置镜像加速器(mirror),而不是直接改 Docker 的默认仓库地址。
区别要搞清楚:
默认仓库 (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。
镜像加速器 (registry-mirror)
- Docker 在访问
docker.io时,会先通过你配置的镜像加速器(https://docker.1ms.run)去拉。 - 如果加速器有缓存,就直接下;如果没有,它会再去 Docker Hub 拉取,然后缓存起来。
- 常见于国内网络环境,用于解决访问 Docker Hub 慢或者被墙的问题。
- Docker 在访问
如果你想改成真正的“默认仓库”(比如所有
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
- 阿里云等
注意事项
- 存储空间 - 缓存会占用大量磁盘空间
- 网络带宽 - 首次拉取仍需要从官方下载
- 定期清理 - 设置缓存清理策略
- 安全性 - 考虑访问控制和HTTPS
- 监控 - 添加日志和监控指标
这样你就有了自己的Docker镜像源,既能加速下载,又能在网络受限时提供服务!
自建 Docker 镜像加速&缓存服务(下面是别人搭建的,但是和我上面的差不多)
https://v2ex.com/t/1048655
https://github.com/brighill/registry-mirror
