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.