Learning about Docker!
On the first day of my last week at RB, I learned a great deal from the others about Docker. The craftsmen were doing an initial spike to get a simple Pheonix Plug server up and running in a Docker Container on a local and then eventually a cloud VM.
I think it is obviously easier to pick up new concepts when one is learning at the same time as everyone else and not playing catch up, and I’ve been feeling a bit of a spare wheel lately, so it was good to be able to contribute my opinions, even if I wasn’t doing any coding/set up.
So what is Docker? It is defined at docker.com as:
Docker allows you to package an application with all of its dependencies into a standardised unit for software development.
So what is a standardised unit? In Docker this is called a ‘Container’ and is defined as:
A stripped-to-basics version of a Linux operating system
An application and it’s dependencies are all part of the ‘Image’ held in the Container.
An image is software you load into a container
You define an Image by writing a Dockerfile like the following which says what should be installed and what actions need to be taken:
If you are using a Mac OS then you can’t obviously run a Linux OS on it without managing it somehow. Docker (aka Docker Engine) and a Docker Container is how we can do this.
Docker Toolbox is what you need to use in order to install Docker software and it gives you Docker Machine which allows MacOS users to use Docker Engine commands in a terminal.