您现在的位置是:首页 >技术教程 >Error response from daemon: error creating aufs mount to /var/lib/docker/aufs/mnt/(overlay2)文件系统。已解决网站首页技术教程

Error response from daemon: error creating aufs mount to /var/lib/docker/aufs/mnt/(overlay2)文件系统。已解决

Dontla 2024-06-17 10:48:33
简介Error response from daemon: error creating aufs mount to /var/lib/docker/aufs/mnt/(overlay2)文件系统。已解决

我的系统是ubuntu20.04的华为服务器,docker默认选择的存储驱动貌似不是overlay2,而是aufs,我在run容器的时候出现了以下错误:

docker: Error response from daemon: error creating aufs mount to /var/lib/docker/aufs/mnt/0e350f19e17605be44d455015aeebcdf869bb3969560c50b4d61d4b02c34bc26-init: mount target=/var/lib/docker/aufs/mnt/0e350f19e17605be44d455015aeebcdf869bb3969560c50b4d61d4b02c34bc26-init data=br:/var/lib/docker/aufs/diff/0e350f19e17605be44d455015aeebcdf869bb3969560c50b4d61d4b02c34bc26-init=rw:/var/lib/docker/aufs/diff/43ec20a6aea0f09f86d9409364dc5a6c93d40589c436ec6003ae5a025f3143d8=ro+wh:/var/lib/docker/aufs/diff/095f8ace904af105cd9a84c4c88bd2572f2714fd8159f023ac1c9a68b6eba0f9=ro+wh:/var/lib/docker/aufs/diff/3af650c3a739941536d71c204b5b046783438f933703c6b68365e8a8d8fe813a=ro+wh,dio,xino=/dev/shm/aufs.xino: invalid argument.
See 'docker run --help'.

这个问题貌似是文件系统aufs的问题,当前安装的docker使用的存储驱动aufs与文件系统不兼容。

AUFS(Advanced Multi-Layered Unification Filesystem)文件系统

AUFS是一个联合文件系统。aufs存储驱动程序以前是默认的存储驱动程序,用于管理Ubuntu Docker上的镜像和层,以及Stretch之前的Debian版本。如果您的Linux内核是4.0或更高版本,并且您使用Docker Engine-Community,请考虑使用较新的overlay2,它比aufs存储驱动程序具有潜在的性能优势。

注意: 某些发行版和Docker版本不支持AUFS。有关支持的平台的详细信息,请参阅先决条件。

在AUFS文件系统上使用docker的先决条件

Docker是一个容器化技术,它可以将应用程序及其依赖项打包到一个容器中,以便在不同的环境中运行。而aufs是Docker使用的一种文件系统,它可以让Docker容器更加轻量级和高效。

但是,使用aufs文件系统有一些先决条件:

  1. 对于Docker Engine - Community,AUFS只支持Ubuntu和Debian Stretch之前的版本。如果你使用其他操作系统,就不能使用aufs文件系统。

  2. 对于Docker EE,AUFS只支持Ubuntu。如果你使用其他操作系统,也不能使用aufs文件系统。

  3. 如果你使用Ubuntu,并且想要使用aufs文件系统,你需要将AUFS模块添加到内核中。如果你不安装这些软件包,就需要使用overlay2文件系统。

  4. 最后,aufs文件系统不能使用以下支持文件系统:aufs、btrfs或ecryptfs。这意味着包含/var/lib/docker/aufs的文件系统不能是这些文件系统类型之一。

注意: aufs文件系统不能使用aufs、btrfs或ecryptfs这三种文件系统作为其底层文件系统。
aufs、btrfs和ecryptfs是三种不同的文件系统,它们之间是并列关系,都可以作为Linux系统中的文件系统使用。但是,aufs文件系统本身是一个叠加式的文件系统,它需要在另一个文件系统的基础上进行叠加,因此它不能使用aufs、btrfs或ecryptfs这三种文件系统作为其底层文件系统。

参考文章:https://docs.docker.com/storage/storagedriver/aufs-driver/

怎么查看docker当前使用的文件系统?

可以通过以下命令查看当前Docker使用的存储驱动程序:

docker info | grep -i 'storage driver'

执行该命令后,会输出当前Docker使用的存储驱动程序,例如:

Storage Driver: overlay2

在上面的例子中,可以看到当前Docker使用的存储驱动程序是overlay2,因此当前文件系统使用的是overlay2文件系统。

如果输出结果是overlay或者aufs,那么当前文件系统使用的就是overlay1或aufs文件系统。需要注意的是,overlay1文件系统已经被弃用,不再被推荐使用。如果你的系统上使用的是overlay1文件系统,建议升级到overlay2文件系统。

比如我的ubuntu虚拟机和山城矿服务器的文件系统都是overlay2:

在这里插入图片描述
在这里插入图片描述

北京华为服务器咋是aufs?

在这里插入图片描述

aufs是什么文件系统?

