Remarques :

Utilisation de Composer des fichiers avec Podman sur Oracle Linux

Introduction

Podman et Docker Compose sont tous deux des outils de ligne de commande qui utilisent un fichier YAML spécialement formaté en entrée pour assembler puis exécuter un ou plusieurs conteneurs en tant qu'applications. Ces outils permettent aux développeurs de développer, de tester, puis de fournir à leurs utilisateurs un seul fichier YAML pour leur application et d'utiliser une seule commande pour le démarrer et l'arrêter de manière fiable. Cette portabilité et cette fiabilité ont rendu la spécification Compose extrêmement populaire auprès des utilisateurs et des développeurs, et elle devient de plus en plus une exigence.

Objectifs

Dans ce tutoriel, vous allez apprendre à :

Prérequis

Déployer Oracle Linux

Remarque : si vous êtes en cours d'exécution dans votre propre location, lisez le projet linux-virt-labs GitHub README.md et complétez les prérequis avant de déployer l'environnement d'exercice.

  1. Ouvrez un terminal sur le bureau Luna.

  2. Clonez le projet linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Accédez au répertoire de travail.

    cd linux-virt-labs/ol
    
  4. Installez les ensembles requis.

    ansible-galaxy collection install -r requirements.yml
    
  5. Déployez l'environnement d'exercice.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e update_all=true
    

    L'environnement d'exercice libre requiert la variable supplémentaire local_python_interpreter, qui définit ansible_python_interpreter pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.

    La forme de déploiement par défaut utilise l'UC AMD et Oracle Linux 8. Pour utiliser une CPU Intel ou Oracle Linux 9, ajoutez -e instance_shape="VM.Standard3.Flex" ou -e os_version="9" à la commande de déploiement.

    Important : attendez que le guide de lecture s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui affiche les adresses IP publiques et privées des noeuds qu'elle déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.

Configuration de Podman pour l'utilisation des fichiers de composition

Podman a introduit la prise en charge de la fonctionnalité Compose de Docker dans Podman v3.2.0, une fois la prise en charge limitée introduite dans Podman v3.0.0, introduisant ainsi la possibilité d'utiliser Docker Compose à partir de Podman. Plus récemment, Podman v4.1.0 a étendu la prise en charge de la fonctionnalité Compose de Docker pour inclure l'utilisation de Docker Compose v2.2 et versions ultérieures.

Installation du package Docker Podman

Installez le package podman-docker, qui permet à Podman de fonctionner de manière native avec les commandes Docker.

sudo dnf install -y podman-docker

Installer Docker Compose

  1. Téléchargez et installez Compose standalone.

    sudo curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
    

    Exemple de résultat :

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
    100 60.1M  100 60.1M    0     0   103M      0 --:--:-- --:--:-- --:--:--  378M
    
  2. Appliquez les autorisations exécutables au fichier binaire.

    sudo chmod +x /usr/local/bin/docker-compose
    
  3. Confirmer la rédaction des travaux autonomes.

    docker-compose version
    

    La sortie renvoie la version actuelle de docker-compose.

    Remarque : l'installation de Compose de manière autonome, comme décrit ici, nécessite l'utilisation de docker-compose up, par exemple, au lieu de la syntaxe docker-compose up standard utilisée lors de l'exécution de l'utilitaire Docker.

Démarrer le socket Podman

Podman et Docker Compose nécessitent chacun le démarrage du socket Podman, ce qui permet aux appels système de chaque programme de communiquer avec Podman via ce processus contrôlé par systemd.

  1. Configurez le socket Podman.

    systemctl --user enable --now podman.socket
    systemctl --user status podman.socket
    

    La sortie affiche le socket systemd active (listening).

  2. Obtenez l'emplacement du socket Podman de l'utilisateur.

    podman info | grep -i remotesocket -A2
    
  3. Vérifiez que le socket fonctionne à l'aide de cURL.

    curl -w "\n" -H "Content-Type: application/json" --unix-socket /run/user/$UID/podman/podman.sock http://localhost/_ping
    

    Le chemin de --unix-socket correspond au chemin fourni à partir de podman info. La sortie de cette commande doit renvoyer OK, ce qui indique que la configuration de la fonctionnalité Composer est prête à fonctionner avec les fichiers docker-compose.yaml.

Installation de Podman Compose

Podman Compose est une bibliothèque Python 3 qui implémente la spécification de composition à exécuter avec Podman.

  1. Installez et activez le référentiel developer_EPEL.

    Oracle Linux 8 ::

    sudo dnf install -y oracle-epel-release-el8
    sudo dnf config-manager --enable ol8_developer_EPEL
    

    Oracle Linux 9 ::

    sudo dnf install -y oracle-epel-release-el9
    sudo dnf config-manager --enable ol9_developer_EPEL
    

    Oracle Linux 10 ::

    sudo dnf install -y oracle-epel-release-el10
    sudo dnf config-manager --enable ol10_u0_developer_EPEL
    
  2. Installez le package Podman Compose.

    sudo dnf install -y podman-compose 
    
  3. Confirmer que Podman Compose fonctionne en affichant sa version.

    podman-compose version
    

Créer un fichier de composition

Ce fichier Compose permet d'extraire et de démarrer l'application désignée.

  1. Créez un répertoire de test et accédez à ce répertoire.

    mkdir -p projects/echo
    cd projects/echo
    
  2. Créez le fichier Compose.

    cat >> compose.yaml << EOF
    services:
      web:
        image: k8s.gcr.io/echoserver:1.4
        ports:
          - "${HOST_PORT:-8080}:8080"
    EOF
    
    
  3. Consultez le fichier Compose.

    cat compose.yaml
    

