![docker run 尝试挂载我未要求的文件](https://linux22.com/image/695766/docker%20run%20%E5%B0%9D%E8%AF%95%E6%8C%82%E8%BD%BD%E6%88%91%E6%9C%AA%E8%A6%81%E6%B1%82%E7%9A%84%E6%96%87%E4%BB%B6.png)
当我尝试运行没有任何挂载的映像时,为什么 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”并重建(或下载)它,然后重试运行您的容器。