docker客户端配置独立于守护进程,核心文件为~/.docker/config.json,存储认证信息、代理、http头等用户级设置,首次docker login或手动创建即生效,无需重启服务。
docker 客户端本身不依赖 daemon.json,它的配置是独立的、用户级的,主要通过 ~/.docker/config.json 文件管理。这个文件控制认证信息、默认 registry、命令别名、http 代理等客户端行为,和守护进程(server)完全解耦。
客户端配置文件位置与生成方式
~/.docker/config.json 是 Docker CLI 的专属配置文件,首次执行 docker login 或手动创建即可生效。
- Linux/macOS:
$HOME/.docker/config.json - Windows:
%USERPROFILE%.dockerconfig.json(即C:Users\.dockerconfig.json)
该文件无需重启服务,所有配置在下次 CLI 调用时立即生效。
常见可配置项及用途
你可以在 config.json 中设置以下内容(JSON 格式,注意无注释):
-
auths:保存各 registry 的 base64 编码登录凭据(由docker login自动写入) -
credHelpers:指定外部凭证辅助程序,如"https://index.docker.io/v1/": "desktop"(Docker Desktop 自动管理) -
registry-mirrors:仅对客户端拉取镜像时的 registry 解析有效,不影响守护进程行为 -
experimental:启用实验性 CLI 功能,如"enabled": "true" -
plugins:声明插件默认行为,例如buildx、scan的默认选项 -
HttpHeaders:为所有 API 请求添加自定义 header,如{"User-Agent": "my-cli/1.0"}
⚠️ 注意:
registry-mirrors出现在config.json中时,只影响docker pull命令解析镜像名(比如nginx→https://mirror.example.com/library/nginx:latest),但不会改变守护进程实际连接的 registry 地址;真正控制镜像源的是守护进程的daemon.json中的registry-mirrors字段。
手动编辑与校验方法
直接编辑文件前建议备份:
cp ~/.docker/config.json ~/.docker/config.json.bak
编辑后可用 Python 快速校验 JSON 合法性:
python3 -c "import json; json.load(open('$HOME/.docker/config.json')); print('OK')"
若格式错误,CLI 可能静默忽略配置或报 Error response from daemon: Bad response from Docker engine 类提示。
与守护进程配置的协作关系
客户端和守护进程配置各司其职:
-
~/.docker/config.json决定“我怎么连、连谁、带什么头、登什么号” -
/etc/docker/daemon.json(Linux)或C:ProgramDataDockerconfigdaemon.json(Windows)决定“我允许谁连、从哪存、用什么驱动、日志怎么记”
两者互不覆盖。例如:
- 你在
config.json设置了"https://myreg.example.com": {"auth": "..."},只影响docker push myreg.example.com/app的认证; - 你在
daemon.json设置了"insecure-registries": ["myreg.example.com"],才允许守护进程与该 HTTP registry 通信。
不复杂但容易忽略











