首页 > 解决方案 > Docker 容器无法在卷上写入

问题描述

我有一个容器,我只有图像,没有 Dockerfile。我在 Centos7 虚拟机中运行这个容器。容器开始于:

docker run -it -v /mydir:/data container_image bash

这是 Centos7,所以有一些 SELinux,但通常一切都是可写的:

# file: mydir
# owner: root
# group: root
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx

但是在容器中的 bash 会话中:

bash-4.3# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
bash-4.3# ls -ald /data
drwxrwxrwx    2 root     root            20 Apr 30 15:28 /data
bash-4.3# touch /data/somefile
touch: /data/somefile: Permission denied
bash-4.3# mkdir /data/somedir
mkdir: can't create directory '/data/somedir': Permission denied

所以,我是 root,该目录显示为普遍可写,但我无法写入它......

莫名其妙。

PS:/data确实是宿主机上的正确目录,我在宿主机里面放了一个marker文件,在容器中就看到了marker。

标签: docker

解决方案


因此,问题确实出在 SELinux 上,它对容器有特定的处理方式,如此所述。由于这仅用于测试,我无法花时间了解 SELinux,因此修复方法是暂时禁用 SELinux,如下所示


推荐阅读