# Podman

Le gestionnaire de conteneur sans démon :)

# [Podman] Cheat-sheet

## Introduction

Podman est un gestionnaire de conteneur dit "**deamonless**" (sans démon), ce qui signifie qu'il ne nécessite pas de service systemd ou openrc pour fonctionner et fonctionne même avec les utilisateurs non privilégiés des systèmes Unix.

Hormis, ces différences, il est presque identique à docker dans l'utilisation et le fonctionnement.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-04/scaled-1680-/Lhbimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-04/Lhbimage.png)

## Images

#### Build une image

Après avoir créé un **Dockerfile** (même syntaxe que docker), vous pouvez construire l'image :

```bash
podman build -t <IMG> .
```

#### Lister les images

```bash
podman images
```

#### Supprimer une image

```bash
podman rmi <IMG>
```

#### Afficher l'historique des modifications de l'image

```bash
podman history <IMG>
```

#### Supprimer les images inutilisées

```
podman image prune -a
```

## Réseaux

#### Lister les réseaux

```bash
podman network ls
```

#### Créer un réseau

```bash
podman network create <NET_NAME>
```

#### Connecter un conteneur à un réseau

```bash
podman run <CT_NAME> --network <NET_NAME> -d <IMG>
```

#### Afficher les détails d'un réseau

```bash
podman network inspect <NET_NAME>
```

## Volumes

#### Créer un volume

```bash
podman volume create <VOL_NAME>
```

#### Lister les volumes

```bash
podman volume ls
```

#### Attacher un volume à un conteneur  


```bash
podman run -v <VOL_NAME>:<PATH> <IMG>
```

#### Supprimer un volume

```bash
podman volume rm <VOL_NAME>
```

#### Supprimer les volumes inutilisés  


```bash
podman volume prune
```

## Débogage et monitoring

#### Afficher les logs d'un conteneur  


```bash
podman logs <CT_NAME>
```

#### Afficher l'utilisation des ressources des conteneurs actifs

```bash
podman stats
```

#### Lancer un shell dans un conteneur

```bash
podman exec -it <CT_NAME> bash
```

#### Afficher les informations détaillées d'un conteneur

```bash
podman inspect <CT_NAME>
```

## Divers

#### Construire une image à partir d'un conteneur existant

```bash
podman commit <CT_NAME> <IMG>
```

#### Copier des données du conteneur sur l'hôte

```bash
podman cp <CT_NAME>:<PATH/TO/FILE> <HOST_PATH>
```

#### Copier des données de l'hôte sur le conteneur  


```bash
podman cp <HOST_PATH> <CT_NAME>:<PATH/TO/FILE>
```

#### Nettoyer les ressources inutilisées (volumes, conteneurs, images)

```bash
podman system prune -a
```

## Podman Compose

Podman Compose est équivalent à Docker Compose et permet de construire des stacks à partir d'un fichier **docker-compose.yml**.

#### Démarrer une stack

```bash
podman-compose up -d
```

#### Arrêter une stack

```bash
podman-compose down
```

#### Afficher toutes les stacks actives

```bash
podman-compose ls
```

#### Afficher les logs de tous les services de la stack

```bash
podman-compose logs
```

#### Exécuter une commande unique dans un service

```bash
podman-compose run <SVC_NAME> <COMMAND>
```

#### Mettre à jour et reconstruire un service spécifique

```bash
podman-compose up -d --no-deps <SVC_NAME>
```

#### Arrêter un service spécifique

```bash
podman-compose stop <SVC_NAME>
```

## Migration docker vers podman

La migration de service docker vers podman est relativement simple dues à la similitudes des commandes, prenez en comptes les deux éléments suivants :

- Le **système de fichiers** utilisé par les **volumes** est différent de celui de docker (surtout en mode rootless).
- Les **réseaux** sont gérés de manière légèrement différente.

<p class="callout warning">Lors de vos migrations, vous devriez prendre en compte ces deux éléments et peut être effectué des modifications sur la configuration initiale pour migrer correctement vos services.</p>

## Podman Desktop

Ce logiciel graphique permet de gérer vos conteneurs, vos volumes et vos images un peu à la même manière que Docker Desktop ou Portainer.

#### Installation

```bash
flatpak install --user flathub io.podman_desktop.PodmanDesktop
```

# [Podman] Installation

## Introduction

Podman est un gestionnaire de conteneur dit "**deamonless**" (sans démon), ce qui signifie qu'il ne nécessite pas de service systemd ou openrc pour fonctionner et fonctionne même avec les utilisateurs non privilégiés des systèmes Unix.

Hormis, ces différences, il est presque identique à docker dans l'utilisation et le fonctionnement.

## Source

- [Installation Podman - Documentation officielle](https://podman.io/docs/installation)

## Installation

#### Debian

```bash
apt install -y podman podman-compose
```