docker如何为Linux容器创建文件系统?根文件系统的权限是如何设置的?
我在使用 Ubuntu Server 在特定机器上启动 docker 容器时遇到了一种情况。由于某种原因,/tmp容器中没有写权限:
$ docker run -it python:3.11-slim-buster /bin/bash
root@5d5fefe9b9a2:/# ls -la /tmp
total 8
drwxr-xr-t 1 root root 4096 Jan 26 06:58 .
drwxr-xr-x 1 root root 4096 Jan 29 04:31 ..
Run Code Online (Sandbox Code Playgroud)
请注意,这有 755 权限。
但是,当我在 WSL 上启动与容器相同的 docker 映像时,我得到 777:
$ docker run -it python:3.11-slim-buster /bin/bash
root@201dfe147e5a:/# ls -la /tmp
total 8
drwxrwxrwt 1 root root 4096 Nov 16 06:56 .
drwxr-xr-x 1 root root 4096 Jan 29 04:36 ..
Run Code Online (Sandbox Code Playgroud)
几周前,这在 Ubuntu 机器上还很好。我最近将所有文件从 移动/var/lib/ubuntu到 ,/ubuntu因为安装的分区/var已满。/tmp这会导致容器内部权限的行为吗?如果是这样,为什么?我该如何解决它?如果不是,还有什么会导致这个问题以及......我该如何解决它?
Docker 对正在运行的容器使用所谓的联合文件系统。Linux 上推荐的驱动程序称为overlay2。/var/lib/docker/overlay2假设默认配置,图像每一层的文件和目录都存储在 下。将每一层的目录结构组合起来,为容器创建最终的文件系统。有关更多详细信息,请参阅https://docs.docker.com/storage/storagedriver/overlayfs-driver/ 。
至于容器中文件的权限,则来源于宿主机文件系统中该目录下文件的权限。当我将文件从 复制/var/lib/docker到时/docker,我未能保留所有权和权限。我最好的猜测是,在创建每个新文件时应用了 umask。
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |