在NFS文件系统上运行的Linux 下使用Docker的解决办法
问题:安装 Docker 后无法启动服务,报错文件系统不支持
环境:从网络启动的树莓派 4B | boot via pxe over NFS
解决办法:VFS 或者 loop device 下面别看了,最终解法把 docker rootfs 挂载到 samba 目录中
背景描述:
- 这个问题的标题可能有点难理解,场景是没有 SD 卡的树莓派,使用 PXE 从网络启动,本地无盘,root 目录在远端的 NFS 上,当安装好 docker 后发现无法启动服务,报错文件系统不支持
- 看起来 docker 是不支持跑在 NFS 文件系统架构中的,查询 docker 文档后有两种解决办法
- 一种是 VFS,解决比较简单,改参数就行,缺点是速度慢,而且占用存储空间相当多,我粗略算了一下,至少 5 倍
- 另一种是挂在 loop device,是比较推荐的做法,但是不好扩容,可以一开始建大一点
解法一:
直接修改 docker 配置文件,将文件系统修改为 vfs 后,重启服务即可
1 | sudo systemctl stop docker |
改成这样:
1 | { |
启动服务,观察文件系统为 vfs
1 | sudo systemctl start docker |
解法二:挂在一个虚拟设备
创建一个 img 文件,容量为 1G,你可以改 count 数字调整到 2G 3G
1 | losetup -fP loopbackfile.img |
挂载它,并格式化
1 | sudo systemctl start docker |
查看大小:
1 | df -hP /var/lib/docker |
重启 docker 服务,观察文件系统
1 | sudo systemctl start docker |
当后续要扩容 img 文件时:
先卸载挂载点
1
umount /var/lib/docker
删除 loop device
1
losetup -d /dev/loop0
重建 img 文件,循环上述步骤
文档参考:
Use the VFS storage driver | Docker Documentation
How to create virtual block device (loop device/filesystem) in Linux – The Geek Diary
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Real的博客!
评论
TwikooWaline