![在 docker rootless 模式下阻止 zfs 存储驱动程序](https://linux22.com/image/781686/%E5%9C%A8%20docker%20rootless%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E9%98%BB%E6%AD%A2%20zfs%20%E5%AD%98%E5%82%A8%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F.png)
我正在尝试使用无根 docker,但在拉取映像时,docker 尝试使用 zfs 作为存储驱动程序。我可以确认docker info
显示了 zfs 驱动程序。我没有打算在任何地方配置它。我的操作系统没有默认为 zfs(btrfs 是根、引导等)。我的主目录位于已挂载的 zfs 中。
说明docker 中的 zfs解释了如何使用 daemon.json 设置存储驱动程序。但是,对我来说它不存在,这是意料之中的,但我在系统中没有看到可以这样做的等效配置。~/.docker/config.json 中没有关于存储驱动程序的任何信息。
我的主目录 (和无根 docker 目录) 位于已挂载的 zfs 位置,是否足以强制将其作为存储驱动程序?有没有办法让无根 docker 使用不同的存储驱动程序,也许可以通过将我的无根安装指向不是 zfs 支持目录的另一个位置?
答案1
我确认移动 ~/.local/share/docker 的位置足以停止使用 zfs 存储驱动程序。我将其直接设为 /var/docker_rootless 的软链接,一切正常。甚至docker info
现在报告使用 overlay2 存储驱动程序。
解决的具体步骤说明:
- 首先停止docker服务。
systemctl --user stop docker.service
- 还使 /var/docker_rootless 由运行 rootless docker 的用户拥有。
sudo mkdir /var/mynewdir; sudo chown $(whoami):$(whoami) /var/mynewdir
- 移动了原始的docker文件夹
mv ~/.local/share/docker ~/.local/share/docker.bak
- 创建链接
- ln -s /var/mynewdir ~/.local/share/docker
- 将旧文件夹内容复制到新目录。
rsync -A ~/.local/share/docker.bak/ ~/.local/share/docker