Since docker makes setting up an environment both extremely simple and reproduceable, it seemed like a perfect tool to setup a Plex server. Once you install docker on it, you can then feed docker some dockerfiles, it can then use those dockerfiles to spin up a bunch of isolated environments (such as Postgresql database, a rails web server, a plex server, pretty much anything with a dockerfile).Įach environment will have their own isolated dependencies, and you can even set up networking, port forwarding, etc, between the host machine and these environments! And this is portable to any other linux machine, since all you need on other machines is docker and whatever dockerfiles you used before. This enables some pretty powerful behavior.įor example, I can spin up a vanilla linux server with a fresh OS install. This means containers are more like programs they spin up fast, are cheap to stop and start, and don’t incur the performance overhead of running a virtual machine Docker uses cgroups and namespaces to isolate the environments from each other, but they are still directly issuing calls to the host linux kernel.
It lets you create isolated environments (aka containers), each with it’s own set of dependencies (aka no more conflicting dependencies!).If I had to distill what I discovered about docker into a few key points, it would be the following: I mean, “containers”? Why not just use a VM? But once it really clicked in my head, whoa, containers. To be honest, I initially didn’t quite understand what docker was used for. So recently I have been using docker extensively at work, primarily for setting up/improving a local dev environment, as well as running some containers on AWS ECS.
Running a Plex Media Server with Docker Compose