docker-compose在隐藏目录执行权限拒绝问题求助(VSCode开发容器依赖)
问题描述
- 系统:Ubuntu 22.04.1 LTS
- Docker版本:20.10.23
- docker-compose版本:1.29.2
- 现象:
- 执行
docker-compose -f /home/mac/vscode.yml build可正常运行 - 执行
docker-compose -f /home/mac/.config/vscode.yml build报错:ERROR: PermissionError: [Errno 13] Permission denied: '/home/mac/.config/vscode.yml' - 已将
/home/mac和/home/mac/.config权限设为777,问题依旧 - 使用
docker compose(无短横线)命令执行相同操作可正常运行 - 需求:VSCode Dev Containers扩展依赖docker-compose,需解决该问题
- 执行
解决方案
检查文件隐藏属性
执行lsattr /home/mac/.config/vscode.yml,如果输出包含i(不可修改属性),执行sudo chattr -i /home/mac/.config/vscode.yml移除该属性后重试。替换旧版docker-compose为Docker CLI集成版
既然docker compose能正常运行,可将VSCode Dev Containers配置为使用该命令:- 卸载旧版独立docker-compose:
sudo apt remove docker-compose - 安装Docker Compose插件:
sudo apt install docker-compose-plugin - 打开VSCode设置,搜索「Dev Containers: Docker Compose Command」,将值改为
docker compose
- 卸载旧版独立docker-compose:
排查AppArmor限制
Ubuntu默认的AppArmor规则可能限制了旧版docker-compose访问隐藏目录:- 临时切换AppArmor为投诉模式:
sudo aa-complain docker-default - 重新执行
docker-compose命令测试,若正常,可考虑调整AppArmor规则或保持该模式。
- 临时切换AppArmor为投诉模式:
使用符号链接绕过隐藏目录权限问题
将目标yml文件链接到非隐藏目录:ln -s /home/mac/.config/vscode.yml /home/mac/vscode-compose.yml
然后执行docker-compose -f /home/mac/vscode-compose.yml build
内容的提问来源于stack exchange,提问作者Mucahit Sancar Kahveci
相关产品推荐
相关产品推荐

