Docker

Commandes

Afficher l'ensemble des conteneurs
docker ps -a
Lancer tous les conteneurs
docker-compose up -d
Mettre à jour les conteneurs
docker-compose pull
Nettoyer les conteneurs
docker system prune -a
Shell dans un conteneur
docker exec -it <ID du conteneur> bash
Stopper un conteneur
docker stop <ID conteneur>
Supprimer un conteneur
docker rm <ID conteneur>

 

Version des conteneurs

Pour utiliser la dernière version : latest

Version 1
Fonctionnalité 1.2
Correctif de sécurité / Patch 1.2.3

Installer docker & docker-compose

Etape 1 : Les dépendances
apt install apt-transport-https ca-certificates gnupg2 software-properties-common
Etape 2 : Ajouter docker dans le repository
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
Etape 3 : Mise à jour des paquets 
apt update
Etape 4 : Installer Docker
apt install docker-ce
Etape 5 : Test
systemctl status docker
root@vm-web:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-12-10 19:27:20 CET; 33s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 8610 (dockerd)
      Tasks: 9
     Memory: 29.8M
        CPU: 394ms
     CGroup: /system.slice/docker.service
             └─8610 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

déc. 10 19:27:20 vm-web systemd[1]: Starting docker.service - Docker Application Container Engine...
déc. 10 19:27:20 vm-web dockerd[8610]: time="2023-12-10T19:27:20.284944139+01:00" level=info msg="Starting up"
déc. 10 19:27:20 vm-web dockerd[8610]: time="2023-12-10T19:27:20.430101570+01:00" level=info msg="Loading containers: start."
déc. 10 19:27:20 vm-web dockerd[8610]: time="2023-12-10T19:27:20.769213106+01:00" level=info msg="Loading containers: done."
déc. 10 19:27:20 vm-web dockerd[8610]: time="2023-12-10T19:27:20.789324414+01:00" level=info msg="Docker daemon" commit=311b9ff graphdriver=overlay2 version=24.0.7
déc. 10 19:27:20 vm-web dockerd[8610]: time="2023-12-10T19:27:20.789479443+01:00" level=info msg="Daemon has completed initialization"
déc. 10 19:27:20 vm-web dockerd[8610]: time="2023-12-10T19:27:20.830725349+01:00" level=info msg="API listen on /run/docker.sock"
déc. 10 19:27:20 vm-web systemd[1]: Started docker.service - Docker Application Container Engine.
Etape 6 : Installer docker-compose
apt-get install docker-compose

PhpMyAdmin

version: '3'

services:

  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    restart: always
    ports:
      - 8080:80

Avec Traefik :

version: '3'

services:

  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    restart: always
    networks:
        - traefik
    labels:
        - "traefik.enable=true"
        - "traefik.http.routers.phpmyadmin.rule=Host(`ndd.fr`)"
        - "traefik.http.routers.phpmyadmin.entrypoints=web"

networks:
  traefik:
    external: true

 

MariaDB

version: '3'

services:

  db:
    image: mariadb:latest
    container_name: MariaDB
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: tbeFo80uV!rGN9lsA

volumes:
    db_data:

Avec Traefik

version: '3'

services:

  db:
    image: mariadb:11
    container_name: MariaDB
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    networks:
      - traefik
    environment:
      MARIADB_ROOT_PASSWORD: tbeFo80uV!rGN9lsA

volumes:
    db_data:

networks:
  traefik:
    external: true

 

Bookstack

version: '3'

services:

  bookstack:
    image: ghcr.io/linuxserver/bookstack:latest
    volumes:
      - bookstack:/config
    ports:
     - "8001:80"
    restart: unless-stopped
    environment:
      DB_USER: bookstack
      DB_PASS: RD4!JeIP4grTqVGjr
      DB_DATABASE: bookstack
      DB_HOST: db:3306
      APP_URL: http://192.168.1.12:8001
    depends_on:
      - db

volumes:
  bookstack:
Avec Traefik

 

version: '3'

services:

  bookstack:
    image: ghcr.io/linuxserver/bookstack:latest
    container_name: bookstack
    restart: unless-stopped
    networks:
      - traefik
    environment:
      DB_USER: bookstack
      DB_PASS: RD4!JeIP4grTqVGjr
      DB_DATABASE: bookstackapp
      DB_HOST: db:3306
      APP_URL: http://ndd.fr
    volumes:
      - bookstack:/config
    labels:
        - "traefik.enable=true"
        - "traefik.http.routers.bookstack.rule=Host(`ndd.fr`)"
        - "traefik.http.routers.bookstack.entrypoints=web"
    depends_on:
      - db

volumes:
    bookstack:

networks:
  traefik:
    external: true
Activation MAIL()

Ajouter les variables suivantes dans le fichier docker-compose.yaml 

MAIL_HOST: smtp.**.fr
MAIL_USERNAME: **@orange.fr
MAIL_PASSWORD: ***
MAIL_PORT: 25
MAIL_FROM: admin@bookstack.fr
MAIL_FROM_NAME: notification

 

Traefik

docker network create traefik
version: '3'

services:

  traefik:
    image: traefik:2.11
    container_name: traefik
    restart: unless-stopped
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web-secure.address=:443"
    networks:
      - traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"

networks:
  traefik:
    external: true

 

Wordpress

version: '3'

services:
  db:
    image: mariadb:latest
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: tbeFo80uVrGN9lsA
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: 6y9SeZr9MnJmWW7N

  wordpress:
    image: wordpress:latest
    volumes:
      - wordpress:/var/www/html
    ports:
     - "8000:80"
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 6y9SeZr9MnJmWW7N
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db

volumes:
    db_data:
    wordpress:
Avec Traefik
version: '3'

services:
  db:
    image: mariadb:latest
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    networks:
      - traefik
    environment:
      MARIADB_ROOT_PASSWORD: tbeFo80uVrGN9lsA
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: 6y9SeZr9MnJmWW7N

   wordpress:
    image: wordpress:latest
    container_name: wordpress
    volumes:
      - wordpress:/var/www/html
    networks:
        - traefik
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 6y9SeZr9MnJmWW7N
      WORDPRESS_DB_NAME: wordpress
    labels:
        - "traefik.enable=true"
        - "traefik.http.routers.wordpress.rule=Host(`ndd.fr`)"
        - "traefik.http.routers.wordpress.entrypoints=web"
    depends_on:
      - db

volumes:
    db_data:
    wordpress:

networks:
  traefik:
    external: true

 

Adminer

version: '3'

services:
  adminer:
    image: adminer:latest
    restart: always
    ports:
      - 8080:80