Catégorie:Docker

De Support SOFAKOM

Commandes

  • docker ps : liste les conteneurs actif
  • docker stop nom_du_conteneur : arrête un conteneur
  • docker up -d : démarrer les VM en mode démons
  • Utiliser un fichier env et un fichier de conf personnalise : docker-compose --env-file plane.env -f docker-compose.yaml up -d
  • docker-compose down : Stop and remove resources

Modification de fichier de config

Parfois lorsqu'on modifie le fichier de conf les conteneur refuses de démarrer. Il faut alors purger les conteneurs modifiés : On part du principe que les contenueurs qui refuse de démarrer sont... éteints. Donc on purge tout les conteneurs éteint :

docker volume prune -f
docker container prune -f
docker image prune -a -f

Puis on démarre celui qui ne démarre pas. Cela force le téléchargement d'une image fraiche et la reconfiguration du conteneur :

docker-compose up -d web

Suppression (utile suite à modif de config)

docker ps
docker stop NAME
docker rm -f NAME (efface l'instance résiduelle. UP va relancer proprement l'image existante.)
docker-compose up -d NAME (chargement le yml seulement si la commande est executer depuis le dossier qui contient le fichier docker_compose.yml, sinon utiliser "docker-compose -f mon_fichier_docker_compose.yaml up -d NAME")

Pour effacer l'image complète et repartir de zéro (mais sans toucher au volume) :

docker image ls
docker rmi -f ID_IMAGE

Si besoin d'effacer un volume interne :

docker volume ls
docker volume rm ID_VOLUME

Si besoin d'efface un volume externe :

sudo su - (car souvent seul root a les bon droits)
cd PATH_VOLUME/
rm -rf *
exit

Script permettant de remettre à zéro complètement les conteneurs situé sur un serveur

On arrête, on efface et on recommence de zéro en téléchargeant les images docker.

#!/bin/bash

set -e

echo "🚨 ATTENTION : Ce script va SUPPRIMER tous les conteneurs, images et caches Docker."


read -p "❓ Es-tu sûr de vouloir continuer ? (y/N) : " confirm
if "$confirm" != "y" && "$confirm" != "Y" ; then
  echo "❌ Opération annulée."
  exit 1
fi

echo "🛑 Arrêt de tous les conteneurs..."
docker stop $(docker ps -aq) 2>/dev/null || true

echo "🧹 Suppression des conteneurs..."
docker rm -f $(docker ps -aq) 2>/dev/null || true

echo "🖼 Suppression des images Docker..."
docker rmi -f $(docker images -q) 2>/dev/null || true

echo "✅ Purge terminée."
echo "Si besoin de créer un réseau interne au conteneur : docker network create nom_du_reseau"
echo "Si besoin de nettoyer aussi les volumes interne : docker volume rm $(docker volume ls -q)"
echo "Pour un Nettoyage complet Docker (system prune) :  docker system prune -a --volumes -f

Sécurisation

La publication des ports d'un conteneur créé des règles IPTABLES qui rend ces ports visibles depuis l'interface de publication.

En cas de :

   ports:
     - "5432:5432"

Cela veux dire que ce port est accessible sur 127.0.0.1:toute le interfaces, et donc aussi d'internet (0.0.0.0).
Il est possible de spécifier l'interface de publication. Par exemple :

   ports:
     - "127.0.0.1:5432:5432"

Pour n'autoriser qu'un accès local. En cas d'usage d'un VPN, il suffira d'indiquer l'adresse l'interface du VPN (l'ip de l'interface locale ;) ) .

Pour autoriser l'accès à certaines IP publiques et pas a d'autre il faut passer par IPTABLES.

Par exemple pour publier le port 3306 mais n'autoriser son accès qu'a l'ip distance xxx.xxx.xxx.xxx : Dans docker-compose :

   ports:
     - "5432:5432"

Puis en console :

sudo iptables -I DOCKER-USER -i ens18 -p tcp --dport 5432 -j DROP
sudo iptables -I DOCKER-USER -s 88.168.191.238 -p tcp --dport 5432 -j ACCEPT

Gestion des conteneur

Voir les images docker télécharger dans le serveur :

sudo docker images

Supprimer une image :

sudo docker rmi postgres:15

Voir les volumes :

sudo docker volume ls

Supprimer un volume :

sudo docker volume rm aeyos_pgsql_data

Trouver la liste des version dispo de conteneur :

https://hub.docker.com/_/postgres

Pour utiliser la version 17.5 de postgres, dans docker-compose :

image: postgres:17.5

Pages dans la catégorie « Docker »

Cette catégorie comprend 2 pages, dont les 2 ci-dessous.