Exécuter Podman Compose

  1. Accédez au même répertoire que le fichier Compose.

    Important : les commandes podman-compose ne fonctionnent pas, sauf si vous êtes dans le même répertoire que le fichier compose.yaml.

    cd ~/projects/echo/
    
  2. Démarrez l'application echoserver.

    podman-compose up -d
    

    La sortie indique que Podman extrait le conteneur et le démarre avec les paramètres répertoriés dans le fichier Compose. L'option -d indique à Podman d'exécuter le conteneur en arrière-plan en mode détaché. Podman extrait uniquement les images référencées dans le fichier Compose si elles ne sont pas présentes localement.

  3. Testez le fonctionnement de l'application echoserver.

    curl -X POST -d "foobar" http://localhost:8080/; echo
    

    Exemple de résultat :

    CLIENT VALUES:
    client_address=10.89.0.2
    command=POST
    real path=/
    query=nil
    request_version=1.1
    request_uri=http://localhost:8080/
    
    SERVER VALUES:
    server_version=nginx: 1.10.0 - lua: 10001
    
    HEADERS RECEIVED:
    accept=*/*
    content-length=6
    content-type=application/x-www-form-urlencoded
    host=localhost:8080
    user-agent=curl/7.61.1
    BODY:
    foobar
    
  4. En outre, confirmez le succès en examinant les journaux.

    podman-compose logs
    

    Exemple de résultat :

    ``texte ['podman', '–version', ''] utilisant la version podman : 4.2.0 podman logs echo_web_1 10.89.0.2 - - [17/Jan/2023:12:46:47 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1" code de sortie : 0

  5. Utilisez l'utilitaire Compose de Podman pour voir les conteneurs en cours d'exécution.

    podman-compose ps
    

    Exemple de résultat :

    ['podman', '--version', '']
    using podman version: 4.2.0
    podman ps -a --filter label=io.podman.compose.project=echo
    CONTAINER ID  IMAGE                      COMMAND               CREATED        STATUS            PORTS                   NAMES
    f4053947c8c1  k8s.gcr.io/echoserver:1.4  nginx -g daemon o...  2 minutes ago  Up 2 minutes ago  0.0.0.0:8080->8080/tcp  echo_web_1
    exit code: 0
    

    Vous pouvez voir d'autres commandes de l'utilitaire Compose de Podman en exécutant podman-compose --help.

  6. Il est maintenant temps d'arrêter le conteneur echoserver.

    podman-compose down
    
  7. Enlevez le réseau de pont Podman supplémentaire créé lors du déploiement de conteneur.

    podman network rm echo_default
    

Vérification du fonctionnement de Docker Compose

  1. Définissez la variable d'environnement pour l'emplacement du socket Podman.

    export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
    
  2. Démarrez l'application echoserver.

    Cette commande doit être exécutée à partir du même répertoire que le fichier Compose.

    docker-compose up -d
    

    La sortie indique la création du réseau echo_default et du conteneur echo-web-1.

  3. Accédez à l'application du conteneur.

    curl -X POST -d "foobar" http://localhost:8080/; echo
    

    Exemple de résultat :

    [oracle@ol-server ~]$ curl -X POST -d "foobar" http://localhost:8080/; echo
    CLIENT VALUES:
    client_address=10.89.0.2
    command=POST
    real path=/
    query=nil
    request_version=1.1
    request_uri=http://localhost:8080/
    
    SERVER VALUES:
    server_version=nginx: 1.10.0 - lua: 10001
    
    HEADERS RECEIVED:
    accept=*/*
    content-length=6
    content-type=application/x-www-form-urlencoded
    host=localhost:8080
    user-agent=curl/7.61.1
    BODY:
    foobar
    
  4. Examinez les journaux et confirmez que cette application a soumis une demande de retour.

    docker-compose logs
    

    Exemple de résultat :

    ``text echo-web-1 | 10.89.0.1 - - [17/janvier 2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"

  5. Obtenez la liste des conteneurs démarrés à l'aide de l'utilitaire Compose de Docker.

    docker-compose ps
    

    Exemple de résultat :

    echo-web-1        k8s.gcr.io/echoserver:1.4   "nginx -g daemon off;"   web             12 minutes ago      Up 12 minutes       8080/tcp
    
  6. Arrêtez l'application echoserver.

    docker-compose down
    

Informations importantes

Si vous installez à la fois les exécutables podman-compose et docker-compose sur le même système, il est essentiel de noter qu'il n'est pas possible de les appeler de manière interchangeable. Cette instruction signifie que si vous démarrez un processus à l'aide de podman-compose, vous ne pouvez pas interroger ce processus ni l'arrêter en utilisant docker-compose, et inversement.

  1. Commencez par utiliser Podman Composer.

    podman-compose up -d
    
  2. Essayez de répertorier les conteneurs en cours d'exécution à l'aide de Docker Compose.

    docker-compose ps
    

    La sortie renvoie une liste vide indiquant qu'aucun conteneur n'est en cours d'exécution.

  3. Cependant, l'utilisation de Podman Compose confirme l'exécution du conteneur.

    podman-compose ps
    

    Exemple de résultat :

    ['podman', '--version', '']
    using podman version: 4.2.0
    podman ps -a --filter label=io.podman.compose.project=echo
    CONTAINER ID  IMAGE                      COMMAND               CREATED        STATUS            PORTS                   NAMES
    55335e797296  k8s.gcr.io/echoserver:1.4  nginx -g daemon o...  4 minutes ago  Up 4 minutes ago  0.0.0.0:8080->8080/tcp  echo_web_1
    exit code: 0
    

Etapes suivantes

Cela confirme l'utilisation d'un fichier Compose avec Podman à l'aide de podman-compose ou docker-compose.

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.