如何扩大树莓派dockerpi镜像中/dev/root分区的容量
dockerpi 模拟树莓派环境磁盘扩容方案
以下方案完全适配lukechilds/dockerpi项目默认运行场景,操作步骤如下:
前置准备
- 停止正在运行的dockerpi容器:
# 查看运行中的容器,找到dockerpi对应的容器名/ID docker ps # 停止容器 docker stop <容器名/ID> - 导出容器内原始的树莓派系统镜像,避免原有数据丢失:
docker cp <容器名/ID>:/sdcard/filesystem.img ./original_sdcard.img
扩容镜像文件
- 创建指定大小的空镜像文件,示例为扩容到8G,可按需修改数值:
fallocate -l 8G new_sdcard.img - 将原始镜像内容写入新的空镜像:
dd if=./original_sdcard.img of=./new_sdcard.img conv=notrunc status=progress
调整分区与文件系统
- 将新镜像挂载为loop设备:
sudo losetup -fP ./new_sdcard.img - 查看镜像对应的loop设备号,示例输出对应设备为
/dev/loop0:losetup -l | grep new_sdcard.img - 进入parted交互工具调整分区表:
交互界面依次执行以下操作:sudo parted /dev/loop0- 输入
print查看分区信息,确认第二个分区为root分区 - 输入
resizepart 2,提示结束位置时输入100% - 输入
quit退出parted
- 输入
- 检查并扩展root分区的ext4文件系统:
# 先执行文件系统检查 sudo e2fsck -f /dev/loop0p2 # 扩展文件系统到整个分区大小 sudo resize2fs /dev/loop0p2 - 卸载loop设备:
sudo losetup -d /dev/loop0
使用扩容后镜像启动容器
运行容器时挂载新的镜像文件即可:
docker run -it \ -v ./new_sdcard.img:/sdcard/filesystem.img \ lukechilds/dockerpi:latest
进入树莓派系统后执行df -h即可验证扩容结果。
注意事项
- 所有操作前请备份
original_sdcard.img,避免操作失误丢失数据 - 若系统未安装
fallocate、parted等工具,可通过对应包管理工具(如apt、brew)提前安装 - Windows/Mac系统可使用WSL2执行上述所有操作,逻辑完全一致
内容的提问来源于stack exchange,提问作者Cam.Davidson.Pilon
相关产品推荐
相关产品推荐

