Mise en place de Docker et Docker-compose sur Debian 11

Mettre à jour la liste des fichiers disponibles dans les dépôts APT présents dans le fichier de configuration "/etc/apt/sources.list" :

sudo apt-get update

Installer les packages :

sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release

Ajouter la clé GPG de Docker :

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Configurer le dépot :

echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Installer le moteur Docker :

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Vérifier le fonctionnement de Docker :

sudo docker run hello-world

Résultat :

su -
usermod -aG docker nomutilisateur
newgrp docker
systemctl restart docker

Résultat :

Ajout du ficher docker-compose.yml pour mettre l'image de PostGreSQL :

version: "3.1" services: pgdb: image: postgres:latest restart: always environment: POSTGRES_USER: olan POSTGRES_PASSWORD: password POSTGRES_DB: docker ports: - 5432:5432 volumes: - database-data:/var/lib/postgresql/data/ pgadmin: image: dpage/pgadmin4 environment: - PGADMIN_DEFAULT_EMAIL=olan@pgadmin.fr - PGADMIN_DEFAULT_PASSWORD=password ports: - '5050:80' restart: always volumes: - pgadmin:/root/.pgadmin volumes: database-data: pgadmin:

Ajout du ficher makefile :

up: # Start containers docker compose up -d down: # Stop containers docker compose down downwipe: # Stop containers and delete volumes docker compose down -v pgshell: # Connect to PostgreSQL container docker compose exec pgdb bash psql: # Start PostgreSQL command line inside container docker compose exec pgdb psql -h pgdb -d appdb -U postgres myshell: # Connect to MariaDB container docker compose exec mariadb bash mysql: # Start mysql command line inside container docker compose exec mariadb mysql --host mariadb --database appdb --user appuser --password phpshell: # Start bash inside PHP container docker compose exec php-fpm bash

Démarrer les conteneurs :

make up

Résultat :

Problème rencontré avec Docker-compose :

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo mv /usr/local/bin/docker-compose /usr/bin/docker-compose sudo chmod +x /usr/bin/docker-compose

Commande basique docker :

docker run hello-world docker run --name web -d -p 9080:80 nginx sur un port spécifique
docker images
docker ps docker ps -a voir l'ensemble des conteneurs
docker inspect web
docker inspect web

Syntaxe :

FROM ubuntu:latest AS BUILD_IMAGE RUN apt update && apt install wget unzip -y RUN wget https://www.tooplate.com/zip-templates/2128_tween_agency.zip RUN unzip 2128_tween_agency.zip && cd 2128_tween_agency && tar -czf tween.tgz * && mv tween.tgz /root/tween.tgz FROM ubuntu:latest LABEL "project"="Marketing" ENV DEBIAN_FRONTEND=noninteractive RUN apt update && apt install apache2 git wget -y COPY --from=BUILD_IMAGE /root/tween.tgz /var/www/html/ RUN cd /var/www/html/ && tar xzf tween.tgz CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] VOLUME /var/log/apache2 WORKDIR /var/www/html/ EXPOSE 80

Lancement de l'image :

docker build -t image docker run -P -d image