I held off for awhile on the Docker train, but I decided to set up a test VM running Ubuntu 18.04 LTS and just put Docker on it to mess around as seen in this post. At first I was just using the run command to control most of my containers. I didn't have too many at this point, maybe around 4-5.
After a bit of getting familiar with how docker handles containers and how information can be passed to each one and ports specified etc. I thought it was the way to go for my setup. I had heard about docker compose and how that was supposed to be life changing. So I took a look at that and boy is it pretty cool! No longer did I have to write down the run commands I was using to start my containers. Everything is contained in the compose file! After I got familiar with compose I decided to migrate as many services as I could over to Docker. It's definitely changed my network layout and helped me consolidate and even use less resources!
Let's take one of my container stacks, guacamole. Guacamole is a service that allows you to ssh/vnc/rdp into any computer on your network via your browser, it's pretty cool. I use it to remote manage most of my servers and it works very well. Now to run guacamole previously I had it installed in it's own LXC on Proxmox, in ubuntu I believe. Guacamole needs three parts for it to run. That's three different services so it makes sense to have them all in their own container, or so I thought.
In comes docker compose. Now I can write all of those services into one compose "stack" that I can bring up and down with one command. By using docker and docker compose I was able to consolidate and containerize most of my media services and start up many more because of how simple and quick it is to download a new container image, map some unused ports, some volume storage, and press the start button.
I'm running over 15 services now. Some of my favorites are Guacamole, BitwardenRS, Grafana, Pi-Hole (which was it's own LXC), MariaDB, and many more. I have a whole spreadsheet on my personal wiki that gives me a quick reference sheet to all the services I have running, the machines they are on and the ports they use. Very handy when trying to map ports for a new service.
As of this writing, most of my services are running on an Ubuntu 18.04 LTS VM created inside of Proxmox. I have Docker set up on that VM and for the most part I use Guacamole (which is running on that VM) to access it. I do most my testing on a separate machine and when I fell that it'll work out on the main VM then I simply copy past the compose file I wrote and enter that nice little command
docker-compose up -d and away it goes!