如何在 Raspberry Pi 上的 docker 映像上增加 /dev/root 的大小

Cam*_*lon 6 raspberry-pi docker

我正在使用https://github.com/lukechilds/dockerpi项目通过 Docker 在本地重新创建 Raspberry Pi。但是,默认磁盘空间很小,我很快就填满了:

pi@raspberrypi:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       1.8G  1.2G  533M  69% /
devtmpfs        124M     0  124M   0% /dev
tmpfs           124M     0  124M   0% /dev/shm
tmpfs           124M  1.9M  122M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           124M     0  124M   0% /sys/fs/cgroup
/dev/sda1       253M   52M  201M  21% /boot
tmpfs            25M     0   25M   0% /run/user/1000
Run Code Online (Sandbox Code Playgroud)

如何为 RPi 提供移动空间?我看到了这个问题,但我不明白该解决方案是如何实施的,或者它是否相关。

mpr*_*net 5

要增加磁盘大小,您需要扩展容器内使用的 qemu 磁盘的分区。

启动docker解压rootfs并将其挂载到主机路径

docker run --rm -v $HOME/.dockerpi:/sdcard -it lukechilds/dockerpi
Run Code Online (Sandbox Code Playgroud)

当虚拟化树莓派启动时,您可以停止它,从 docker 提示符运行sudo poweroff

然后你就有了 qemu 磁盘$HOME/.dockerpi/filesystem.img
它可以通过以下方式扩展:

sudo qemu-img resize -f raw $HOME/.dockerpi/filesystem.img 10G
startsector=$(fdisk -u -l $HOME/.dockerpi/filesystem.img | grep filesystem.img2 | awk '{print $2}')
sudo parted $HOME/.dockerpi/filesystem.img --script rm 2
sudo parted $HOME/.dockerpi/filesystem.img --script "mkpart primary ext2 ${startsector}s -1s"
Run Code Online (Sandbox Code Playgroud)

重新启动将使用调整大小的 qemu 磁盘的树莓派:

docker run --rm -v $HOME/.dockerpi:/sdcard -it lukechilds/dockerpi
Run Code Online (Sandbox Code Playgroud)

从 docker 提示符运行,您可以使用以下命令扩展根文件系统:

sudo resize2fs /dev/sda2 8G
Run Code Online (Sandbox Code Playgroud)

最后根增加。
以下df -h给出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.9G  1.2G  6.4G  16% /
devtmpfs        124M     0  124M   0% /dev
tmpfs           124M     0  124M   0% /dev/shm
tmpfs           124M  1.9M  122M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           124M     0  124M   0% /sys/fs/cgroup
/dev/sda1       253M   52M  201M  21% /boot
tmpfs            25M     0   25M   0% /run/user/1000
Run Code Online (Sandbox Code Playgroud)