Docker镜像仓库地址配置分为全局访问路径(/etc/docker/daemon.json)和认证信息(~/.docker/config.json)两类:前者通过registry-mirrors、insecure-registries等字段指定拉取路径,后者通过auths字段以Base64编码存储各仓库的用户名密码,命令行可临时指定完整地址如registry.example.com/myapp:v1.2。

Docker 镜像仓库地址配置主要分两类:让 Docker 客户端知道“去哪拉镜像”(访问路径),和告诉它“你是谁、能不能进”(认证信息)。写法取决于你要配的是加速器、私有仓库,还是多仓库混合环境。
一、全局访问路径配置(/etc/docker/daemon.json)
这个文件控制 Docker 守护进程的行为,适用于所有用户和容器。修改后需重启 Docker。
常见配置项:
-
registry-mirrors:指定镜像加速器地址(用于加快拉取 Docker Hub 镜像) -
insecure-registries:允许通过 HTTP 访问的私有仓库(仅限内网测试,生产环境必须用 HTTPS) -
allow-nondistributable-artifacts:允许推送含非分发层(如 Windows base layer)的镜像到指定仓库
示例(Linux 系统):
{
"registry-mirrors": ["https://u7z3y4t9.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.10.50:5000", "registry-dev.local:8080"],
"allow-nondistributable-artifacts": ["registry-dev.local:8080"]
}✅ 修改后执行:
sudo systemctl restart docker
⚠️ 注意:
-
registry-mirrors只对默认仓库(Docker Hub)生效,不作用于带域名前缀的镜像(如harbor.example.com/nginx) -
insecure-registries中的地址不能带协议头(写192.168.10.50:5000,不要写http://...)
二、认证信息配置(~/.docker/config.json)
这个文件存登录凭证,决定你能否 push/pull 私有或受保护的仓库。
格式为 JSON,auths 字段下按仓库地址(含协议和端口)映射 Base64 编码的 username:password。
示例:
{
"auths": {
"https://registry.example.com": {
"auth": "dXNlcjpwYXNzd29yZA=="
},
"https://cn-shanghai.cr.aliyuncs.com": {
"auth": "YWJjOmRlZg=="
}
}
}✅ 如何生成 auth 值(Linux/macOS):
echo -n "username:password" | base64
✅ 登录方式(推荐,自动写入 config.json):
docker login registry.example.com # 按提示输入用户名密码即可
✅ Windows PowerShell 等效命令:
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("username:password"))三、命令行临时指定仓库地址(无需配置文件)
适合脚本、CI 或一次性操作,直接在镜像名前加完整地址:
# 拉取私有仓库中的镜像 docker pull registry.example.com/myapp:v1.2 # 推送前先打标签 docker tag my-local-image:latest registry.example.com/team/myapp:latest docker push registry.example.com/team/myapp:latest
? 地址格式规则:
- 必须包含域名/IP + 端口(如有)
- 若用 HTTPS,默认端口 443 可省略;HTTP 默认端口 80 可省略,但自定义端口(如
:5000)必须显式写出 - 不要漏掉项目/命名空间,例如
devops/nginx而非只写nginx
四、常见写法错误提醒
- ❌ 错误:在
daemon.json的insecure-registries里写http://192.168.1.100:5000→ 应去掉http:// - ❌ 错误:
config.json中auths的 key 写成registry.example.com却实际访问https://registry.example.com→ 协议必须一致 - ❌ 错误:加速器地址写成
https://docker.mirrors.ustc.edu.cn/v2/→ 加速器地址是 registry proxy,不是标准 registry API 地址,不能带/v2/ - ❌ 错误:多个私有仓库共用同一份认证 → 每个仓库地址需单独配置
auth,不可复用 key
不复杂但容易忽略细节。


















