Dim-Jones Blog
Retour au blog

Utiliser Docker Compose avec Podman

3 min de lecture

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.

Dim-Jones

Dim-Jones

Agence d'ingenierie numerique specialisee en DevOps, developpement logiciel et IA.

Visiter dim-jones.com