文件系统为xfs且存储驱动程序为overlay

时间:2017-01-26 06:04:15

标签: docker

当我在Docker 1.13.0中进行卷映射时,某些文件已损坏。

在docker容器中,当" ls -l"文件夹,它显示如下:

" ?????????? ? ? ? ? ? file_corrpted_and_cant_access.conf"

并且无法编辑或删除它。 它只显示"没有这样的文件或目录"。 我认为它无法链接文件inode和路径。

如何解决?

其他信息

卷映射后,我在docker容器内的软链接卷映射文件夹。

docker run --privileged -d -v /opt/volume_mapping_folder/:/inside_container/inside_folder --restart=always testcontainer

并insde docker container I软链接文件夹

docker -it testcontainer /bin/bash ln -s /inside_container/inside_folder /opt/appFolder touch /opt/appFolder/file_corrpted_and_cant_access.conf

docker info的输出:

Server Version: 1.13.0 Storage Driver: overlay Backing Filesystem: xfs Supports d_type: false Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 3.10.0-514.6.1.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 5.671 GiB ID: 2D2E:73MA:BJQ3:WQAJ:BR3W:TYF5:F3MQ:E7S3:KZGV:A64K:ASZK:UEXE Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false

2 个答案:

答案 0 :(得分:2)

这是与覆盖模式相关的xfs文件系统。

https://github.com/docker/docker/issues/27358

解决方案就是其中之一。

  1. xfs分区需要格式化为ftype设置为1

  2. 使用ext4文件系统而不是xfs

  3. 将docker存储驱动程序设置为' devicemapper'

答案 1 :(得分:0)

我今天使用在RHEL 7.3系统上运行CentOS映像的Docker 1.13.0遇到了类似的问题。我的容器根文件系统中的文件是 odd 。例如,我会尝试删除一个文件,但它不会从文件系统中删除并显示相同的'?'你在运行'ls'时发布了。我在尝试更改文件的所有权时也遇到了问题。无论如何,我的猜测是Docker 1.13.0将默认存储驱动程序更改为 overlay ,而在过去(Docker 1.12.5)它是 devicemapper 。我将默认值更改回 devicemapper ,问题就消失了。

我不是Docker或Linux文件系统专家,我不确定将覆盖更改为默认是否是故意的。