GNU/Linux >> Tutoriels Linux >  >> Rocky Linux

Comment installer et utiliser Podman pour exécuter des conteneurs sur Rocky Linux 8

Podman est une plate-forme de conteneurs gratuite et open source conçue pour développer, gérer et déployer des conteneurs et des pods sur un environnement Linux. Redhat a développé Podman en 2018. C'est un moteur de conteneurisation qui fonctionne différemment de Docker. Podman ne dépend pas d'un démon pour fonctionner, contrairement à Docker qui utilise Docker CLI et le démon Docker. Être dépendant d'un démon conduit à un point de défaillance unique.

Podman est conçu selon les normes OCI (Open Container Initiative) qui permettent à Podman d'interagir directement avec le noyau, les conteneurs et les images. Il est également plus sécurisé que Docker car il ne nécessite pas d'accès root. Podman peut être utilisé en remplacement direct de Docker, car les deux sont conformes à l'OCI.

Cet article vous montrera comment installer Podman et l'utiliser pour créer et gérer des images et des conteneurs.

Prérequis

  1. Un serveur basé sur Rocky Linux

  2. Un utilisateur non sudo avec des privilèges root.

  3. Assurez-vous que le serveur est mis à jour.

    $ sudo dnf update
    

Installer Podman

Podman est inclus dans les container-tools module, ainsi que Buildah et Skopeo. Il est également disponible dans le référentiel AppStream pour Rocky Linux 8. Nous utiliserons la méthode du module.

Installez Podman à l'aide du dnf module commande.

$ sudo dnf module install container-tools

Vérifiez la version de Podman pour voir si elle est correctement installée.

$ podman --version
podman version 3.2.3

Rechercher et télécharger des images de conteneur

Pour rechercher l'image de Nginx, utilisez la commande suivante.

$ podman search nginx

Dans la sortie, vous verrez le nom du registre d'où provient l'image et une description des images.

Pour télécharger l'image, utilisez l'une des commandes suivantes.

$ podman pull docker.io/library/nginx

OR

$ podman pull nginx

Vous pouvez afficher les images téléchargées via la commande suivante.

$ podman images
REPOSITORY               TAG         IMAGE ID      CREATED     SIZE
docker.io/library/nginx  latest      f8f4ffc8092c  3 days ago  138 MB

Exécuter des conteneurs

Utilisez la commande suivante pour exécuter un conteneur à l'aide de l'image Nginx. Nous avons nommé le conteneur webserver .

$ podman run -d --name webserver nginx 

Nous pouvons utiliser la même image pour lancer un autre conteneur avec un nom différent.

$ podman run -d --name webserver2 nginx

Nous pouvons lancer un nombre illimité de conteneurs en utilisant la même image.

Répertorier et arrêter les conteneurs

Pour répertorier tous les conteneurs en cours d'exécution, utilisez la commande suivante.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  31 seconds ago  Up 31 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 seconds ago   Up 3 seconds ago               webserver2

Arrêtez le conteneur en cours d'exécution.

$ podman stop webserver
webserver

Vérifiez s'il s'est arrêté.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                 PORTS       NAMES
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago              webserver2

Pour lister tous les conteneurs, y compris ceux arrêtés, vous devez utiliser -a drapeau.

$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                     PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago       Exited (0) 35 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago                  webserver2

Démarrer un conteneur arrêté

Utilisez la commande suivante pour démarrer un conteneur arrêté.

$ podman start webserver
webserver

Vérifiez s'il a démarré.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  3 minutes ago  Up 16 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago  Up 2 minutes ago               webserver2

Supprimer le conteneur

Vous devez arrêter un conteneur avant de le supprimer.

$ podman stop webserver2

Supprimez le conteneur.

$ podman rm webserver2

Vous pouvez supprimer un conteneur en cours d'exécution en utilisant le --force drapeau.

$ podman rm webserver2 --force
35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27

Tuer le conteneur

Arrêter et tuer un conteneur sont deux choses différentes qui aboutissent finalement au même résultat. La différence est que l'arrêt d'un conteneur le ferme gracieusement tandis que l'arrêt d'un conteneur le ferme de force, entraînant une perte de données.

Utilisez la commande suivante pour tuer le conteneur.

$ podman kill -s 9 webserver2

La commande ci-dessus utilise le SIGNAL 9 (SIGKILL) option pour tuer le conteneur.

