Docker Compose est un outil puissant pour definir et executer des applications Docker multi-conteneurs. Cependant, vous pourriez preferer utiliser Podman, un moteur de conteneurs sans daemon, a la place de Docker. Ce guide montre comment utiliser Docker Compose avec Podman sur CentOS 9, couvrant les configurations root et non-root.
Utiliser Docker Compose en tant que root
Methode : Utiliser Docker Compose directement
Cette methode utilise Docker Compose (un outil Go independant) pour executer des fichiers compose directement avec Podman.
Etape 1 : Installer podman-docker
Le paquet podman-docker fournit une couche de compatibilite CLI Docker pour Podman. Il cree des liens symboliques ou imite les commandes Docker CLI vers Podman.
Sur CentOS 9, installez-le avec :
sudo dnf install -y podman-docker
Etape 2 : Installer Docker Compose
Telechargez la derniere version de Docker Compose depuis la page officielle des releases GitHub :
sudo curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Rendez le binaire executable :
sudo chmod +x /usr/local/bin/docker-compose
Creez un lien symbolique pour executer Docker Compose avec sudo :
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Etape 3 : Demarrer le socket Podman
Docker Compose necessite un socket Unix pour communiquer. Activez et demarrez le socket Podman :
sudo systemctl enable --now podman.socket
sudo systemctl status podman.socket
Verifiez que le socket Unix fonctionne et est lie au socket Docker par podman-docker :
sudo curl -w "\n" -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping
Vous devriez voir OK dans la sortie, indiquant que le socket fonctionne.
Etape 4 : Utiliser Docker Compose
Creez un nouveau fichier compose.yml avec le contenu suivant :
services:
db:
image: mariadb:10.6.4-focal
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: wordpress:latest
ports:
- 8006:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
depends_on:
- db
volumes:
db_data:
Dans le meme repertoire, lancez la commande suivante pour demarrer les services :
sudo docker-compose up -d
Vous pouvez maintenant acceder a votre blog WordPress a l’adresse http://ip_address:8006 depuis votre navigateur.
Utiliser Docker Compose en tant qu’utilisateur non-root
Pour les utilisateurs non-root, suivez ces etapes pour configurer Docker Compose avec Podman :
Etape 1 : Activer et demarrer le socket Podman
Activez et demarrez le socket Podman pour l’utilisateur courant :
systemctl --user enable podman.socket
systemctl --user start podman.socket
Etape 2 : Configurer Docker Host
Definissez la variable d’environnement DOCKER_HOST pour pointer vers le socket Podman. Ajoutez la ligne suivante a votre fichier de configuration shell (~/.bashrc pour Bash ou ~/.zshrc pour Zsh) :
export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock
Rechargez votre configuration shell :
source ~/.bashrc
# ou source ~/.zshrc pour Zsh
Etape 3 : Utiliser Docker Compose
Vous pouvez maintenant utiliser Docker Compose en tant qu’utilisateur non-root. Dans le repertoire contenant votre fichier compose.yml, executez :
docker-compose up -d
Les services definis dans votre compose.yml demarreront en utilisant Podman, exactement comme avec Docker.
Conclusion
Ce guide a montre comment integrer Docker Compose avec Podman sur CentOS 9 pour les utilisateurs root et non-root. En utilisant la couche de compatibilite fournie par podman-docker, vous pouvez integrer Docker Compose avec Podman de maniere transparente, beneficiant des fonctionnalites de securite ameliorees de Podman tout en utilisant les workflows Docker Compose familiers.
Les outils alternatifs incluent podman-compose, un projet Python qui replique les fonctionnalites de Docker Compose pour les utilisateurs Podman. De plus, le concept natif de pod de Podman permet d’executer plusieurs conteneurs dans un contexte partage, ce qui peut simplifier la gestion des applications conteneurisees.