问题产生原因
最近在使用docker的时候经常遇到权限问题。
通过这个stackoverflow回答,我明白了问题出现的主要原因:Docker在进行bind mount的时候,或者在进行COPY的时候,会保持文件的权限比特位(比如755)、owner ID(比如1000)、group ID(比如1000)与宿主机器上的来源文件相同。而【docker容器主进程的owner ID】(比如www-data(33)
)往往与【宿主机器上的文件的owner ID】(比如xiaoming(1000)
)不一样。如果【docker容器主进程的owner】没有权限读/写这个文件,那么bind-mounts
和COPY
到容器内的文件就不会产生我们预想的效果(比如配置文件无法被容器进程读取、写入)。
如果没有时间查看下面的最佳解决方案,可以试试这个简单粗暴的解决方案:在
宿主机器上,通过
sudo chmod -R 777 /path/to