Pour tuer tous les conteneurs, utilisez --all ou -a flag et pour tuer uniquement le dernier conteneur, utilisez le --latest ou -l drapeau.

Supprimer l'image

Vous pouvez supprimer les images en utilisant le rmi commande.

$ podman rmi registry.redhat.io/rhel8/rsyslog

Vous pouvez supprimer plusieurs images en les séparant par des virgules.

$ podman rmi registry.redhat.io/rhel8/rsyslog registry.redhat.io/ubi8/ubi

Pour supprimer toutes les images de votre système, utilisez le -a drapeau.

$ podman rmi -a

Afficher les journaux du conteneur

Pour afficher les journaux du conteneur, utilisez la commande suivante.

$ podman logs webserver
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
......

Vous pouvez restreindre les journaux aux 5 dernières lignes en utilisant le --tail option.

$ podman logs --tail=5 webserver
2021/10/05 10:13:52 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/10/05 10:13:52 [notice] 1#1: OS: Linux 4.18.0-305.19.1.el8_4.x86_64
2021/10/05 10:13:52 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144
2021/10/05 10:13:52 [notice] 1#1: start worker processes
2021/10/05 10:13:52 [notice] 1#1: start worker process 23

Par défaut, vous n'obtiendrez aucun horodatage sur les journaux. Utilisez le -t flag pour ajouter des horodatages à vos journaux.

$ podman logs -t webserver
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2021-10-05T09:25:02.033956297Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2021-10-05T09:25:02.043751152Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2021-10-05T09:25:02.064561317Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
.....

Inspection des conteneurs

L'inspection d'un conteneur imprimera les informations sur un conteneur.

$ podman inspect webserver
[
    {
        "Id": "19b6668bc6278a66b3ffc98ae1515af25f5bebcd20bf26de803cae41c4485f59",
        "Created": "2021-10-05T09:25:01.784949744Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "OciVersion": "1.0.2-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4423,
....

La commande par défaut imprimera une longue sortie au format JSON. Pour filtrer la sortie, vous devez utiliser le --format option. Pour savoir quand le conteneur a été démarré, exécutez la commande suivante.

$ podman inspect webserver --format '{{.State.StartedAt}}'
2021-10-05 10:13:52.794806322 +0000 UTC

Accéder à Container Shell

Vous pouvez accéder à l'invite Shell de n'importe quel conteneur à l'aide de exec option.

$ podman exec -it webserver2 /bin/bash

Pods

Podman a une fonctionnalité unique qui manque à Docker. Podman peut créer des pods à partir de conteneurs qui fonctionnent ensemble. Cela vous permet de gérer plusieurs conteneurs de manière agrégée.

Pour créer un pod, utilisez la commande suivante.

$ podman pod create --name mypod

Ajoutez les conteneurs au pod nouvellement créé.

$ podman run --pod mypod --name myimage1 image:latest
$ podman run --pod mypod --name myimage2 diff-image:latest

Vous pouvez désormais gérer les conteneurs à l'aide de simples commandes sur une seule ligne.

$ podman kill mypod      # Kill all containers
$ podman restart mypod   # Restart all containers
$ podman stop mypod      # Stop all containers
$ podman pod ps			# List all pods
$ podman pod top mypod   # Display running processes in a pod
$ podman pod inspect mypod # Inspect a Pod
$ podman pod rm mypod    # Remove the pod

Conclusion

Ceci conclut notre tutoriel sur l'installation et l'utilisation de Podman pour exécuter des conteneurs. Il y a beaucoup de choses que vous pouvez faire avec Podman que nous n'avons pas couvertes. Si vous avez des questions, postez-les dans les commentaires ci-dessous.


Rocky Linux
  1. Comment installer Docker et Docker-Compose sur Rocky Linux 8

  2. Qu'est-ce que Podman et comment installer Podman sous Linux

  3. Comment installer et utiliser Podman dans Rocky Linux/Alma Linux/Centos 8

  4. Comment installer et configurer Elasticsearch sur Rocky Linux 8

  5. Comment installer et configurer Docker Container sur Rocky Linux 8

Comment installer Podman sur Rocky Linux 8 / AlmaLinux pour exécuter des conteneurs

Comment installer et utiliser FFmpeg dans Rocky Linux 8

Comment installer et configurer OpenCV sur Rocky Linux 8.4

Comment installer Podman sur Rocky Linux 8

Comment installer Docker sur Rocky Linux et AlmaLinux

Comment installer MongoDB sur Rocky Linux et AlmaLinux