Docker is a set of the platform as service products that use OS-level virtualisation. It allows to deliver software in packages (containers). These containers are isolated from one another. They also bundles software, libraries, and configuration files. They can communicate with each other through well-defined channels. Wikipedia
Step 1 — Installing Docker Desktop
Go to the official docker website and download the last software version, the current latest version that we used for this tutorial is 20.10.6, build 370c289:
Step 2 — Drag And Drop The Start The Installation
As any other Mac software installation we need to drag and drop the docker.app into Applications folder:
Step 3 — Launch The Docker Desktop App
Double click on the docker app to start.
Step 4 — Copy The Command Line and Run into The Terminal
In order to start running the docker image execute on the terminal consol the command bellow:
docker run -d -p 80:80 docker/getting-started
To check the running containers you can run the command bellow in the terminal:
docker ps
Or also we can look in the docker desktop UI at Containers/Apps tab:
For some security reason in some companies, we need to configure a proxy to access to docker hub to get images. We can do this configuration using the docker desktop ui:
Step 5 — Use Of A Dockerfile
The dockerfile is similar to the makefile in gcc jargon. It is a configuration file with a set of commands to build a customised docker image.
As given in the example hereafter:
FROM ubuntu:18.04
RUN apt-get update -y
RUN apt-get install -y python
COPY . /app
CMD python /app/Src/app.py
Each instruction creates one layer:
- FROM creates a layer from the ubuntu:18.04 Docker image.
- COPY adds files from your Docker client’s current directory.
- RUN execute installation command.apt-get install
- CMD specifies what command to run within the container.
To run an image and generate its container:
docker build -t ubuntu .
docker run -it ubuntu
Step 6 — Use Of A Dockerfile-Compose File
The docker-compose is a yaml file containing the composition of your infrastructure. It defines all links between all services need by your app:
- Python image + postgres image + …
A docker-compose.yml
looks like this:
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Conclusion
For more information about the Compose file. see to the official docker website.
Compose has commands for managing the whole lifecycle of your application:
- Start, stop, and rebuild services
- View the status of running services
- Stream the log output of running services
- Run a one-off command on a service