AUFS(Advanced Multi-Layered Unification Filesystem)是一种联合文件系统,它可以将多个文件系统合并成一个虚拟文件系统。AUFS最初是由Junjiro Okajima开发的,后来被并入了Linux内核。

AUFS的主要特点是支持多层文件系统的叠加,每一层文件系统都可以被视为一个镜像。在AUFS中,最底层的文件系统是只读的,而上层的文件系统是可写的。当需要修改文件时,AUFS会将修改的内容写入上层文件系统,而不会影响到底层文件系统。这种机制使得AUFS非常适合用于容器化应用程序的存储和管理。

在Docker早期版本中,AUFS是Docker的默认存储驱动程序。但是,由于AUFS的维护和支持成本较高,而且在某些情况下会出现性能问题,因此在Docker 1.13版本之后,Docker将默认存储驱动程序切换为overlay2文件系统。不过,如果你的系统上已经安装了AUFS文件系统,仍然可以使用它来作为Docker的存储驱动程序。

docker从哪个版本不再支持aufs文件系统?(未经验证)

根据Docker官方文档的说明,从Docker 20.10版本开始,AUFS文件系统已经被标记为“不推荐使用”,并且在未来的版本中将被完全删除。如果你的系统上使用的是AUFS文件系统,建议升级到其他支持的文件系统,例如overlay2或者btrfs。如果你必须使用AUFS文件系统,可以考虑使用旧版本的Docker,例如Docker 19.03版本。

关于ubuntu20.04 docker aufs

Docker upgrade failure: The aufs storage-driver is no longer supported

可能的解决办法

Docker 升级失败:不再支持 aufs 存储驱动程序

1、重装docker engine可能会有效

Install Docker Engine on Ubuntu

2、配置docker以使用overlay2

https://docs.docker.com/storage/storagedriver/overlayfs-driver/

我a主机和b主机都是ubuntu20.04(a是x86虚拟机,b是x86华为服务器),为什么a主机的docker默认使用overlay2文件系统,b主机默认使用aufs文件系统?

Docker的默认文件系统是由Docker存储驱动来决定的,而不是由操作系统来决定的。在Ubuntu 20.04中,Docker的默认存储驱动是overlay2,但是如果你在安装Docker时选择了使用aufs存储驱动,那么Docker就会使用aufs文件系统。

因此,如果你在a主机和b主机上都使用了相同的Docker版本,并且都是使用默认的安装方式,那么它们应该都使用overlay2文件系统作为默认文件系统。如果你发现b主机上的Docker默认使用aufs文件系统,那么可能是在安装Docker时选择了aufs存储驱动,或者在安装Docker之前已经安装了aufs工具包,从而导致Docker使用aufs文件系统作为默认文件系统。

需要注意的是,aufs文件系统在Linux内核中的支持程度较低,而且在一些Linux发行版中已经被废弃,因此建议使用overlay2文件系统作为Docker的默认文件系统。如果你想要使用aufs文件系统,需要先确保你的系统中已经安装了aufs工具包,并且在安装Docker时选择aufs存储驱动。

20230519 将docker存储驱动手动改成vfs,解决了!!!!

首先我的docker info,与我其他主机的docker info对比,请看:KYSL北京华为服务器测试一键部署(docker问题)

root@ubuntu:/home/ubuntu# 
root@ubuntu:/home/ubuntu# docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 4
 Server Version: 20.10.21
 Storage Driver: aufs
  Root Dir: /var/lib/docker/aufs
  Backing Filesystem: overlayfs
  Dirs: 34
  Dirperm1 Supported: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 
 runc version: 
 init version: 
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.15.0-67-generic
 Operating System: Ubuntu 20.04.6 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 40
 Total Memory: 30.86GiB
 Name: ubuntu
 ID: VSP2:445S:5HMB:F6WX:UWWP:4ILL:NVJS:YB4R:G6PH:QTQT:GGXO:ZKXZ
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: the aufs storage-driver is deprecated, and will be removed in a future release.
root@ubuntu:/home/ubuntu# 


而我的报错:

在这里插入图片描述

可能是由于aufs存储驱动无法正常使用导致,至于为啥无法正常使用,就不得而知了。

我们参考文章:Error: “error creating aufs mount to” when building dockerfile的解决办法

在这里插入图片描述

手动创建:/etc/docker/daemon.json(或者在apt install docker.io前先创建好这个文件,安装完后就直接能用)

内容为:

{
  "storage-driver": "vfs"
}

表示我们将docker使用的存储驱动使用vfs(原先默认是aufs)

然后停止Docker服务,删除aufs存储目录,并重新启动Docker服务(注意:如果你已经有docker容器,就先把你容器数据备份好,不然执行下面rm很可能删掉了!):

sudo service docker stop
sudo rm -rf /var/lib/docker/aufs
sudo service docker start

然后docker就正常了:

可以看到存储驱动变成了vfs:

在这里插入图片描述

镜像也能正常run:

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。