Earlier in this series I discussed containers, their advantages, challenges and how they differs from virtual machines. With majority of enterprises relates containers with docker and use it as container platform software thought of sharing some basic information about docker (beyond containers). 

Docker is an open platform for building distributed applications for developers and system administrators. With Docker, you can manage your infrastructure in the same ways you manage your applications. 
By taking advantage of Docker methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production. The most common analogy that is used to help people understand Docker is saying that Docker containers are like shipping containers: they provide a standard, consistent way of shipping just about anything.

Docker Components

Image : 

  • An image is a static specification what the container should be in runtime, including the application code inside the container and runtime configuration settings. Docker images contain read-only layers, which means after an image is created it is never modified. We can even say image is a lightweight, stand-alone, executable package of a piece of software that includes everything required to run it: code, runtime, system tools, system libraries, and settings.

Container : 
  • Every container is created from an image. A container is a packaged app with all of its dependencies so that the app can be moved between environments and run without changes.
  • Containers that are derived from the same image are identical to each other in terms of their application code and runtime dependencies.
  • Containerized software always runs the same, regardless of the environment. Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams that are running different software on the same infrastructure.

Docker Hub/Registry
  • Available in SaaS or Enterprise to deploy anywhere, It Stores, distributes, and shares container images
Docker Engine
  • A program that creates, ships, and runs application containers
  • Runs on any physical and virtual machine or server locally, in private or public cloud
  • Client communicates with Engine to execute commands
Docker provides tools and a platform to manage the lifecycle of your containers by Encapsulating your applications (and supporting components) into Docker containers. Further distribute and ship those containers to your teams for further development and testing Deploy those applications to your production environment, whether it is in a local data centre or the cloud.
The reason that the Docker container platform garnered so much attention in the industry is that it provides a single platform that can effectively assemble and manage an application. Docker can also manage all of its dependencies into a single package that can be placed into a container and run on any Windows or Linux server. The way Docker packages the application allows it to run on-premises, in a private cloud, in the public cloud, and more. So Docker provides enormous application flexibility and portability and it is these attributes that attracted the attention of so many enterprise adopters.

Here’s few benefits of leveraging docker for development purposes.

  • All developers use the same OS, same system libraries, same language runtime, independent of the host OS. The development environment is exactly the same as the production environment.
  • With application development using Docker, you don’t need to install a bunch of language environments on your system. You can simply run the ruby / python / java application inside docker container. Even it allows you to use different versions of same software e.g. different versions of DB2 or Java on same VM inside different containers.
  • Easy Deployment, If it runs in your container, it will run on your server just the same. Just package up your code and deploy it on server with the same image or push a new Docker image with your code in it and run new image.
  • With the help of docker volumes, you can still use any IDE of your choice as you normally do.
Here are my other Blogs on Container Series – (Please stay tuned for Container / Docker Orchestration Series)

  • Introduction to Containers
  • Advantages and Challenges of containers
  • Container Series – Comparing containers to virtual machines
-Ritesh

Disclaimer: “The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.”