This is the blog version of this video.
To watch the YouTube video, check
Docker is a platform for both developers and sysadmins to build, run, and share applications using this idea of containers.
This way to deploy an app using containers is called CONTAINERIZATION.
Docker is not the only technology that uses containers, but it’s the most famous one, the most used one, and the current de facto standard, so I recommend you to start with Docker first to learn containerization concepts.
A Docker container is just a running process with additional features in order to keep it encapsulated and isolated from the host machine and from other containers. The container runs reliably and quickly from one environment to another, and this is the dream for developers and sysadmins.
Containers are FLEXIBLE, because no matter the complexity, the dependencies, the languages, every application can be containerized.
Containers are also LIGHTWEIGHT, by sharing the same kernel, they don't consume a lot of system resources, so you save money, which is always a good thing.
Another one, the best feature for me, is that they are PORTABLE: You can build locally, then run everywhere Docker is installed.
Containers are also LOOSELY COUPLED: They are well encapsulated and highly self-sufficient. You can replace, upgrade, or delete one, without disrupting the whole system, and this is very good for big projects, where different teams work on different parts of the same, big, system.
Containers are SCALABLE: Indeed you can easily increase/decrease/automatically distribute containers replicas. You can also use an orchestration tool, like Docker Swarm, or Kubernetes. And this will make the difference when you will have a successful app. And you want a successful app, right?
And last but not least, Containers are SECURE, because they apply aggressive constraints and isolations to processes by default, without any configuration required. Of course, in the end, you are in charge of the security of your app!
Each container interacts with its own dedicated filesystem, which is provided by a Docker image.
A Docker image is an executable, packaged file that includes everything you need to run an application: code, runtime, dependencies, tools, libraries, configuration.
To use a programming analogy, an image is like a class, and a container is an instance of that class, so you can have many containers running from the same image at the same time
So that’s it for this brief introduction of what Docker is.
Thanks for reading, and see you next time