【发布时间】:2021-01-25 07:43:30
【问题描述】:
我们在容器中进行所有开发,我们的一个应用程序在生产中通过docker-py 管理 docker。所以测试变成了docker-ception(docker in docker)。我们通过compose挂载主机docker.sock进行开发(即挂载docker-py直接使用的卷/var/run/docker.sock:/var/run/docker.sock。
许多测试使用tmp_path pytest 固定装置(或特定于库的临时路径),并且这些测试因一系列随机错误而失败 - 主要是找不到文件、找不到模块等。
在开发容器之外手动运行相同的程序。
为什么来?
【问题讨论】:
-
(这听起来像是您使用的是主机 Docker 守护进程,而不是 DinD:您没有在容器中运行第二个 Docker 守护进程。)
-
是的,主机守护进程,从技术上讲是 docker-next-to-docker,但是它非常像 DinD,因为 docker 编排都是在第一个容器中完成的(包括第二个容器的构建和运行)容器)