data
我的文件系统根目录下有一个文件夹
arthur@debian:~$ ls -la /data
total 36
drwxr-xr-x 9 root root 4096 Dec 13 09:45 .
drwxr-xr-x 21 root root 4096 Dec 13 10:08 ..
drwxr-xr-x 2 root root 4096 Jun 15 2020 500g2
drwxr-xr-x 6 root root 4096 Nov 16 18:20 quad_1
drwxr-sr-x 5 arthur arthur 4096 Dec 13 13:29 tera_1
drwxrwxr-x 6 root root 4096 Dec 7 00:00 tera_2
drwxr-xr-x 5 root root 4096 Sep 18 21:32 tera_3
drwxr-xr-x 6 root root 4096 May 5 2021 tera_4
我想将整个目录挂载为 docker 卷,但容器必须具有只读访问权限。所以我使用了:ro
sudo docker run -it --name testcontainer -v /data:/internal_data:ro --rm alpine:latest /bin/sh
当 shell 生成时,我仍然能够写入本应只读的容器。这是为什么?
/ # touch /internal_data/test
touch: /internal_data/test: Read-only file system # Ok, container prevented from writing
/ # touch /internal_data/tera_1/test # This worked
/ # touch /internal_data/tera_2/test # This worked
/ # touch /internal_data/500g2/test
touch: /internal_data/500g2/test: Read-only file system # Ok, container prevented from writing
/ #
您需要 5.12 或更高版本的内核和 docker 25 或更高版本才能支持递归只读绑定挂载。
另请参阅 Docker 关于递归绑定挂载的文档。