docker容器没有写宿主机文件的权限

Docker Volume 权限
本文探讨了在 Docker 中使用 volume 挂载时遇到的权限更改问题,并提供了解决方案。指出直接在容器内修改宿主机 volume 上文件权限的方法无效,而应当直接在宿主机上进行权限设置。

问题描述:
容器中的代码挂载在宿主机的volume上,然后在dockerfile中执行 run chmod 777 file.txt,想改变file.txt的权限,最后发现run chmod 命令不生效。查了一下,原因是docker无法在运行中改变volume上的文件的权限

解决方案:
改变宿主机上的文件的权限,然后docker中的文件的权限也会发生改变,会变成和宿主机的权限一致

### 查看 Docker 容器挂载宿主机目录 Docker 容器可以通过卷(Volumes)或绑定挂载(Bind mounts)的方式将宿主机目录挂载容器中,以实现数据共享或持久化存储。若需查看某个容器挂载宿主机目录信息,可以通过以下方式进行。 #### 使用 `docker inspect` 命令查看挂载信息 `docker inspect` 是查看容器详细配置的主要命令,其中包含挂载点(Mounts)信息。执行以下命令可获取容器挂载详情: ```bash docker inspect <容器ID或名称> | grep Mounts -A 20 ``` 该命令输出的内容中会列出所有挂载点,包括类型(Type)、宿主机路径(Source)、容器内路径(Destination)等信息。例如: ```json "Mounts": [ { "Type": "bind", "Source": "/home/user/data", "Destination": "/app/data", "Driver": "", "Mode": "z", "RW": true, "Propagation": "" } ] ``` 此信息表明容器宿主机的 `/home/user/data` 目录以绑定挂载的方式挂载容器内的 `/app/data` 路径下,并具有读权限 [^2]。 #### 使用 `docker volume inspect` 查看卷的宿主机路径 如果使用的是 Docker 管理的卷(Volumes),可以通过以下命令查看卷在宿主机上的实际路径: ```bash docker volume inspect <卷名称> ``` 输出内容中将包含宿主机上的目录路径,例如: ```json "Mountpoint": "/var/lib/docker/volumes/my_volume/_data" ``` 该路径即为 Docker宿主机上为该卷分配的存储位置 [^4]。 #### 使用 `docker ps -a` 查看容器启动时的挂载参数 虽然 `docker ps -a` 不直接显示挂载路径,但结合 `--format` 参数可以提取容器挂载信息: ```bash docker ps -a --format "table {{.ID}}\t{{.Command}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}" ``` 通过查看容器的启动命令,可以间接判断是否使用了 `-v` 参数进行目录挂载 [^2]。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值