Теперь, когда ZFS с поддержкой оверлеев доступен в ZFS 2.2 и Proxmox 8, я решил протестировать его с podman в lxc контейнере. Сразу "из коробки" не заработало. Выдаёт стандартное сообщение от podman, что оверлеи не поддерживаются на файловой системе ZFS. Кстати, Docker тоже выдаёт такое же сообщение, но я не тестировал и не знаю, работает ли этот метод. В общем, нужно создать обёртку для монтирования и настроить podman для её использования. Я использую контейнер Debian 12 с последней версией Podman (4.8) с Думаю, стандартная 4.3 тоже может работать, но я не проверял. Создайте /usr/local/bin/overlayzfsmount Bash: #!/bin/sh
exec /bin/mount -t overlay overlay "$@" убедитесь, что он исполняемый: chmod +x /usr/local/bin/overlayzfsmount отредактируйте /etc/containers/storage.conf, мой содержит только: Code: [storage]
driver = "overlay"
runroot = "/run/containers/storage"
graphroot = "/var/lib/containers/storage"
[storage.options]
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
mount_program = "/usr/local/bin/overlayzfsmount"
[storage.options.overlay]
mountopt = "nodev" Важная настройка — `mount_program`. Всё! Теперь вы должны иметь возможность запускать контейнеры без fuse. Code: root@docker2:~# docker image pull docker.io/library/debian:12
Trying to pull docker.io/library/debian:12...
Getting image source signatures
Copying blob sha256:bc0734b949dcdcabe5bfdf0c8b9f44491e0fce04cb10c9c6e76282b9f6ab df01
Copying config sha256:2a033a8c63712da54b5a516f5d69d41606cfb5c4ce9aa1690ee55fc4f9ba bb92
Writing manifest to image destination
2a033a8c63712da54b5a516f5d69d41606cfb5c4ce9aa1690ee55fc4f9ba bb92
root@docker2:~# docker run -it --rm --name test docker.io/library/debian:12
root@3b38b7aacd55:/#
exec /bin/mount -t overlay overlay "$@" убедитесь, что он исполняемый: chmod +x /usr/local/bin/overlayzfsmount отредактируйте /etc/containers/storage.conf, мой содержит только: Code: [storage]
driver = "overlay"
runroot = "/run/containers/storage"
graphroot = "/var/lib/containers/storage"
[storage.options]
pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
mount_program = "/usr/local/bin/overlayzfsmount"
[storage.options.overlay]
mountopt = "nodev" Важная настройка — `mount_program`. Всё! Теперь вы должны иметь возможность запускать контейнеры без fuse. Code: root@docker2:~# docker image pull docker.io/library/debian:12
Trying to pull docker.io/library/debian:12...
Getting image source signatures
Copying blob sha256:bc0734b949dcdcabe5bfdf0c8b9f44491e0fce04cb10c9c6e76282b9f6ab
Copying config sha256:2a033a8c63712da54b5a516f5d69d41606cfb5c4ce9aa1690ee55fc4f9ba
Writing manifest to image destination
2a033a8c63712da54b5a516f5d69d41606cfb5c4ce9aa1690ee55fc4f9ba
root@docker2:~# docker run -it --rm --name test docker.io/library/debian:12
root@3b38b7aacd55:/#
