今天在家用 docker 的时候突然发现有些 container 的名字很奇怪,明显不是我的命名习惯。
当时第一直觉是我的服务器被入侵了?可这是我内网的服务器啊?!家庭内网被入侵也太恐怖了。
上网搜了一下,每个名字都只有几十个甚至几个相关条目,显然这些名字是随机生成的。这也打消了我偶然安装了某些奇怪名字的 docker image 的怀疑。
这种模仿人为命名习惯随机生成文件名的行为透着一股早年间 windows 病毒的臭味,一看就不是什么好东西!
但是 docker container ls -a --no-trunc
看这些 container 的 command 里又没什么很可疑的行为。
他到底做了什么? docker image inspect
了也没什么可疑痕迹。
重新执行这些 container 秒退,毕竟 command 只是一次性执行的东西。
拿这些 container commit 成 image,再创建新的 container 进去看看,里面也没见到有什么异常。
直到我退出临时创建的 container 后又执行了 docker container ls -a
以后终于发现刚才临时创建的匿名 container 也有了类似风格的随机命名,这才终于有了头绪:肯定是 docker 擅自给匿名 container 起了这种方便人类记忆的 container name。上网搜 docker container random name
果然证实了这一猜想。至此调查告一段落。
总结:
这种行为怎么说呢。如果是同事实现的这个功能,我肯定会反对,因为这会让程序员惊讶。
但这是大名鼎鼎的 docker 的行为,我只好怪自己文档掌握得不够全面了。(话说这一行为真的有写在文档里吗?我只能搜到第三方对这一行为的说明)
看了下那个names-generator.go文件,人名也都不能随便添加,都必须是有维基百科页面的科学家。
代码第844行”Steve Wozniak is not boring”笑死我了。
虽然找到了增加这个限制的最初的 commit https://github.com/moby/moby/commit/04f5c75239cba156db70523bcd90657e5c7b5ddb
但我还是不太理解为什么要加这个彩蛋。这是什么梗啊= =
这个commit的提交者就是Docker的founder, 估计Steve Wozniak是这位大佬的偶像吧哈哈