Docker
Docker
Tip
L'écosystème Docker
- Docker Hub : Le registre officiel pour trouver des images.
- Hadolint : Un linter pour Dockerfiles qui vous aide à suivre les bonnes pratiques.
- Composerize : Convertissez vos commandes docker run en docker-compose.yml.
Commande de base
Lister des dockers :
supprime le cache
Activer le redémarrage automatique d'un conteneur
Exécuter des commande dans un conteneur
Docker-compose dans un dossier différent :
Stoper tout les contneurs en même temps
Lancer un conteneur alpine avec le shell
Docker sans être admin
Il faut le rajouter dans le groupe docker (rien de plus simple)
GPU Nvidia
Installation du driver Nvidia sur une distribution Debian:
Installation du driver Nvidia sur une distribution Redhat:
La commande installera le driver, le module noyau, le runtime et l'outil de gestion.
Avec Nvidia container toolkit
Installer Nvidia container toolkit :
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo nvidia-ctk runtime configure --runtime=docker
Note
Bien utiliser la commande nvidia-ctk pour enrigistrer le runtime nvidia
En Gpu passtrought
Ajouter ça dans le docker compose :
Exemple de conteneur
Watchtower : Permet d'automatiquement mettre à jour les conteneurs :
sudo docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart unless-stopped \
containrrr/watchtower
Mise a jour Automatiques de contneurs
#!/bin/bash
# Variables
SEARCH_DIR="/home"
start_update_images() {
docker run --rm \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once \
--monitor-only
}
start_all_docker_compose() {
echo "Recherche des fichiers docker-compose dans $SEARCH_DIR..."
# Trouver tous les fichiers au format compose de manière récursive, en ignorant les erreurs de permission
find "$SEARCH_DIR" -type f \( -name "docker-compose.yml" -o -name "docker-compose.yaml" -o -name "compose.yaml" -o -name "compose.yml" \) 2>/dev/null | while read -r compose_file; do
compose_dir=$(dirname "$compose_file")
echo "Lancement de docker-compose up -d dans : $compose_dir"
# Se déplacer dans le répertoire et exécuter docker-compose up -d
(cd "$compose_dir" && docker-compose up -d)
done
}
# Exécution des fonctions
start_update_images
start_all_docker_compose
Note
Cette méthode permet de mettre à jour globalement les conteneurs de manière cohérente. L'utilisation de --monitor-only avec Watchtower permet de détecter les nouvelles images sans modifier l'état des conteneurs. Si Watchtower effectuait la mise à jour lui-même, une exécution ultérieure de docker-compose up -d déclencherait une recréation des conteneurs car l'état local de Compose ne correspondrait plus à l'image déployée. En procédant ainsi, on s'assure que Docker Compose reste l'unique gestionnaire du cycle de vie des conteneurs.
Lien utile
Composerize permet de transformer les commandes docker run par docker-compose.
Source : Composerize
Executer sans êtres sudoers
Pour ajouter les permissions :