当我删除 docker 容器的图像时会发生什么情况?

What happens to a docker container when I delete its image?

根据 docker documentation docker 图像与其各自容器之间的关系是图像包含它在创建过程中使用的层和仅来自该图像的容器添加另一层及其修改。如下图所示

考虑到这一点,我认为删除具有实例化容器的图像会使它们失效,因为它们会丢失它们所依赖的所有层。当您尝试删除包含容器的图像时收到的错误消息证实了这一理论:

Error response from daemon: conflict: unable to delete dee20bb93b6a (must be forced) - image is being used by stopped container c44b4080aa76

但令我惊讶的是,当我用 -f 标志强制删除图像并启动容器时,它只是 运行。像那样。没有错误,没有损坏,没有丢失文件。没有停下来着火。没有什么。从图像删除之前的确切状态来看,它 运行 完美无缺。

我的问题是:刚刚发生了什么?为什么容器没有失效?

容器是容器镜像的实例化实例。只要之前创建的容器存在并且没有被删除,就不会对底层容器镜像产生依赖。