Forgive me.
Two months ago I did not understand what Docker was. But after working with it an afternoon I suddenly believed it was the answer to all my prayers.
I have read a lot of descriptions of what Docker is and none of them made any sense...
I would describe a Docker image as a virtual machine image that you will never execute as a virtual machine. Instead docker will open the image and start a single program inside the image. Furthermore the image is only as isolated as you want it to be. Want to map a directory into it? You can. Want to open a network port? You can. And it is well documented witch ports to open and which directories you should map.
It can be hard to argument to people that does not setup servers why this is good but take a look at how to setup an OpenArena server: (
DO NOT LINK) h t t p s : / / openarena . wikia . com/wiki/Servers
It involves multiple steps:
* upload OA to your server: this can be done via ftp, ssh/scp or whatever you prefer
* create an OA user account
* get / create a server config file
* Setup firewall (not currently automatic with docker image although it may be in future) * run the server and make sure it stays active when you log out
All these steps are now just one command (assuming that Docker is installed).
The description on (
DO NOT LINK) h t t p s : / / openarena . wikia . com/wiki/Servers can be hard to follow. So can the steps here:
https://hub.docker.com/r/sago007/openarena/~/dockerfile/However the steps in the Docker file are tested and you can be sure that you get the the same default configuration and user setup that I already verified to work.
You could also see the process like this:
1. Download the source
2. Setup build dependencies
3. Build it
4. Setup run dependencies
5. Run it
6. Configure it
Downloading makes you skip to step 4. Using a docker image let you skip to step 6.
There is more. It has been a long time since I created fresh binaries for OpenArena. Docker images can also contain a full build environment. It is sometimes hard to describe a build environment. Not long ago there was an issue on github where the build instructions was incomplete (
https://github.com/OpenArena/engine/pull/7). This can be solved with a build server and we have Travis but a Docker image takes it a step further. Everyone can fetch the Docker image and build it on there own machine. The steps may be different on Travis and on your machine but the Docker image is the same. "It works for me" is such a lame argument but it is a lot better if we all use a consistent image.