Docker can't use zfs "storage-opts": ["size=30G"]

I have docker27.3 installed and The zfs storage pool is created. but when I start dockerd , it Unable to start successfully.

cat /etc/docker/daemon.json

{
    "exec-opts": [
        "native.cgroupdriver=systemd"
    ],
    "insecure-registries": [
        "sealos.hub:5000"
    ],
    "log-driver": "json-file",
    "log-level": "warn",
    "log-opts": {
        "max-file": "10",
        "max-size": "300m"
    },
    "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
    "storage-driver": "zfs",
    "storage-opts": [
        "size=30G"
    ],
    "max-concurrent-downloads": 50,
    "max-concurrent-uploads": 50,
    "live-restore": true,
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}
root@l101:~# zfs list
NAME           USED  AVAIL     REFER  MOUNTPOINT
zpool-docker   600K  6.75T      204K  /var/lib/docker
root@l101:~# zpool list
NAME           SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zpool-docker  6.97T   804K  6.97T        -         -     0%     0%  1.00x    ONLINE  -

then start dockerd

root@l101:~# dockerd
WARN[2024-11-11T17:14:21.489661908+08:00] Binding to IP address without --tlsverify is insecure and gives root access on this machine to everyone who has access to your network.  host="tcp://0.0.0.0:2376"
WARN[2024-11-11T17:14:21.489772365+08:00] Binding to an IP address, even on localhost, can also give access to scripts run in a browser. Be safe out there!  host="tcp://0.0.0.0:2376"
WARN[2024-11-11T17:14:21.489785825+08:00] [DEPRECATION NOTICE] In future versions this will be a hard failure preventing the daemon from starting! Learn more at: https://docs.docker.com/go/api-security/  host="tcp://0.0.0.0:2376"
WARN[2024-11-11T17:14:22.490295709+08:00] Binding to an IP address without --tlsverify is deprecated. Startup is intentionally being slowed down to show this message  host="tcp://0.0.0.0:2376"
WARN[2024-11-11T17:14:22.490372026+08:00] Please consider generating tls certificates with client validation to prevent exposing unauthenticated root access to your network  host="tcp://0.0.0.0:2376"
WARN[2024-11-11T17:14:22.490395785+08:00] You can override this by explicitly specifying '--tls=false' or '--tlsverify=false'  host="tcp://0.0.0.0:2376"
WARN[2024-11-11T17:14:22.490411710+08:00] Support for listening on TCP without authentication or explicit intent to run without authentication will be removed in the next release  host="tcp://0.0.0.0:2376"
failed to start daemon: error initializing graphdriver: Unknown option size: zfs

but ZFS storage driver | Docker Docs have some configs

my docker is 27.3

root@l101:~# docker version
Client:
 Version:           27.3.1
 API version:       1.47
 Go version:        go1.22.7
 Git commit:        ce12230
 Built:             Fri Sep 20 11:39:44 2024
 OS/Arch:           linux/amd64
 Context:           default

root@l101:~# dockerd -v
Docker version 27.3.1, build 41ca978

I see that the documentation mentions it. Based on the version number I assume you installed Docker from the official repository from the official documentation: Install | Docker Docs

But can you confirm it?

If it is a bug, you could report it in the moby repository:

https://download.docker.com/linux/static/stable/x86_64/

I downloaded the binary package,then cp these files to /usr/bin。

root@l101:~# ll docker-27.3.1.tgz
-rw-r--r-- 1 root root 75324256 Sep 21 01:36 docker-27.3.1.tgz
root@l101:~# ll docker
total 198072
-rwxr-xr-x 1 ubuntu ubuntu 39796888 Sep 20 19:43 containerd*
-rwxr-xr-x 1 ubuntu ubuntu 12832920 Sep 20 19:43 containerd-shim-runc-v2*
-rwxr-xr-x 1 ubuntu ubuntu 19804312 Sep 20 19:43 ctr*
-rwxr-xr-x 1 ubuntu ubuntu 39536632 Sep 20 19:43 docker*
-rwxr-xr-x 1 ubuntu ubuntu 72343624 Sep 20 19:43 dockerd*
-rwxr-xr-x 1 ubuntu ubuntu   708448 Sep 20 19:43 docker-init*
-rwxr-xr-x 1 ubuntu ubuntu  2074741 Sep 20 19:43 docker-proxy*
-rwxr-xr-x 1 ubuntu ubuntu 15705168 Sep 20 19:43 runc*
root@l101:~# ./docker/docker version
Client:
 Version:           27.3.1
 API version:       1.47
 Go version:        go1.22.7
 Git commit:        ce12230
 Built:             Fri Sep 20 11:39:44 2024
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

What is the Linux distribution on the host? Is it one that is not officially supported and you had to use the binary? Maybe there is a library or any kernel setting that is needed for that size limit. I’m not sure, but if anything is required whichi is not embedded into the docker binaries, that could explain why the documentation says it is possible and you still get the error message.