@fname@kamloops.social
Virtual machines abstract away the host hardware. Your VM is a file on the proxmox host that you van move, copy and snapshot. Proxmox supports live migration of vm's, so you don't have downtime while maintaining the hardware or software of the proxmox host. With replication and HA, you can have rapid recovery in case of hardware failure. Setting up a proxmox cluster, live migration, replication and HA can be complicated.
Docker containers abstract away application dependencies. The application comes as a container image file including all the prerequisites. You set a few configuration settings (in a docker-compose yaml file or in a stack when using portainer or another docker management tool), start the docker container and can be running in a very short time. When running multiple applications on a host, you don't have to wordt about dependencies of 1 app interfering with the other apps. Data that has to be persisted can be mounted: a specific directory outside the docker container can be made available as a directory inside. If you want to back up application data, you only have to backup the directory. A virtual machine can run docker containers. The proxmox team advises against running docker directly on a proxmox host, but you might do it and get it working perfectly. Primary reason for their advise: proxmox does some very specific network cobfigurations and so does docker which might interfere. Yolo?
LXC containers are like very lightweight virtual machines. They behave a lot like VM's. Proxmox has LXC built in, but it doesn't support live migration or HA.