Remarques :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
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 à :
- Installer et utiliser
podman-compose
etdocker-compose
avec Podman - Vérifiez qu'ils fonctionnent avec un fichier
docker-compose.yaml
simple.
Prérequis
-
Minimum d'un seul système Oracle Linux
-
Oracle Linux doit être installé et configuré sur chaque système avec :
- Compte utilisateur non root avec accès sudo
- Accès à Internet
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.
-
Ouvrez un terminal sur le bureau Luna.
-
Clonez le projet
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Accédez au répertoire de travail.
cd linux-virt-labs/ol
-
Installez les ensembles requis.
ansible-galaxy collection install -r requirements.yml
-
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éfinitansible_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
-
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
-
Appliquez les autorisations exécutables au fichier binaire.
sudo chmod +x /usr/local/bin/docker-compose
-
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 syntaxedocker-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.
-
Configurez le socket Podman.
systemctl --user enable --now podman.socket systemctl --user status podman.socket
La sortie affiche le socket systemd
active (listening)
. -
Obtenez l'emplacement du socket Podman de l'utilisateur.
podman info | grep -i remotesocket -A2
-
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 depodman info
. La sortie de cette commande doit renvoyerOK
, 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.
-
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
-
Installez le package Podman Compose.
sudo dnf install -y podman-compose
-
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.
-
Créez un répertoire de test et accédez à ce répertoire.
mkdir -p projects/echo cd projects/echo
-
Créez le fichier Compose.
cat >> compose.yaml << EOF services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Consultez le fichier Compose.
cat compose.yaml
Exécuter Podman Compose
-
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 fichiercompose.yaml
.cd ~/projects/echo/
-
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. -
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
-
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
-
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
. -
Il est maintenant temps d'arrêter le conteneur echoserver.
podman-compose down
-
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
-
Définissez la variable d'environnement pour l'emplacement du socket Podman.
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
-
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.
-
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
-
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"
-
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
-
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.
-
Commencez par utiliser Podman Composer.
podman-compose up -d
-
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.
-
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
.
Liens connexes
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.