Skip to main content

Installation et configuration de Docker

C'est drôle mais d'abord c'est quoi Docker ?

C'est un logiciel qui permet de venir encapsuler des logiciels et de ce fait les rendres ultra portable. Par exemple admettons vous avez développer un logiciel en C++ sur Debian et vous souhaitez le rendre utilisable sur Windows sans avoir à l'adapter, vous pouvez faire une image Docker du logiciel et le rendre compatible de partout du moment que c'est la même architecture (x86... ARM...)

Pour installer Docker rien de plus simple, faisons d'abord les dossiers basiques sinon il va être capricieux lors du téléchargement d'images par exemple :

# mkdir /root/.docker
# echo "{}" > /root/.docker/config.json

Puis installons les paquets obligatoires pour l'ajout correct des dépôts de Docker tiers :

apt install -y curl gnupg lsb-release

Puis on ajoute les dépôts

# curl -fsSL https://download.docker.com/linux/debian/gpg | 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" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Et maintenant on peut installer Docker et le plugin docker-compose

apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-plugin-compose

Maintenant on peut déjà envisagé de créer un fichier docker-compose.yml, donc pour ça on fait un dossier dédié à nos conteneurs

# mkdir ~/Docker && cd ~/Docker

A présent on peut aussi créer notre dossier et fichier de base

# mkdir applications && touch docker-compose.yml

Nous pouvons faire notre fichier docker-compose.yml

version: "3.9"
services:


  watchtower:
    image: containrrr/watchtower
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker/config.json:/config.json
    command: --label-enable --cleanup --interval 300
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

networks:
  no-internet:
    driver: bridge
    internal: true
  internet:
    driver: bridge
    enable_ipv6: true
    ipam:
      config:
        - subnet: "fd00:dead:beef::/48"

Par défaut je mets watchtower, c'est un conteneur qui permet de faire des mises à jours automatiques de conteneurs (pour pouvoir le rajouter, il faut mettre le "labels" sur chaque conteneur).

Côté réseau, une partie avec et sans internet, par exemple les bases de données uniquement en local etc.

L'avantage de Docker c'est que l'on peut vraiment limiter au maximum les interractions avec le réseau extérieur :p