Development environment overview

Documentation about Docker, the tool that is used to make the installation of OMS easier.

Docker, a quick introduction

Docker is a container management system, where a container is a way to run an application in a way that it seems like it would run in a virtual machine (vm), just with far less overhead. It's like as if you start a program with something like anti-sudo to give it the least permissions possible. Let's call this the running application container. Least possible means that it also can not access the filesystem (fs), which is why each container gets a virtual(ish) filesystem to write on. That file system lives as long as the container does, and as we called the running application container that container lives as long as the application is actually running.

Now it is a bit shitty to lose all data upon crash or exit of the application and to start with an empty filesystem upon start, so they introduced two ways to actually store something, images and volumes. Images care about the empty fs problem before starting and volumes care about the losing data after a crash. First the easy part, volumes. You can specify a folder inside that ephemeral fs to be linked up with your hard drive or an NFS or even the fs of another container. Have a look at the docker-compose.yml file for more insight, the volume mounts there are pretty self-explanatory

Now images. Well, we want to not have an empty filesystem upon the start of the application, so what about putting the stuff that should be there in an ubuntu? Well, there is an image that holds that. Or what about just installing what you need to run node.js? There is an image with that. So, the last question, what is 'there'? Docker hosts something which is called docker hub, a repository of docker images, and that's what I mean with there

So if you type in your cmd 'docker run hello-world' you will end up seeing docker download an image which holds an executable that can print hello world