@MarkR Here’s my two cents on your question.
Don’t conflate a virtualized host and containerized apps: regardless whether you install Ubuntu on bare metal (like me with my Chromebox and Debian) or as a virtual machine in ESX, Proxmox, etc., you could (and I would say should) take advantage of Docker and containerized apps. So make the choice about bare metal vs virtualized os based on your own home IT setup and how complex you want that to be, it doesn’t have anything to do with whether you use Docker.
The real debate here is between the various ways to install Home Assistant, and I’ll use two examples for the sake of debate: 1) installing like a regular program directly on your OS vs 2) using a Docker container.
If you install like any other program, you need to install dependencies. HASS depends first and foremost on Python3 but has a lot of other dependencies, many of which are automatically installed by HASS based on the platforms you define in configuration.yaml. But that isn’t always the case: take the (still ongoing) example of the difficulties people have been having getting IKEA’s TRÅDFRI platform to work - because of issues with the dependencies that the HASS tradfri implementation has, users have had to figure out how to compile/install (among other things) aiocoap, tinydtls, and Cython to get tradfri talking to HASS. With a regular install, in other words, you need to worry about dependencies and installing programs on your OS. May not be a headache, but could be. If something gets messed up, it’s not uncommon to read about people blowing away their whole install and doing it again. Depending on your OS (take CentOS) as an example, you may also need to worry about manually updating Python3, since HASS has deprecated 3.4 and recommends running 3.6 moving forward. And if you use any companion programs to HASS (Homebridge, nginx for reverse proxy, Appdaemon) you need to worry about installing them and their dependencies too. If for some reason you need to reinstall your OS, you’ll need to spend a considerable amount of time reinstalling dependencies and tracking down configurations too.
With docker, you don’t have this problem. The HASS devs define a Docker image that contains all the required dependencies - Python3.6, the tradfri requirements, etc. So you just run one Docker command with a number of options, defining a directory where you want to store your configuration, ports, any devices you want to pass to the container (eg your zwave stick), and so on, and then it runs sandboxed from the rest of your system. Updating is as simple as
docker pull imagename, deleting your container, and recreating it with the same options. There are containerized versions of most major software, including the HASS companion apps I mentioned earlier.
I could go on. The problem you are having with your Zwave stick is a QNAP problem, not a Docker problem. On a normal OS, you have access to more tools (including, on Linux, udev rules) to ensure that the naming of devices stays consistent between reboots.
HASS.io is a great step forward for the whole HASS project and is an easy way to get up and running fast with minimal under the hood configuration. It’s great for people who don’t want/need to tinker. I like more control so I ultimately went with my setup and am very happy.
Feel free to ask any questions you might have, I’m happy to share my config in more detail including my Docker specifics.