27
loading...
This website collects cookies to deliver better user experience
Docker simplified - its definition, benefits, Architecture and a quick demo of how easy it is to use
Docker is a platform that allows us to package our applications into deployable executables - called containers, with all its necessary OS libraries and dependencies.
Virtualization is the technology that allows us to create & manage virtual resources that are isolated from the underlying hardware.
Simplicity
Docker kills the enormous complexity of integrating software development with operations, via managing all the heavy lifting of virtualization on its own using a single package.
Speed
You can get your application up and running in seconds or minutes, EVERY TIME, instead of spending hours or days setting up the environment only to do it all over again on a different machine or environment. A faster lifecycle means that your team can be much more agile.
Portability
Since Docker Images (i.e. blueprint of a Container) are immutable once built, you can deploy them on any environment that supports Docker and it will run exactly how it runs on your local machine. This means, you can deploy your application seamlessly to Cloud providers, on-premises or a hybrid environment. No more "but it works on my machine" headache!
NOTE: Even though Images are immutable, you can change the behavior of a Container by providing runtime configurations like environment variables or command arguments etc.
Efficiency
Since containers share the resources of the host OS kernel, far fewer resources are required to run multiple containers, as opposed to VMs. Thus, hardware resource utilization is much more efficient.
Horizontal Scalability
One of the primary benefits of designing your system using containers is that, your system components are by default isolated. By having isolation/loose-coupling between your system components means that, you can develop and deploy them independently. If some components are more load intensive than others, simply - add more machines, run more containers and load balance them to scale out.
This is how giants like Google, Netflix, Uber etc. achieve limitless scalability!
Freedom of Tech Stack
Docker is stack agnostic, meaning it doesn't care or restrict what language, library or framework you use on your Containers. So you, as the developer, can innovate with your choice of tools and frameworks.
This really opens up the whole world for tech enthusiasts like us - if you love learning new technologies and being able to actually use them in projects, you need to learn Docker! 🙌
Open Source & Community Support
Being open source and easy to use made Docker widely adopted, bringing in collaboration and community support. It's upstream repository is available as Moby.
Docker Daemon: The 'brain' of docker - it's a process that serves API requests, and manages Docker objects such as Images, Containers and Volumes etc. It can also communicate with other Docker Daemons if required.
Docker Client: The (docker) command line program that communicates with the Docker Daemon using a REST API.
Docker Host: The (physical or virtual) machine that runs the Daemon.
Container: This is the process that enables OS-level virtualization - by packaging up the required libraries and dependencies and providing isolation from the host and other containers.
Image: A read-only 'blueprint' or template for creating a Container.
Registry: A storage or repository of Images e.g. Docker Hub.
docker run redis
27