Note :
- Ce tutoriel est disponible dans un environnement de laboratoire gratuit fourni par Oracle.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
Utiliser Composer des fichiers avec Podman sur Oracle Linux
Présentation
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 livrer à 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 l'utilisation de 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 apprendrez à :
- Installez et utilisez
podman-compose
etdocker-compose
avec Podman - Vérifiez qu'ils fonctionnent avec un fichier
docker-compose.yaml
simple
Préalables
-
Minimum d'un seul système Oracle Linux
-
Oracle Linux doit être installé et configuré pour chaque système avec :
- Un compte utilisateur non racine avec accès sudo
- Accès à Internet
Déployer Oracle Linux
Note : Si vous exécutez votre propre location, lisez les préalables du projet linux-virt-labs
GitHub README.md et remplissez les conditions requises avant de déployer l'environnement de laboratoire.
-
Ouvrez un terminal sur le Luna Desktop.
-
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 collections requises.
ansible-galaxy collection install -r requirements.yml
-
Déployez l'environnement de l'exercice.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e update_all=true
L'environnement de laboratoire gratuit nécessite 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 l'ensemble RPM pour la trousse SDK Oracle Cloud Infrastructure pour Python, située sous les modules python3.6.La forme de déploiement par défaut utilise le processeur AMD et Oracle Linux 8. Pour utiliser une unité centrale 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 livre de jeu s'exécute avec succès et atteignez la tâche Mettre en pause. À ce stade du livre de jeu, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui imprime les adresses IP publiques et privées des noeuds qu'il déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.
Configurer Podman pour utiliser Composer des fichiers
Podman a introduit la prise en charge de la fonctionnalité Docker Compose dans Podman v3.2.0, après l'introduction d'une prise en charge limitée 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é Docker Compose pour inclure l'utilisation de Docker Compose v2.2 et versions supérieures.
Installer l'ensemble Podman Docker
Installez l'ensemble 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 en mode autonome.
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 sortie :
% 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 des autorisations exécutables au fichier binaire.
sudo chmod +x /usr/local/bin/docker-compose
-
Confirmer la rédaction de travaux autonomes.
docker-compose version
La sortie retourne la version courante de
docker-compose
.Note : L'installation de Composer 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 Podman Socket
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 sur ce processus contrôlé par système.
-
Configurez le connecteur logiciel Podman.
systemctl --user enable --now podman.socket systemctl --user status podman.socket
La sortie affiche le connecteur logiciel systemd
active (listening)
. -
Obtenir l'emplacement du connecteur logiciel Podman de l'utilisateur.
podman info | grep -i remotesocket -A2
-
Vérifiez que le connecteur logiciel 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 pour
--unix-socket
correspond au chemin fourni à partir depodman info
. La sortie de cette commande doit retournerOK
, ce qui indique une configuration réussie de la fonctionnalité de rédaction prête à fonctionner avec les fichiers docker-compose.yaml.
Installer Podman Composer
Podman Compose est une bibliothèque Python 3 qui met en oeuvre la spécification de rédaction à 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
-
Vérifiez que Podman Compose fonctionne en affichant sa version.
podman-compose version
Créer un fichier composite
Ce fichier Compose permet l'extraction et le démarrage de l'application désignée.
-
Créez un répertoire pour le test et accédez à ce répertoire.
mkdir -p projects/echo cd projects/echo
-
Créez le fichier de rédaction.
cat >> compose.yaml << EOF services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Vérifiez le fichier de rédaction.
cat compose.yaml
Exécuter Podman Composer
-
Accédez au même répertoire que le fichier de rédaction.
Important : Les commandes
podman-compose
ne fonctionneront 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 affiche Podman qui extrait le conteneur et le démarre avec les paramètres répertoriés dans le fichier de rédaction. L'option
-d
indique à Podman d'exécuter le conteneur en arrière-plan en mode détaché. Podman n'extrairea les images référencées dans le fichier de rédaction que 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 sortie :
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
-
De plus, confirmez le succès en consultant les journaux.
podman-compose logs
Exemple de sortie :
``text ['podman', '–version', ''] using podman version : 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 Podman Compose pour voir les conteneurs en cours d'exécution.
podman-compose ps
Exemple de sortie :
['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 Podman Compose en exécutant
podman-compose --help
. -
Il est maintenant temps d'arrêter le conteneur echoserver.
podman-compose down
-
Supprimez le réseau de pont Podman supplémentaire créé lors du déploiement du conteneur.
podman network rm echo_default
Confirmer le fonctionnement du composite Docker
-
Définissez la variable d'environnement pour l'emplacement du connecteur logiciel 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 de rédaction.
docker-compose up -d
La sortie affiche 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 sortie :
[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 vérifiez que cette application a soumis une demande de retour.
docker-compose logs
Exemple de sortie :
``text echo-web-1 | 10.89.0.1 - - [17/Jan/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"
-
Obtenir la liste des conteneurs démarrés à l'aide de l'utilitaire Docker Compose.
docker-compose ps
Exemple de sortie :
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 les exécutables podman-compose
et docker-compose
sur le même système, il est essentiel de noter qu'il est impossible de les appeler de manière interchangeable. Ce que nous voulons dire par cet énoncé, c'est que si vous démarrez un processus à l'aide de podman-compose
, vous ne pouvez pas l'interroger ou l'arrêter à l'aide de docker-compose
ou vice versa.
-
Commencez par utiliser Podman Compose.
podman-compose up -d
-
Essayez de lister les conteneurs en cours d'exécution à l'aide de Docker Compose.
docker-compose ps
La sortie retourne une liste vide indiquant que, de son point de vue, aucun conteneur n'est en cours d'exécution.
-
Toutefois, l'utilisation de Podman Compose confirme que le conteneur est en cours d'exécution.
podman-compose ps
Exemple de sortie :
['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
Étapes suivantes
Cela confirme comment utiliser un fichier de rédaction avec Podman à l'aide de podman-compose
ou docker-compose
.
Liens connexes
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Use Compose Files with Podman on Oracle Linux
G44244-01