A virtualization software. That makes developing and deploying applications much easier.
- It packages application with all the necessary dependencies, configuration, system tools and runtime.
- Portable artifact, easily shared and distributed.
<aside>
✅ A standardized unit, that has everything the application needs to run.
</aside>
- Own isolated environment with all dependencies and configs. Standardizing process of running any service on any local environment, avoiding to install everything on your local machine.
<aside>
👉 Easy to run different versions of same app without any conflicts. Making deployment process more easy.
</aside>
-
Docker contains the OS application layer, and all the services and apps are installed on top that layer.
-
It is only able to virtualízate Linux based distros.
<aside>
💡 Go to the official Docker website and always refer to latest documentation guide in the official documentation.
</aside>
- Docker Images: Inmutable template that defines how a container will be realized. It contains all the information of the project, like the application, any services needed or the OS layer.
- Docker Containers: A running instance of an image. It actually starts the application that is in the Docker image.

<aside>
✅ You can run multiple containers from 1 image.
</aside>
- Docker Registries: A storage and distribution system for Docker Images. There you will find official images available from applications like Redis, Mongo, Postgres, etc…
- Official images are maintained by the software authors or in collaboration with the Docker community.
- These images are stored in Docker Hub.
- Docker images are versioned.
- Different versions are identified by tags called Images Tags.
