我阅读了Docker Content Trust的文档,并在以下场景中提出了一些问题。 我在没有启用DCT的情况下启动docker并部署一些图像。 然后我决定启用DCT,以便我只能继续部署签名图像。 已经部署的未签名的将会发生什么?他们会继续跑步吗?
我可以以某种方式确定(在容器和主机中的应用程序内部)运行的图像是已签名还是未签名?
以下是DCT
的文档答案 0 :(得分:2)
已部署的未签名人员会怎样?他们会继续跑步吗?
如果您在禁用泊坞窗内容信任的情况下提取图像,然后启用泊坞窗内容信任,则现有图像/容器不会发生任何事情。
内容信任操作是100%的docker客户端实现。守护进程并不真正知道也不关心图像是否已签名。
如果您启用了泊坞窗内容信任,并执行拉动,创建或运行,则客户端将查找信任数据并查找已签名图像的sha256摘要。守护进程然后被告知它正在执行该摘要的拉/创建/运行。
我可以以某种方式确定(在容器和主机中的应用程序内部)运行的图像是已签名还是未签名?
一般来说,从容器内部来看,暴露的很少。您不能返回图像名称,容器名称,甚至也不能返回已发布的端口。即使你可以,守护进程对图像签名视而不见,只知道它被告知要运行特定的摘要。
在主机上,您可以确定正在运行的容器是否正在使用已签名的图像,但它不是简单地列在“docker images”或“docker ps”中。您必须将图像与信任数据进行比较。我没有预先制作的UI组件为您做这件事。
要记住的一件事是签名可以更新。假设我正在运行ubuntu:14.04,这是一个签名图像。我的容器已经启动并且运行良好。 ubuntu:14.04图像迟早会更新,新的信任数据将与图像更新一起发布。现在,我的容器有一个过时的图像。下次我去做一个docker pull / create / run时,会得到更新的信任数据,我会得到更新的图像。 DCT保证的一部分是新鲜度。