Looking at your initial post and setup, I created a simplified similar VM environment using the uCore
image.
sudo rpm-ostree status
core@localhost:~$ sudo rpm-ostree status
State: idle
Deployments:
● ostree-image-signed:docker://ghcr.io/ublue-os/fedora-coreos:stable-zfs
Digest: sha256:b7d0ab6bc055ecccf768732c210bb82058eb4f2acc66f2ae1b8796776ceac840
Version: 41.20241109.3.0 (2024-12-09T03:12:49Z)
core@localhost:~$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
POOL-NVME 6.05M 9.20G 5.81M /mnt/POOL-NVME
core@localhost:~$ sudo zpool status -LP
pool: POOL-NVME
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
POOL-NVME ONLINE 0 0 0
/dev/vdb1 ONLINE 0 0 0
errors: No known data errors
Then I created the file /etc/containers/storage.conf
with the following content.
cat /etc/containers/storage.conf
core@localhost:~$ cat /etc/containers/storage.conf
# This file is the configuration file for all tools
# that use the containers/storage library. The storage.conf file
# overrides all other storage.conf files. Container engines using the
# container/storage library do not inherit fields from other storage.conf
# files.
#
# Note: The storage.conf file overrides other storage.conf files based on this precedence:
# /usr/containers/storage.conf
# /etc/containers/storage.conf
# $HOME/.config/containers/storage.conf
# $XDG_CONFIG_HOME/containers/storage.conf (If XDG_CONFIG_HOME is set)
# See man 5 containers-storage.conf for more information
# The "container storage" table contains all of the server options.
[storage]
# Default Storage Driver, Must be set for proper operation.
driver = "overlay"
# Temporary storage location
runroot = "/run/containers/storage"
# Primary Read/Write location of container storage
# When changing the graphroot location on an SELINUX system, you must
# ensure the labeling matches the default locations labels with the
# following commands:
# semanage fcontext -a -e /var/lib/containers/storage /NEWSTORAGEPATH
# restorecon -R -v /NEWSTORAGEPATH
#graphroot = "/var/lib/containers/storage"
graphroot = "/mnt/POOL-NVME/Podman/Storage/graphroot"
# Storage path for rootless users
#
# rootless_storage_path = "$HOME/.local/share/containers/storage"
rootless_storage_path = "/mnt/POOL-NVME/Podman/Storage/rootless_storage_path"
This resulted in the following info about the Podman system.
podman info --format json | jq --raw-output '.store'
core@localhost:~$ podman info --format json | jq --raw-output '.store'
{
"configFile": "/var/home/core/.config/containers/storage.conf",
"containerStore": {
"number": 0,
"paused": 0,
"running": 0,
"stopped": 0
},
"graphDriverName": "overlay",
"graphOptions": {},
"graphRoot": "/var/mnt/POOL-NVME/Podman/Storage/rootless_storage_path",
"graphRootAllocated": 9881518080,
"graphRootUsed": 6160384,
"graphStatus": {
"Backing Filesystem": "zfs",
"Native Overlay Diff": "true",
"Supports d_type": "true",
"Supports shifting": "false",
"Supports volatile": "true",
"Using metacopy": "false"
},
"imageCopyTmpDir": "/var/tmp",
"imageStore": {
"number": 1
},
"runRoot": "/run/user/1000/containers",
"volumePath": "/var/mnt/POOL-NVME/Podman/Storage/rootless_storage_path/volumes",
"transientStore": false
}
core@localhost:~$ sudo podman info --format json | jq --raw-output '.store'
{
"configFile": "/etc/containers/storage.conf",
"containerStore": {
"number": 0,
"paused": 0,
"running": 0,
"stopped": 0
},
"graphDriverName": "overlay",
"graphOptions": {},
"graphRoot": "/var/mnt/POOL-NVME/Podman/Storage/graphroot",
"graphRootAllocated": 9881518080,
"graphRootUsed": 6160384,
"graphStatus": {
"Backing Filesystem": "zfs",
"Native Overlay Diff": "true",
"Supports d_type": "true",
"Supports shifting": "true",
"Supports volatile": "true",
"Using metacopy": "false"
},
"imageCopyTmpDir": "/var/tmp",
"imageStore": {
"number": 1
},
"runRoot": "/run/containers/storage",
"volumePath": "/var/mnt/POOL-NVME/Podman/Storage/graphroot/volumes",
"transientStore": false
}
Running simple Podman container, e.g. podman container run --rm -it docker.io/library/busybox
seems to work.