docker run 尝试挂载我未要求的文件

docker run 尝试挂载我未要求的文件

当我尝试运行没有任何挂载的映像时,为什么 Docker 仍尝试挂载我没有要求的东西?

# docker run --rm myapp bash
docker: Error response from daemon: cannot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/9326735ac6d36724bcb8e49ac2f0dd8288ad92ce385fe24ebaffc19a3a9c5756/etc/myapp.yml.

我有一个正在运行的容器装载了此文件,但是当我想要运行一次性命令时,为什么 Docker 会尝试装载它?

答案1

如果我没记错的话,我们也遇到了同样的问题,因为悬垂卷,正如@Mohammed Noureldin 所说的那样。

我无法删除图片,但是这个代码对我来说很好用https://coderwall.com/p/hdsfpq/docker-remove-all-dangling-volumes

答案2

当您启动带有卷挂载点的容器、使用 将该容器提交为新映像docker commit,然后使用新映像启动容器(其中省略了一个或多个先前的卷挂载点)时,可能会发生这种情况。

最佳做法是docker commit完全避免使用并在新的或现有的 Dockerfile 中执行任何更改。

答案3

我之前遇到过同样的错误,我忘记我到底做了什么才得到这个错误,但对我有用的解决方案是清除所有使用图像“myapp”的容器,并删除任何悬空卷。

然后删除基础映像“myapp”并重建(或下载)它,然后重试运行您的容器。

相关内容