The perk of using Docker

Containerization – we in the IT world have all heard it. And Docker is the ultimately powerful solution to container in developer world. By 2019, Docker adoption in IT companies is at the rate of 30%. What makes Docker so unstoppable and why it is a good decision to adopt Docker into your organization. This article will help you open your mind to the main reasons.

 

Docker

Copyright picture from Docker blog

What is Docker?

Docker is an open source software developed by Docker Inc, originally created by Solomon Hykes whose goal was to make containers become easier.

Docker allows users to establish fully independent and isolated environment to launch and deploy their application. With Docker, all the development, deployment, and running applications are automated inside isolated containers. Then developers are able to pack an application with all of its crucial parts (libraries and other dependencies), then ship it as one package.

The perk of using Docker

Efficiency (Speed)

Docker is fast. Applications can start within seconds and stop just as quickly. Containers are built and destroyed quickly and easily.

Developers have the ability to rapidly run a new process on a server, almost instantly. Containers only abstract the operating system while virtual machines abstract the entire device. Containers use shared operating systems and instead of virtualizing hardware, they rest on top of a single Linux instance. This means developers don’t have to worry about the system on which their code will run because containers have brought them a neat and useful capsule to contain their application.

As a result, the most server application instances can be run on the least amount of hardware.  Developers can get greater number of apps running on the same old servers. Fewer resources are required to run the same application. In the long run, organizations are able to save millions of dollars from server costs, power and hardware costs to employees to maintain them. This is also the reason why Docker is the darling of many large and stable companies who need to generate steady revenue over the long term: EBay, Red Hat, PayPal, The New York Times, Business Insider, Quora, Spotify, Shopify, etc.

Consistency

From the very starting stage of development till the last phase of production, Docker provides developers with a consistent environment for their application.

This kind of standardization is actually the most extrusive asset of Docker. With Docker, everything from development, build, test, and production environments are easily replicated. This kind of effectively standardized and repeatable environment allows every team member to work in a production consistency environment. This also equals to no more obstacles in establishing your environment. Once the configuration is completed, developers are free from manual dependencies re-installation. When you change your computers or if an employee joins your company, all you have to do is to give them your configuration. All of these contributes to help developers with analyzing and fixing bugs within the application, hence, having more time to develop features.

Moreover, Docker is very useful in terms of version control and component reuse. Developers can easily track and roll back to a previous version as well as inspect differences. The whole process is fast and can be tested in only few minutes.

The code isolation

By isolation it means each running Docker container is isolated from the network, the file system and other running processes. An application along with all of its dependencies and libraries can be combined into a single container that is separated from the host version of Linux kernel, platform distribution, or deployment model. This makes Docker more portable, liberating the whole team from setting up and debugging the environment again, no more “it works only on my machine” stereotype and it is also easier to set up codebase.

Rapid Deployment

Every IT company with effective DevOps workflow knows that frequent deployment is a must. Docker CI/ CD (continuous integration/ continuous deployment) allows developers to set up local development environments that are exactly like a live server, run various development environments from the same host with unique software, operating system, and configurations; test projects on new or different servers and allow anyone to work on the same project with the exact same settings without depending on the local host environment. Every container has its own container and there is no need to boot an OS. Therefore, applications are deployed quickly more than ever, within seconds. Docker’s cloud architecture also makes it very simple and effective to deploy on cloud.

At Bac Ha Software Co., Ltd. We love Docker. It’s our favorite in the age of DevOps, bringing us huge advantages in many projects. We use Docker daily in Redmine and Gitlab. Let’s dig in some of our projects that utilize Docker.

Case Cesium

We help our customer to build Proof of Concept demo for locating and displaying 3D data of the city at right position on the 3D map in web platform. The client of this project is one of our most loyal customers who chooses BHSoft as their ideal partner since they know we have such substantial expertise working with BIM at many levels. The project has started with two dedicated engineers who oversaw development and project management. During the project, customer requests to allocate up to 10 developers and BHSoft is always ready to provide our precious customer with the best members from our excellent teams.

In this project, we use Docker multi-stage build layers for both front-end and back-end parts of the project. We use Docker composer file to build into two separated services but smoothly interact with each other when necessary. Thanks to the fact that Docker is independent from local host environment, we could easily deploy on cloud.

We have clear goals with our Docker build: It should be secure, as slim as possible and all quality standards must be met before the building process starts.

 

Case PP – A Nordic recruiting platform

Our client is a Nordic HR technology company, providing recruiting services platform for their customers who are looking for potential candidates. BHSoft helps them to develop a web application that puts simplicity at the heart of the user-experience. Users can manage all information including talent profile, company profile, matching jobs and talents based on competencies and qualifications. In this project, we attempt to deliver to our client both responsive web front-end and scalable back-end development. We are also in charge of the client’s server.

Just like provision a server, we provision a Docker container. In this project, there are two containers in total: one container for Java 8 (back-end server) and one container for Node.JS 8 (front-end side) to run in. The build => test => deployment process is seamlessly automatic. 

Reference link:

https://medium.com/uptime-99/the-benefits-of-using-docker-for-development-and-operations-2c5256ad89bc

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.0_release_notes/sect-red_hat_enterprise_linux-7.0_release_notes-linux_containers_with_docker_format-comparison_with_virtual_machines

https://medium.com/free-code-camp/a-beginners-guide-to-docker-how-to-create-your-first-docker-application-cc03de9b639f

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.0_release_notes/sect-red_hat_enterprise_linux-7.0_release_notes-linux_containers_with_docker_format-comparison_with_virtual_machines

https://dzone.com/articles/top-10-benefits-of-using-docker