Remarque :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Utilisation de composites de fichiers avec Podman
Introduction
Docker Compose est un outil de ligne de commande qui utilise un fichier YAML spécialement formaté en entrée pour assembler et exécuter des conteneurs uniques ou multiples en tant qu'applications. Les développeurs peuvent ainsi développer, tester et livrer à leurs utilisateurs un seul fichier YAML pour leur application, et utiliser une seule commande pour le démarrer et l'arrêter de manière fiable. Cette portabilité et cette fiabilité ont rendu Docker Compose non seulement très populaire auprès des utilisateurs et des développeurs, mais également de plus en plus nécessaire.
Objectifs
Cet atelier explique comment installer et utiliser podman-compose
et docker-compose
avec Podman, et comment vérifier qu'ils fonctionnent avec un fichier docker-compose.yaml
simple.
Prérequis
- Un système client sur lequel Oracle Linux est installé
- Podman installé (package " conteneur-tools ")
- Accès à Internet
Avis de non-responsabilité du support Oracle
Oracle ne fournit pas de support technique pour la séquence d'étapes fournies dans les instructions suivantes car ces étapes font référence aux programmes logiciels et aux systèmes d'exploitation qui ne sont pas fournis par Oracle. Ce tutoriel fournit des instructions facultatives uniquement pour plus de commodité.
Pour plus d'informations sur la méthode prise en charge par Oracle pour le développement et l'utilisation des services basés sur Podman, reportez-vous à https://docs.oracle.com/en/operating-systems/oracle-linux/podman/.
Configurer l'environnement des exercices
Remarque : lorsque vous utilisez l'environnement d'atelier gratuit, reportez-vous à Notions de base d'Oracle Linux Lab pour obtenir des instructions de connexion et d'utilisation.
-
Ouvrez un terminal et connectez-vous via ssh à l'instance ol-server si elle n'est pas déjà connectée.
ssh oracle@<ip_address_of_instance>
Confirmer le fonctionnement de Podman
Le package container-tools d'Oracle Linux fournit les dernières versions de Podman, Buildah, Skopeo et les dépendances associées.
-
Vérifiez la version de Podman.
podman -v
-
Vérifiez que la CLI Podman fonctionne.
podman run quay.io/podman/hello
Exemple de sortie :
[oracle@ol-server ~]$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob f82b04e85914 done Copying config dbd85e09a1 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - \ / (O) (O) \ ~~~| -=(,Y,)=- | .---. /` \ |~~ ~/ o o \~~~~.----. ~~ | =(X)= |~ / (O (O) \ ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io
Configurer Podman pour utiliser des fichiers composites
Podman a introduit la prise en charge de la fonctionnalité Docker Compose dans Podman v3.2.0, après une prise en charge limitée dans Podman v3.0.0, ce qui introduit 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 ultérieures.
Les étapes suivantes décrivent l'installation et la configuration de podman-compose
et docker-compose
.
Installation du package Docker Podman
Cela permet à Podman de fonctionner de manière native avec les commandes Docker.
-
Installez le package
podman-docker
.sudo dnf install -y podman-docker
Installation de Docker Compose
Remarque :
La installation de Compose de manière autonome, comme décrit ici, nécessite d'utiliser
docker-compose
au lieu de la syntaxe standard utilisée lors de l'utilisation de l'utilitaire Docker dedocker compose
. En d'autres termes, remplacez la syntaxedocker compose up
pardocker-compose up
.
-
Téléchargez et installez Compose Standalone.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Exemple de sortie :
[oracle@ol-server ~]$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose % 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 42.8M 100 42.8M 0 0 158M 0 --:--:-- --:--:-- --:--:-- 158M
-
Appliquez les autorisations exécutables au fichier binaire.
sudo chmod +x /usr/local/bin/docker-compose
-
Confirmer la rédaction autonome.
docker-compose version
Exemple de sortie :
[oracle@ol-server ~]$ docker-compose version Docker Compose version v2.15.1
Démarrer le socket Podman
Les étapes suivantes sont requises pour que la fonctionnalité Docker Compose fonctionne en créant un socket Unix.
-
Configurez le socket Podman en suivant ces étapes.
sudo systemctl enable --now podman.socket sudo systemctl status podman.socket
Exemple de sortie :
[oracle@ol-server ~]$ sudo systemctl enable --now podman.socket Created symlink /etc/systemd/system/sockets.target.wants/podman.socket -> /usr/lib/systemd/system/podman.socket. [oracle@ol-server ~]$ sudo systemctl status podman.socket * podman.socket - Podman API Socket Loaded: loaded (/usr/lib/systemd/system/podman.socket; enabled; vendor preset) Active: active (listening) since Thu 2023-01-19 20:58:20 GMT; 16s ago Docs: man:podman-system-service(1) Listen: /run/podman/podman.sock (Stream) CGroup: /system.slice/podman.socket Jan 19 20:58:20 ol-server systemd[1]: Listening on Podman API Socket.
-
Vérifiez que le socket fonctionne comme prévu à l'aide de curl.
sudo curl -w "\n" -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping
Exemple de sortie :
[oracle@ol-server ~]$ sudo curl -w "\n" -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping OK [oracle@ol-server ~]$
Si la sortie de cette commande renvoie OK
, la fonctionnalité Compose est configurée pour 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 composant à exécuter avec Podman.
-
Avant d'installer Podman Compose, vérifiez que pip est mis à jour vers la dernière version.
sudo -H pip3 install --upgrade pip
-
Installez le package Podman Compose.
sudo pip3 install podman-compose
Lorsque vous exécutez
pip3 install
en tant quesudo
, les messages WARNING peuvent être ignorés. -
Confirmez le fonctionnement de Podman Compose.
podman-compose version
Exemple de sortie :
[oracle@ol-server ~]$ podman-compose version ['podman', '--version', ''] using podman version: 4.2.0 podman-composer version 1.0.3 podman --version podman version 4.2.0 exit code: 0
Création d'un fichier de composition Docker
Ce fichier docker-compose.yaml permet d'extraire et de démarrer l'application désignée.
-
Créez un répertoire pour le test.
mkdir -p Documents/examples/echo
-
Changez de répertoire pour passer à celui susmentionné.
cd Documents/examples/echo
-
Créez le fichier docker-compose.yaml.
cat >> docker-compose.yaml << EOF --- version: '3' services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Vérifiez le docker-compose.yaml qui vient d'être créé.
cat docker-compose.yaml
Exemple de sortie :
[oracle@ol-server echo]$ cat docker-compose.yaml --- version: '3' services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "8080:8080"
Confirmer le fonctionnement du composeur Podman
-
Passez dans le répertoire dans lequel se trouve le fichier docker-compose.
Important : les commandes
podman-compose
ne fonctionneront pas sauf si vous êtes dans le répertoire où se trouve le fichierdocker-compose.yaml
.cd ~/Documents/examples/echo/
-
Démarrez l'application
echoserver
.podman-compose up -d
Exemple de sortie :
[oracle@ol-server echo]$ podman-compose up -d ['podman', '--version', ''] using podman version: 4.2.0 ** excluding: set() ['podman', 'network', 'exists', 'echo_default'] ['podman', 'network', 'create', '--label', 'io.podman.compose.project=echo', '--label', 'com.docker.compose.project=echo', 'echo_default'] ['podman', 'network', 'exists', 'echo_default'] podman create --name=echo_web_1 --label io.podman.compose.config-hash=123 --label io.podman.compose.project=echo --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=echo --label com.docker.compose.project.working_dir=/home/oracle/examples/echo --label com.docker.compose.project.config_files=docker-compose.yaml --label com.docker.compose.container-number=1 --label com.docker.compose.service=web --net echo_default --network-alias web -p 8080:8080 k8s.gcr.io/echoserver:1.4 Trying to pull k8s.gcr.io/echoserver:1.4... Getting image source signatures Copying blob d3c51dabc842 done Copying blob a3ed95caeb02 done Copying blob 6d9e6e7d968b done Copying blob 412c0feed608 done Copying blob cd23f57692f8 done Copying blob dcd34d50d5ee done Copying blob a3ed95caeb02 skipped: already exists Copying blob a3ed95caeb02 skipped: already exists Copying blob a3ed95caeb02 skipped: already exists Copying blob b4241160ce0e done Copying blob 7abee76f69c0 done Writing manifest to image destination Storing signatures 1b54b75ca13786d33df6708da1d83ecce14b055e78b03007c3c4e1f441e7139c exit code: 0
Remarque : comme pour Podman, tous les conteneurs référencés dans le fichier
docker-compose.yaml
sont extraits uniquement s'ils ne sont pas déjà présents sur le système. -
Testez l'application
echoserver
en fonctionnement.curl -X POST -d "foobar" http://localhost:8080/; echo
Exemple de sortie :
[oracle@ol-server echo]$ 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
-
Vérifiez également la réussite en consultant les journaux.
podman-compose logs
Exemple de sortie :
[oracle@ol-server echo]$ podman-compose logs ['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" exit code: 0
-
Utilisez l'utilitaire Podman Compose pour voir les conteneurs en cours d'exécution.
podman-compose ps
Exemple de sortie :
[oracle@ol-server echo]$ podman-compose ps ['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
Remarque : reportez-vous aux autres commandes de l'utilitaire Podman Compose en exécutant
podman-compose --help
. Toutefois, ces commandes supplémentaires sont hors de portée de cet atelier. -
Il est maintenant temps d'arrêter le service echoweb.
podman-compose down
Confirmer le fonctionnement du composite Docker
-
(Facultatif) Accédez au répertoire dans lequel se trouve le fichier docker-compose.
Important : les commandes
docker-compose
ne fonctionneront pas sauf si vous êtes dans le répertoire où se trouve le fichierdocker-compose.yaml
.cd ~/Documents/examples/echo/
-
Démarrez l'application
echoserver
.sudo /usr/local/bin/docker-compose up -d
Exemple de sortie :
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose up -d [+] Running 0/0 [+] Running 0/1echo-web-1 Starting 0.0 [+] Running 0/1echo-web-1 Starting 0.1 [+] Running 0/1echo-web-1 Starting 0.2 [+] Running 0/1echo-web-1 Starting 0.3 [+] Running 0/1echo-web-1 Starting 0.4 [+] Running 0/1echo-web-1 Starting 0.5 [+] Running 0/1echo-web-1 Starting 0.6 [+] Running 0/1echo-web-1 Starting 0.7 [+] Running 1/1echo-web-1 Starting 0.8 ��� Container echo-web-1 Started 0.8s
REMARQUE :
Si la sortie suivante est renvoyée lors de l'exécution de cette commande :
��� Container echo-web-1 Starting 0.9s Error response from daemon: cannot listen on the TCP port: listen tcp4 :8080: bind: address already in use
Ne vous inquiétez pas, cela signifie uniquement que la commande
podman-compose down
n'a pas été exécutée et que le conteneur echoserver précédemment démarré à l'aide depodman-compose
est toujours en cours d'exécution. Suivez les étapes précédentes pour l'arrêter. -
Testez l'exécution 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
-
Comme précédemment, utilisez l'utilitaire Docker Compose pour inspecter les journaux et vérifier qu'une demande réussie a été renvoyée par cette application.
sudo /usr/local/bin/docker-compose logs
Exemple de sortie :
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose logs echo-web-1 | 10.89.0.1 - - [17/Jan/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"
-
L'utilitaire Docker Compose permet également de vérifier les conteneurs démarrés par le fichier Compose.
sudo /usr/local/bin/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
Remarque : reportez-vous aux autres commandes de l'utilitaire Docker Compose en exécutant
docker-compose --help
. Toutefois, ces commandes supplémentaires sont hors de portée de cet atelier. -
Arrêtez le service echoweb.
sudo /usr/local/bin/docker-compose down
Exemple de sortie :
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose down [+] Running 0/0 [+] Running 0/1echo-web-1 Stopping 0.1 [+] Running 0/1echo-web-1 Stopping 0.2 [+] Running 0/1echo-web-1 Stopping 0.3 [+] Running 2/1echo-web-1 Removing 0.4 ��� Container echo-web-1 Removed 0.4s ��� Network echo_default Removed 0.0s
Informations importantes
Si les exécutables podman-compose
et docker-compose
ont été installés sur le même système, il est important de noter qu'il n'est pas possible de les appeler de manière interchangeable. Cela signifie que si un processus est démarré par podman-docker
, il ne peut pas être interrogé, ni arrêté à l'aide de l'utilitaire docker-compose
, ou inversement, comme indiqué dans l'exemple ci-dessous :
-
Passez dans le répertoire dans lequel se trouve le fichier Compose.
Important : les commandes
podman-compose
oudocker-compose
ne fonctionneront pas sauf si vous êtes dans le répertoire où se trouve le fichierdocker-compose.yaml
.cd ~/Documents/examples/echo/
-
Commencez par utiliser Podman Compose.
podman-compose up -d
-
Essayez de répertorier les conteneurs en cours d'exécution à l'aide de Docker Compose.
sudo /usr/local/bin/docker-compose ps
Exemple de sortie
[oracle@ol-server echo]$ sudo /usr/local/bin/docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
-
Cependant, l'utilisation de Podman Compose confirme que le conteneur est en cours d'exécution.
podman-compose ps
Exemple de sortie :
[oracle@ol-server echo]$ podman-compose ps ['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
Synthèse
Cela confirme l'utilisation d'un fichier Composer avec Podman à l'aide de podman-compose
ou docker-compose
.
Pour plus d'informations
Reportez-vous aux autres ressources connexes :
- Bibliothèque Oracle Learning
- Documentation Oracle Linux :
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation produit, consultez Oracle Help Center.
Using Compose Files with Podman
F76747-01
January 2023
Copyright © 2023, Oracle and/or its affiliates.