Terminolgy
This section focuses on the terminolgy that you will see when you first start working with Docker.
Docker Architecture
At a glance the Docker terminolgy can appear incredibly confusing, however it is not as confusing as you would think…
Docker Engine
The Docker Engine can be thought of as the heart of the docker program and it contains 3 components…
-
Docker Daemon : The Background service that manages images, containers, networks and volumes.
-
Docker CLI : Contains the commands used to interact with Docker.
-
Docker Rest API : A way for the tools to interact with Docker programmatically.
Images
Think of the image as a blueprint that contains the extra libraries, dependencies and runtime of your code.
Containers
Containers are the actual utilization of the Images, running in a separate environment (Containers are considered lightweight because they share the operating system of the host machine but are isolated from other containers.)
Volumes
Volumes store data that a container uses and generates (sort of like a save file) This is important because when containers stop running, the data inside the container is lost. Volumes will save the data so that it can be used again later.
Networks
Networks allow containers to communicate with each other or connect to outside (For example a webserver needing a database container)
Registries
Registries resemble an app store format where images can be stored, shared and downloaded. You can refer to the DockerHub Quickstart to get started with registries
Compose (Advanced Topic)
Simply put, Docker compose is a tool that allows you to manage and interface all your docker containers in a single file (Stored in a “_YAML ~ .yml_ format)
Dockerfile
The Dockerfile contains the details needed for Docker to build a container image. It will contain information such as… - Your base operating system - Required dependencies - Commands to be executed when the container runs
Note : You must build the Dockerfile yourself!! (see the ‘Creating a Dockerfile’ tab )