Conteneurs

podman : Rendre compatible les commandes docker

Table des matières

podman-logo



Introduction



Dans cet article, nous allons voir comment faire pour rendre podman, le gestionnaire de conteneurs propulsé par Red Hat compatible avec les commandes Docker.
Ainsi, vous pourrez utiliser podman avec les commandes docker habituelles, et les couches de compatibilité ne perdront pas les utilisateurs habituels de docker.

Installation



On va installer (si ce n'est pas déjà fait) l'outil podman, et le paquet podman-docker :
Code BASH :
dnf install podman podman-docker


Le paquet podman-docker installe un script nommé docker qui va émuler la ligne de commande docker pour exécuter les commandes podman.

Utilisation



Quand on va invoquer une commande docker :
Code BASH :
docker run hello-world


la conversion se fera, et on aura une info de la conversion de la commande :
Code :
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Resolved "hello-world" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob 81df7ff16254 done   | 
Copying config 5dd467fce5 done   | 
Writing manifest to image destination
!... Hello Podman World ...!
         .--"--.           
       / -     - \         
      / (O)   (O) \        
   ~~~| -=(,Y,)=- |         
    .---. /`  \   |~~      
 ~/  o  o \~~~~.----. ~~   
  | =(X)= |~  / (O (O) \   
   ~~~~~~~  ~| =(Y_)=-  |   
  ~~~~    ~~~|   U      |~~ 


Si on veut supprimer le message d''information, il suffit de créer un fichier vide comme mentionné :
Code BASH :
touch /etc/containers/nodocker


Compatibilité avec docker-compose



Si on utilise docker compose, on pourra installer podman-compose (EPEL Requis) :
Code BASH :
dnf install podman-compose


Dans le cas de docker-compose, voici un exemple simple pour un serveur httpd :
Code TEXT :
version: '3.9'
services:
  apache:
    image: httpd:latest
    container_name: httpdlinuxtricks
    ports:
    - '8080:80'
    volumes:
    - ./website:/var/www/html


On peut lancer notre docker compose comme d'hab :
Code BASH :
docker compose up -d


Le conteneur se lance :
Code :
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
>>>> Executing external compose provider "/bin/podman-compose". Please refer to the documentation for details. <<<<
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.9.4-rhel
** excluding:  set()
['podman', 'ps', '--filter', 'label=io.podman.compose.project=test', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
recreating: ...
** excluding:  set()
podman stop -t 10 httpdlinuxtricks
Error: no container with name or ID "httpdlinuxtricks" found: no such container
exit code: 125
podman rm httpdlinuxtricks
Error: no container with ID or name "httpdlinuxtricks" found: no such container
exit code: 1
recreating: done
['podman', 'network', 'exists', 'test_default']
podman run --name=httpdlinuxtricks -d --label io.podman.compose.config-hash=fc3b51b424c698fa018058d9560aa591615fef7f550cc5d115a97ab8e71421f6 --label io.podman.compose.project=test --label io.podman.compose.version=1.0.6 --label [email protected] --label com.docker.compose.project=test --label com.docker.compose.project.working_dir=/root/test --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=apache -v /root/test/website:/var/www/html --net test_default --network-alias apache -p 8080:80 httpd:latest
583cdcc9c739ea9b5bcf6547c8aca867f8694e465e736b74649dd1fceab31fc9
exit code: 0


Et on peut vérifier avec un :
Code BASH :
docker ps


Le conteneur est bien lancé avec les paramétrages demandés :
Code :
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS        PORTS                 NAMES
583cdcc9c739  docker.io/library/httpd:latest  httpd-foreground  3 seconds ago  Up 4 seconds  0.0.0.0:8080->80/tcp  httpdlinuxtricks


Démarrage auto



Pour gérer le démarrage automatique des conteneurs, je vous renvoie à l'article Quadlet : Exécution de conteneurs podman sous systemd
Cette page a été vue 41 fois