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