在全新Ubuntu Docker镜像中安装Python3遇Errno13权限拒绝错误
问题:Docker容器内安装Python3时权限拒绝错误
环境与操作流程
- 宿主机:ESXi上创建的Ubuntu 22.04 LTS虚拟机,采用LVM分区(50GB为根目录,250GB单独挂载为/var),安装系统时附带Docker和Prometheus
- Docker版本:初始为20.10.17,升级至20.10.22后问题依旧
- 核心操作:
- 拉取Ubuntu镜像:
docker pull ubuntu - 启动容器:
docker run -it ubuntu - 容器内以root身份执行:
apt update && apt install python3
- 拉取Ubuntu镜像:
- 关键错误:
已确认[Errno 13] Permission denied: '/usr/lib/python3.10/__pycache__/__future__.cpython-310.pyc.139849676216832' dpkg: error processing package python3.10-minimal (--configure): installed python3.10-minimal package post-installation script subprocess returned error exit status 1/usr/lib/python3.10/__pycache__/目录及文件权限为-rw-r--r--,操作全程以root身份执行。
解决方案
1. 检查宿主机/var挂载参数
由于/var挂载在单独LVM卷,需确认挂载是否包含限制容器的参数:
mount | grep /var
确保没有noexec、nodev这类限制选项,若存在,修改/etc/fstab中的挂载配置,移除限制参数后重新挂载:
sudo mount -o remount,rw /var
2. 清理Docker缓存并重新拉取镜像
镜像文件损坏可能导致权限异常,执行以下命令清理后重新拉取:
docker rmi ubuntu docker system prune -a docker pull ubuntu
重启容器后再次尝试安装Python3。
3. 手动预处理缓存目录权限
在容器内安装Python3前,手动创建并放宽缓存目录权限:
mkdir -p /usr/lib/python3.10/__pycache__ chmod 777 /usr/lib/python3.10/__pycache__ apt install -y python3 # 安装完成后可恢复默认权限 chmod 755 /usr/lib/python3.10/__pycache__
4. 临时关闭AppArmor规则测试
Ubuntu默认的AppArmor可能限制容器文件系统操作,临时关闭Docker对应的规则:
sudo aa-disable docker-default sudo systemctl restart docker
若问题解决,需调整AppArmor规则而非永久关闭。
5. 替换系统自带Docker为官方版本
系统安装时附带的Docker可能存在配置缺陷,卸载后用官方脚本重新安装:
# 卸载现有Docker组件 sudo apt purge docker.io docker-compose docker-ce docker-ce-cli containerd.io -y sudo rm -rf /var/lib/docker /var/lib/containerd # 官方脚本安装Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl enable --now docker
重新测试容器内的Python3安装操作。
内容的提问来源于stack exchange,提问作者Kevin Stallard
相关产品推荐
相关产品推荐

