当我在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
答案 0 :(得分:2)
这是与覆盖模式相关的xfs文件系统。
https://github.com/docker/docker/issues/27358
解决方案就是其中之一。
xfs分区需要格式化为ftype设置为1
使用ext4文件系统而不是xfs
将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文件系统专家,我不确定将覆盖更改为默认是否是故意的。