场景
userA创建目录downloads,然后运行Docker时挂载该目录,--user参数设置为:$(id -u)
mkdir downloads
docker run -v $(pwd)/downloads:/downloads --user $(id -u):$(id -g) helloworld
问题
在docker容器目录无法访问downloads目录,报错权限不足
解释
当我们绑定宿主目录到镜像时,如果该目录不存在,Docker也会自动创建该目录。这种方式创建出来的目录的拥有者是root用户。如果该目录已经存在,那么其拥有者就取决于宿主配置的情况了。
由于Docker内部的用户空间和宿主的用户空间是独立的,如果镜像内运行进程的用户和宿主目录的拥有者不符合,就会出现权限问题。
解决
执行命令:
chown -R $(id -u) downloads/