Getting started with Docker (docker-toolbox)

docker201511
If you are in software development and web development, you are likely to have come across Docker as well as Vagrant. These are the two important Virtualisation tools that you will use for your development/production workflows.
For MacOSX you can install via Dockertoolbox: http://docs.docker.com/mac/started/ . The Mac version is quite straightforward; either you can download the docker toolbox image (which consists of docker-compose, docker, docker-machine) or install it via brew if you have homebrew installed.

$brew cask install docker-toolbox

For Linux Ubuntu, you can install via apt-get. Note that the version in apt-get repository is quite dated. The recommended Ubuntu version is 14.04 Trusty (LTS – Long Term Support). Full detailed instructions can be found: https://docs.docker.com/engine/installation/ubuntulinux/ .
The summarise version as follows:

  • Open up terminal (if you are running desktop version); and run the follow statement to add the gpg key:

$ sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D

  • Then edit the repo source list:

$ touch /etc/apt/sources.list.d/docker.list
$ nano /etc/apt/sources.list.d/docker.list

  • Add the following line if it does not exists:

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Now save the file and close. Next run the following:

$ apt-get update
$ apt-get purge lxc-docker
$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r)
$ sudo apt-get install linux-image-generic-lts-trusty
$ sudo reboot

The machine should be rebooting now.

$ sudo apt-get install docker-engine
$ sudo service docker start
$ sudo docker run hello-world

At this point, there is a tool docker-compose which is not installed by default. You can build from github: https://github.com/docker/compose or i recommend from python.
Now to setup docker-compose.

$ python -V # this should print out python version number
$ sudo apt-get install python-setuptools
$ sudo apt-get install pip
$ sudo pip install docker-compose

Why should we install docker-compose? If you look at some docker projects, they have a docker compose file. This will allow you to pretty much start the service via:

$ sudo docker-compose up

Pretty nifty, as this will run the application based on how the author intended. If you have a look at the docker-compose yml file, it is pretty much self explanatory.
Okay, now to docker. Two key concepts of docker are containers and images. Using Jenkins (a build management tool) as an example. We can download the image Jenkins using the following command:

$ sudo docker pull jenkins

To run it:

$ sudo docker run -d -p 8080:8080 –name myjenkins jenkins

wow. so what is that? basically, -d flag is running it in detached mod (running in background), -p is the forwarding port 8080(to) : 8080(from), –name as the custom running container name and finally jenkins is the images to look for.
If you do the following, you can now see the running processes.

$ sudo docker ps

If you add in -a, you can see all inactive processes as well.

$ sudo docker ps -a

If you wish to delete a container, you can either use the –name you declared or the container ID.

$ sudo docker rm my jenkins

Finally, you can backup running containers via:

$ sudo docker export myjenkins > jenkins-backup.tar

You can also restore containers. But I will leave this up to you to do a bit of research homework.