LXC and Docker are two different technologies that achieve similar results, up to a certain point. Personally, I am a fan of LXC, although I admit that Docker has its uses.

However, inside Proxmox, IMHO there is no point in not using LXC, since it's very well integrated into the platform and provides awesome results and performance.

If you need more details, here you are a fairly good, brief comparison.

Personally, I only use LXC in my Proxmox cluster (no VMs), managed via Ansible and the WebGUI, and I couldn't be happier.

I do both. Lcx for swarmaster and portainer server. Little bit of extra ram

Different lcx for docker nodes with thin provisioning and just clone those out. Pct exec swarm join on each node and then migrate to different cluster nodes

Punch the replication in the portainter GUI as you wish

I got up to 50 just for grins and I'll probably load more. I use a ceph cluster and it's great for load testing.

Bulk migrate double handfuls to each node and the whole thing works pretty great

Wouldn't mind subfolders on the prox GUI 😅

What you're missing in your question is the amazing awesomeness of portainer itself as far as using providers to pull in docker images and configure

Portainer is delivered as a docker container for managing docker containers so you naturally need to have docker installed to use it. This does not work on Proxmox LXC out of the box but is not difficult to configure by hand, or you can use an auto-deploy solution such as this:

https://github.com/fiveangle/proxmox_portainer_lxc

The most important thing to remember is to ensure the resulting container is non-privileged (which the above script configures by default).

In terms of security and isolation, I think it's best if you first create e.g. an ubuntu vm - and install portainer / docker there. Don't install directly in the proxmox installation, as that has to be simple and secure and manage other vm's and lxc's. From Inside the ubuntu vm, you create docker selfcontained and install portainer. If anything goes south, you delete the vm and create it again, from proxmox.