So I've had a personal project for a while. How over-kill can I make a media server while still keeping easily usable.
So here's my setup - the end result is how I've done it, but I done currently have a 'clean' install:
There are far better sources on the internet to answer this question in full, so here is a simplified answer based on my use of the docker-compose system.
Docker is essentially a housing for pre-configured virtual machines, each with the purpose of running a single service and no dependency, conflict, or other influence on the applications installed or set up on the host machine.
All the configuration, media, or otherwise external-access required files are stored outside of the service's container, so to update the server, you download an update of the image and use it to replace the container. As the deleted container doesn't store anything related to configuration, databases, media files etc. your setup is instantly applied to the updated container.
The default setup for a container is to use the Docker system's virtual network, which uses the container's environmental variables to pair ports to the host machine's network interface. Containers on the same default virtual network can talk to each other using container names to resolve the each container's virtual IP address on the network.
There is a small resource overhead, however on most PCs this rarely noticeable.
If you want an application that interacts heavily with, or reports on statistics of the host machine, do NOT use a docker image. Glances and Webmin are prime examples, and while Plex can be set up on the default Docker network there are a lot more environmental variables that need to be set for this to work.