.docker/config.json与.dockercfg的区别

36

当我使用Docker 1.10.1执行docker login登录到私有仓库时,会在我的~/.docker/config.json文件中创建一个条目。这个文件的格式是否与被称为.dockercfg文件的格式相同?config.json文件是否可以与.dockercfg文件互换使用?

1个回答

39
我假设 config.json 是新的 .dockercfg 文件。
查看 "docker/cliconfig/config.go"
// ConfigFileName is the name of config file
ConfigFileName = "config.json"
oldConfigfile  = ".dockercfg"

新的配置文件现在已经在man/config-json.5.md下有文档记录。

这是在docker 1.7.0(2015年4月)中引入的提交18c9b6c

添加.docker/config.json和HTTP头支持

此PR执行以下操作:

  • ~/.dockerfg迁移到~/.docker/config.json
    数据已迁移,但旧文件仍然存在以防需要。

注意:自2016年起:

这与docker-daemon.8.md不同,后者默认使用/etc/docker/daemon.json,这是Docker v1.10引入的守护进程配置文件

因此:

但是适用于所有容器的config.json(与编排相关)不包括docker run网络设置--net=host无法在该配置文件中指定。


2021年更新(自2017年以来),如评论中slm所述:

凭据现在存储在您的操作系统用于管理机密信息的位置中。
在MacOS上,它们存储在Keychain下,您可以通过查找“所有项目”下的“Docker凭据”来找到它们

您可以查看项目docker/docker-credential-helpers:一组程序,可使用本地存储来保护Docker凭据。

有关更多信息,请参见docker login/Credentials Store


1
"./docker/config.json"和"/etc/docker/daemon.json"之间有什么关系?我知道我可以在config.json中添加代理。但是如果我想在配置文件中添加"--net=host",我该怎么做? - Just a little noob
@Justalittlenoob 我已经编辑了答案以回应你的评论/问题。 - VonC
非常好,非常详细。谢谢 :) - Just a little noob
顺便提一下,凭据现在存储在操作系统用于管理机密信息的位置。在 MacOS 上,它们存储在 Keychain 下,您可以通过查找“所有项目”下的“Docker 凭据”来找到它们。 - slm
@slm 很好的观点,谢谢。我已经将您的评论包含在答案中以增加可见性。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接