Docker
Dinuka Fernando
Associate Technical Lead at Axiata Digital Labs| Speaker | Blogger
Docker is an open source project and it is a tool which designed to create ,deploy and run applications by using containers easily(Docker is an open source project which automate the deployment application as portable, which can run virtually in anywhere).
Containers gives freedom for developers to package up an application with all of the parts its needs.
Examples:-libraries ,Dependencies,Ship all as one package
By using containers developers can assure that the application will run on any other linux machine without changing any settings on that machine compared with the machine that used to written the code and where it tested.
Docker looks like a virtual machine,but unlikely it's not a virtual machine because rather creating a complete virtual operating system docker allows applications to use same linux kernel as the system that they are working on and only the required applications are shipped with things.This reduces the size of the application and boost the performance.
Why docker ?and to whom?
Docker is designed to get advantages for both developers and system administrators.
Docker is a part of many DevOps engineers.
By using dockers developers can implement there code without worrying about the system that it will finally run on.
Docker gives flexibility and reduces number of system needs.
Benefits of docker
Security
Docker gives security to the applications running in a shared environment,but the containers by themselves not an alternative to take proper security measure.
Docker containers are by default quite secured.
Docker separating the different components of a large application into different containers ,if one container is compromised the others remain unaffected.
If you run your processes as non privileged users inside the container you can add extra layer of security by enabling the AppArmor,SELinux,GRSEC.
When it comes to docker there are some major areas that considered.
The intrinsic security of the kernel and its support for namespaces and group the attack surface of the Docker daemon itself.
Loopholes in the container configuration profile, either by default, or when customized by users.
Reproducibility
Docker containers guaranteed to be identical on any system that can run docker.
Specification files are stored in docker files .
This file can be distributed among the team members and the organization can guaranteed all images are built from the same docker files.
Having an environment consist and well documented makes it easy to track the application.
Isolation
Settings and dependencies within the container is not affecting any installation.
Using separate containers for each component of an application avoid conflicts of on dependencies
Environment management
Docker helps to manage different versions.
Can manage separate container for testing,development and production.
Continuous integration
Docker works as a part of CI pipeline like Jenkins.Once your code get updated Docker can save updated version as a docker image,Then can publish it to docker hub.
Conclusion
Since the docker release in 2013 and it has become one of the fastest growing technologies in devOps ,However it is still in under development and have some limitations ,so it is not suit for every projects.