错误:"错误创建aufs挂载到"在构建dockerfile时

时间:2015-06-22 15:58:44

标签: docker dockerfile

当我尝试构建docker文件时出现此错误

 error creating aufs mount to /var/lib/docker/aufs/mnt   
 /6c1b42ce1a98b1c0f2d2a7f17c196221445f1054566065d4c607e4f1b99930eb-init:   
 invalid argument

这是什么意思?我该如何解决?

12 个答案:

答案 0 :(得分:54)

删除/var/lib/docker/aufs后我发现了一些未解决的错误,这些错误会被清除。

要添加到@benwalther answer,因为我缺乏评论的声誉:

# Cleaning up through docker avoids these errors
#   ERROR: Service 'master' failed to build:
#     open /var/lib/docker/aufs/layers/<container_id>: no such file or directory
#   ERROR: Service 'master' failed to build: failed to register layer:
#     open /var/lib/docker/aufs/layers/<container_id>: no such file or directory
docker rm -f $(docker ps -a -q)
docker rmi -f $(docker images -a -q)

# As per @BenWalther's answer above
sudo service docker stop
sudo rm -rf /var/lib/docker/aufs

# Removing the linkgraph.db fixed this error:
#   Conflict. The name "/jenkins_data_1" is already in use by container <container_id>.
#   You have to remove (or rename) that container to be able to reuse that name.
sudo rm -f /var/lib/docker/linkgraph.db


sudo service docker start

答案 1 :(得分:14)

我已移除/var/lib/docker/aufs/diff并遇到同样的问题:

  

错误创建aufs挂载到/ var / lib / docker / aufs / mnt / blah-blah-init:无效参数

通过运行以下命令解决了这个问题:

docker stop $(docker ps -a -q);
docker rm $(docker ps -a -q);
docker rmi -f $(docker images -a -q)

答案 2 :(得分:12)

AUFS无法挂载docker容器文件系统。

这可能是因为:路径已经挂载 - 或者 - 由于存在大量现有卷,Docker与AUFS的交互存在竞争条件。

要解决此问题,请尝试以下操作:

  1. 重新启动docker服务或守护程序,然后重试。

  2. 检查mount是否在/var/lib/docker/aufs/下的任何路径上安装了aufs。如果找到,请停止docker,然后umount他们(需要sudo)。

    示例:

  3. mount

    none on /var/lib/docker/aufs/mnt/55639da9aa959e88765899ac9dc200ccdf363b2f09ea933370cf4f96051b22b9 type aufs (rw,relatime,si=5abf628bd5735419,dio,dirperm1)

    然后     sudo umount /var/lib/docker/aufs/mnt/55639da9aa959e88765899ac9dc200ccdf363b2f09ea933370cf4f96051b22b9

    1. 如果不起作用,请停止泊坞窗,然后sudo rm -rf /var/lib/docker/aufs。您将丢失所有已停止的容器和所有图像。但这只是保证解决问题。

答案 3 :(得分:8)

不幸的是,在我的系统上,我无法用上述答案解决这个问题。 docker管理器一直记住aufs层中的某个文件,它无法再访问它。其他解决方案也无效。因此,如果这是您的选项,您可以尝试以下修复:uninstall / purge dockerdocker-engine

apt-get purge docker docker-engine

然后确保删除/var/lib/docker中的所有

rm -rf /var/lib/docker

之后再次安装docker。

答案 4 :(得分:3)

我刚刚在Docker CE 18.03的Lubuntu(Ubuntu 4.15.0-20-generic)上遇到了类似的问题。所描述的选项均无济于事。

似乎最新的docker版本使用overlay2存储驱动程序。但是,某些应用程序需要aufs。因此,可能的解决方法可能是简单地使用此docker指南将存储驱动程序更改为aufs(只需将“ overlay2”替换为“ aufs”)为in this guide.

答案 5 :(得分:1)

我正在将Raspbian与Raspberry 4一起使用

最佳方法。

使用以下命令检查您的Docker版本: sudo docker info并检查“存储驱动程序”

  1. sudo systemctl stop docker
  2. sudo nano /etc/docker/daemon.json
  3. 在下面编写此代码并保存
{
    "storage-driver": "vfs"
}
  1. sudo systemctl start docker

可选的vfs ...存在性能问题,可能不是最佳选择...:)

答案 6 :(得分:0)

在Windows重启后,解决了docker machine问题。

使用以下命令:

docker-machine stop
docker-machine start
docker-compose up

答案 7 :(得分:0)

在Windows中使用Docker时,出现了类似的问题:

ERROR: Service 'daemon' failed to build: error creating overlay mount
to /var/lib/docker/overlay2/83c98f716020954420e8b89e6074b1af6
1b2b86cd51ac6a54724ed263b3663a2-init/merged: no such file or directory

从映像的Dockerfile中删除了一个卷,重建了映像,然后重新启动PC后,出现了问题。也许这是常见原因?

我设法通过单击Docker-> Settings-> Reset-> Reset to factory defaults...

解决了问题

我所有的图像随后都丢失了,但这对我来说并不重要。我还认为,删除VM磁盘映像(可以在Advanced的{​​{1}}标签下找到其路径)可以解决此问题。我还没有尝试过这种方法。

答案 8 :(得分:0)

如果尝试在持久启用Live CD中使用docker,则可能会遇到此错误。我猜是因为您不能在覆盖层挂载(持久层)中挂载aufs。

该解决方案只是使用其他驱动程序。我在vfs

中使用了/etc/docker/daemon.json

在这里

{
    "storage-driver": "vfs"
}

答案 9 :(得分:0)

我也将这个答案放在这里,因为Google搜索将我引到这里,因为@whitebrow的答案包含了我在Google中搜索的术语 ERROR: Service '***' failed to build: error creating overlay mount to /var/lib/docker/overlay2/***/merged: no such file or directory

就我而言,令人惊讶的解决方法是限制“ RUN”泊坞窗构建命令/层的数量,因为如果数量超过60个层/命令,则总是以丢失“合并”文件夹错误而告终,没有不管命令的内容是什么,即使简单的命令(例如RUN ls -la)也以该错误结尾,如果这样/任何命令的总数大于60,这很奇怪。 Merged子文件夹始终丢失,尽管即使我自动生成了所有合并的子文件夹,也总是在运行时动态创建了一个带有新哈希的新层,但该子文件夹却丢失了。

答案 10 :(得分:0)

我遇到了同样的问题,我通过将存储驱动程序添加到/etc/docker/daemon.json

来解决了这个问题

您也可以参考此链接以查看其他驱动程序选项。 访问https://docs.docker.com/storage/storagedriver/select-storage-driver/

答案 11 :(得分:0)

我正在另一个容器中运行一个容器(也在该容器中安装了 docker),并试图在overlayfs 挂载上创建一个aufs 存储,这是不可能的。因此,我还将主机 overlyfs 存储更改为 aufs。它解决了我的问题。要检查存储驱动程序使用下面的命令。
docker info

解决方案只是使用不同的驱动程序。我在 /etc/docker/daemon.json

中使用过 aufs

在这里

{
    "storage-driver": "aufs"
}

有关详细说明,请阅读以下文档。 Docker storage documentation