镜像泊坞窗内容信任

TL; DR – 如何运行(可能不安全的)dockerregistry镜像并信任内容?

我有一系列设备在封闭的networking上运行docker集装箱,没有互联网接入。 我可以暂时将一台笔记本电脑连接到networking。 最终目标是更新这些设备正在运行的容器映像。

原则上我可以通过以下方式来实现这一点

  1. 从互联网registry(Docker中心或私人)拉到笔记本电脑。
  2. 在笔记本电脑上运行registry。
  3. 推到这个registry

    docker tag myorgname/trusttest:latest laptophostname:80/myorgname/trusttest:latest docker push laptophostname:80/myorgname/trusttest:latest 
  4. 断开笔记本电脑与互联网的连接并连接到封闭的networking。
  5. 告诉设备做一个

     docker pull laptophostname:80/myorgname/trusttest:latest docker tag laptophostname:80/myorgname/trusttest:latest myorgname/trusttest:latest 

并重新启动他们的容器与新的形象(我怎么做这不是特别相关,让我们只是说,我可以沟通laptophostname给他们,他们做的rest)。

但是,真正重要的是我能够与Docker Content Trust(又名公证人)合作。 否则,任何人都可以连接到networking,并告诉设备开始运行任意代码。

我也可以在笔记本电脑上运行一个公证服务器,而且这个工作正常,除了当我从我的本地docker工人将新的图像推到笔记本电脑上的registry(上面的第3步)时,它要求我签署新的签名密钥,容器新的信任信息而不是仅仅复制原始开发者创build的信任。

目前,我已经控制了用于更新的机器(即笔记本电脑),但将来可能不是这种情况,所以我不想在这上面有任何开发人员密钥。 公证人宣称不安全的镜像是一个用例,那么如何让它与docker一起工作呢?

编辑

这可能是也可能不是相关的,但是这个想法是,客户一次购买一个或多个这些设备并分阶段地将它们添加到networking中。 我需要一种提供已签名软件更新的方式,因此是编写应用程序以充当registry镜像的原始计划。 如果没有内容信任,就很容易欺骗设备运行任何图像。

我build议你看Docker swarm,因为你提到的许多事情都是由Docker swarm处理的。 https://docs.docker.com/engine/swarm/

特别是,您可以将您的笔记本电脑设置为swarm manager节点,这是唯一有权在工作节点上更新容器的节点。