用于控制容器镜像注册表身份验证的JSON格式配置文件。主文件(读写权限)在Linux系统中存储于 ${XDG_RUNTIME_DIR}/containers/auth.json;在Windows和macOS系统中存储于 $HOME/.config/containers/auth.json。
在为注册表搜索凭据时,将按以下顺序读取文件直至找到有效凭据:首先读取主文件(读写权限),或通过调用应用程序的选项显式覆盖。若上述位置未找到凭证,则继续搜索 ${XDG_CONFIG_HOME}/containers/auth.json(通常为 ~/.config/containers/auth.json)、$HOME/.docker/config.json 及 $HOME/.dockercfg。
除主文件(读写)外,其他文件默认只读,除非用户通过调用应用程序的选项明确指定覆盖该文件。
auth.json 文件存储或引用允许用户向容器镜像仓库进行身份验证的凭据。它主要由容器工具(如 podman login、buildah login 或 skopeo login)中的 login 命令进行管理。
每个条目包含单个主机名(例如,docker.io)或命名空间(例如,quay.io/user/image)作为键,以及以 base64 编码字符串形式存在的凭据作为auth的值。该base64编码字符串包含用户名、冒号和密码的拼接内容。
在检查可用凭据时,相关仓库会按照从最具体到最不具体的层级顺序与可用密钥进行匹配。例如,拉取镜像 my-egistry.local/namespace/user/image:latest 时,会按以下顺序在 auth.json 中进行查找:
my-registry.local/namespace/user/image
my-registry.local/namespace/user
my-registry.local/namespace
my-registry.local
这样就可以为单个仓库设置多个凭据,这些凭据可以通过它们的路径来区分。
以下示例展示了用户登录其在 quay.io 和 docker.io 上的账户后,在 auth.json 中找到的值:
{
"auths": {
"docker.io": {
"auth": "erfi7sYi89234xJUqaqxgmzcnQ2rRFWM5aJX0EC="
},
"quay.io": {
"auth": "juQAqGmz5eR1ipzx8Evn6KGdw8fEa1w5MWczmgY="
}
}
}此示例展示了如何为单个注册表使用多个路径,同时为 my-registry.local 保留一个备用:
{
"auths": {
"my-registry.local/foo/bar/image": {
"auth": "…"
},
"my-registry.local/foo": {
"auth": "…"
},
"my-registry.local": {
"auth": "…"
},
}
}可以通过容器工具中的 logout 命令删除条目,例如 podman logout 或 buildah logout。
此外,可为特定注册表配置凭据助手,并且与仅在 auth.json 中存储 base64 编码的凭据相比,凭据助手软件能更安全地管理凭据。
在 Linux 平台启用凭证助手时,auth.json 文件将包含指定注册表域名的键值,以及指定程序后缀的键值(即docker-credential-后所有内容)。例如:
{
"auths": {
"localhost:5001": {}
},
"credHelpers": {
"registry.example.com": "secretservice"
}
}有关凭据助手的更多信息,请参考 GitHub 上的 docker-credential-helpers 项目。
buildah-login(1), buildah-logout(1), podman-login(1), podman-logout(1), skopeo-login(1), skopeo-logout(1)
2020年2月,最初由汤姆·斯威尼汇编 tsweeney@redhat.comm