我目前正在为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
(守护程序)运行该容器,我也希望能够随时启动它。
问题
奇怪的是,一旦我想使用非常相同的命令重新创建容器,即如果我再次执行以上命令,则编译器就抱怨许可证无效。容器在后台运行(因此没有干扰),编译器无法验证许可证:
我假设它与网络连接有关:该编译器仅在线工作,因此每次调用它都会执行有效性检查。对于第二个容器,此操作将失败。
我可以通过完全重启Docker 变通这个问题。这会花费很多时间,因此并不是真正有效的方法。
问题
因此,我的问题是:重新启动可能影响我的容器的docker守护程序时,究竟发生了什么?我想重新创建了docker网络,但这应该不会产生影响?
很难通过简单的演示重新创建此问题,因此有点难以解释。到目前为止,我已经检查了
ifconfig
在两个容器中产生相同的输出(MAC地址为OK)docker inspect
仅重新创建哈希,但是NetworkID(网络>网桥> NetworkID)是相同的,因此我检查了是否可以重新启动docker network bridge
,但是我不能(也不能删除,因为它是预定义的)ping
作品)任何输入表示赞赏。
编辑:为Mac使用Docker
Docker version 18.09.2, build 6247962