Friday, January 24, 2014

Understanding Docker with an Analogy from Traditional Software Development

Docker, a Linux container that is becoming increasingly popular with developers for deploying apps to a cloud infrastructure. Docker allows application data to sync with the OS running on the cloud infrastructure. That means a developer can work directly from their desktop environment and use Docker to automatically sync updates.

Suppose a traditional software developer which follows the below steps as the development process.
  1. Checkout a remote SVN/Git repository to the local file system 
  2.  Improve the code in the local repository 
  3. Test the code in local repository 
  4. Push the modifications back to the remote repository, so others can update those modifications 
Then pushing those modifications to the production deployment is handled by a separate deployment engineering team. As developers only test their modifications in a local environment rather in the production environment, there can be bugs introduced in the production environment. This is mainly due to configuration differences between the local test environment and the production environment. This sort of bugs cause a lot of friction in the deployment process.

Docker tries to tackle this. Comparing with a source code repository system (SVN/Git) which manages the source code, Docker manage the complete software deployment (i.e. source code, configuration) as a "Container". This ensures every developer test their code in a developer environment exact similar to the production environment.

When it comes to maintaing the configuration of components with in the Container, it follows a JSON representation as follows.

1 comment:

Denis Weerasiri said...

That is a excellent web site and also My spouse and i can not suggest a person men plenty of Full of reference and also excellent structure super easy about the sight. Please complete continue that excellent function.
Software development