Unholy (janky?) idea: Bind mount an ext4 volume into your LXC at /var/lib/docker, don’t specify a storage-driver in your daemon.json, and let docker do its things in there. The chosen storage-driver will not be ZFS and it might solve your lockups? You will need to create the volume and the mountpoint in the command line. The UI won’t let you do such a weird thing (probably for your own good ;-))
Note that it is certainly not a recommended way to work. I don’t know how a bind mounted volume behaves regarding backups and transfers to another Proxmox node. (might be very important for you). Respect the naming convention used for vm volumes (vm--disk-x) and the backup might pick it up?
Funny that you just posted… woke up an hour ago, checked my logs and what would have been a zfs dataset lockup had occurred.
However, since (as suggested by @zmezoo ), I switched from docker using the ZFS storage option to just the basic overlay one, I was able to recover easily.
A simple refresh of the docker container solved it. No reboot required.
The lesson learnt here is don’t use the docker zfs storage method unless there is something really specific you need to do. Also keeps zfs list clean In the past there was apparently performance issues, but I am not seeing any of it anymore.
EDIT: In case anybody is wondering… Watchtower is running the updates on the containers. But the lockups have occurred when manually doing it as well.
EDIT2: Been running like this with overlay2 instead of zfs in the daemon.json file for a month now with NO zfs issues at all. Its lovely not getting things locking up and requiring a reboot. Just FYI