重新启动docker守护程序对容器创建有什么影响?

时间:2019-05-27 18:10:45

标签: docker docker-container docker-network

我目前正在为C构建环境创建docker映像:它将用作CI工具链的基础映像,构建服务器,开发人员将能够使用同一工具链来创建固件映像。

对于此构建环境,我必须使用许可的编译器。目前,我正在使用评估许可证并将许可证文件映射到容器中-这将由许可证服务器连接代替。无论如何:我需要设置容器的 MAC地址,以使其正常工作。

长话短说:我正在使用以下容器创建容器:

docker run -it --rm --mac-address 78:4f:43:5c:25:a3 -v $(pwd):/project -v $(pwd)/license:/licenses builder:latest /bin/bash

第一次启动docker守护程序后,容器运行良好,我可以cd进入项目,点击make,构建过程就可以正常工作。

一旦我从上述容器中注销,就按预期将其删除:即使我可以使用-d(守护程序)运行该容器,我也希望能够随时启动它。

问题

奇怪的是,一旦我想使用非常相同的命令重新创建容器,即如果我再次执行以上命令,则编译器就抱怨许可证无效。容器在后台运行(因此没有干扰),编译器无法验证许可证:

  • [ok]启动Docker
  • [确定]创建用于构建的容器(命令上方)
  • [ok]在容器中构建
  • [ok]退出容器
  • [确定]创建用于构建的容器(命令上方)
  • [-FAIL-]在容器内构建:许可证错误

我假设它与网络连接有关:该编译器仅在线工作,因此每次调用它都会执行有效性检查。对于第二个容器,此操作将失败。

我可以通过完全重启Docker 变通这个问题。这会花费很多时间,因此并不是真正有效的方法。

问题

因此,我的问题是:重新启动可能影响我的容器的docker守护程序时,究竟发生了什么?我想重新创建了docker网络,但这应该不会产生影响?

很难通过简单的演示重新创建此问题,因此有点难以解释。到目前为止,我已经检查了

  • ifconfig在两个容器中产生相同的输出(MAC地址为OK)
  • docker inspect仅重新创建哈希,但是NetworkID(网络>网桥> NetworkID)是相同的,因此我检查了是否可以重新启动docker network bridge,但是我不能(也不能删除,因为它是预定义的)
  • 两个容器都可以访问互联网(ping作品)

任何输入表示赞赏。

编辑:为Mac使用Docker Docker version 18.09.2, build 6247962

0 个答案:

没有答案