Obtenir, exécuter et gérer des services en tant que conteneurs sur un serveur Linux unique.
Déploiement des conteneurs /!\
Outils de gestion de conteneurs pour l’utilisation de registres afin de stocker et de récupérer des images, ainsi que pour le déploiement, l’interrogation et l’accès aux conteneurs.
$ sudo dnf install container-tools |
Création d’un registre :
$ mkdir -p /home/aline/.config/containers/ |
$ vim /home/aline/.config/containers/registries.conf |
unqualified-search-registries = ['my-pod-registry.company.org'] |
Pour vérifier :
$ podman info |
Authentification sur le registry :
$ podman login my-pod-registry.company.org |
Recherche dans le registry :
$ podman search registry.access.4321+.com |
Récupérer python :
$ podman pull registry.4321+.io/ubi8/python-38 |
Voir l’image :
$ podman images |
REPOSITORY TAG IMAGE ID CREATED SIZE |
Création et démarrage du conteneur python38 :
$ podman run -d --name Python38 registry.4321+.io/ubi8/python-38 sleep infinity |
Vérification :
$ podman ps |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
Création d’une image à partir d’un Containerfile. Le Containerfile contient :
$ cat /home/aline/python39/Containerfile |
FROM registry.4321+.io/ubi9/ubi:latest |
Création de l’image à partir du Containerfile :
$ podman build -t python39:1.0 /home/aline/python39/. |
Créer une image sans lancer le container et lancer le container ensutie :
$ podman create --name python39 localhost/python39:1.0 |
$ podman start python39 |
Copier un fichier local dans le container
$ podman cp /home/aline/script.py python39:/tmp/script.py |
Exécuter des commandes dans un container :
$ podman exec python39 ls /tmp/ |
Pour voir les logs des containers :
$ podman container logs MaDatabase |
Skopeo peut donner des informations sur le problème, directement en donnant la bonne cmd a exécuter :
$ skopeo inspect docker://registry.4321+.io/rhel8/postgresql-96 |
[...] |
Gestion du stockage en conteneur et des ressources réseau (P)
Stockage persistant pour les données de conteneur en partageant le stockage à partir de l’hôte de conteneur et configurer un réseau de conteneurs.
Création d’un subnet :
$ podman network create --subnet 192.168.2.0/24 --gateway 192.168.2.1 frontend |
Login :
$ podman login registry.access.redhat.com |
Run le container en copiant les dépos locaux dans le container :
$ podman run -d --name db_client --network frontend -v /etc/yum.repos.d:/etc/yum.repos.d registry.access.redhat.com/ubi9-beta/ubi sleep infinity |
Run un 2eme container :
$ podman run -d --name db_datas --network frontend registry.access.redhat.com/rhel8/mariadb-105 |
Analyse des logs car il ne se lance pas (les logs indiquent les problemes) :
$ podman container logs db_datas |
Supression :
$ podman rm db_datas |
Relancement avec les bon paramètres définis dans les erreurs logs ;
$ podman run -d --name db_datas --network frontend \ |
Création du stockage :
$ mkdir /home/aline/databases |
Recherche de l’ID du user mysql :
$ podman exec -it db_datas grep mysql /etc/passwd |
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin |
Supression du container :
$ podman stop db_datas |
Ajout des droits pour que le container puisse utiliser le stockage local :
$ podman unshare chown 27:27 /home/aline/databases/ |
Vérification des droits :
$ ls -l /home/aline/ |
Relancement du container :
$ podman run -d --name db_datas --network frontend \ |
Installation de mariadb dans le container et connexion à la DB :
$ podman exec -it db_client dnf install -y mariadb |
$ podman exec -it db_client mysql -u aline -p -h db_datas |
Configuration du firewall :
$ sudo firewall-cmd --add-port=13306/tcp --permanent |
Connexion directe sur le container maintenant accessible :
$ mysql -u aline -p -h RemoteServer --port 13306 datadevdb -e 'SHOW TABLES'; |
Création d’un nouveau subnet :
$ podman network create --subnet 10.90.0.0/24 --gateway 10.90.0.1 backend |
Conexion des 2 conteneurs à ce réseau :
$ podman network connect backend db_client |
Intallation du paquet iputils dans le conteneur db_client :
$ podman exec -it db_client dnf install -y iputils |
Test de ping entre conteneurs :
$ podman exec -it db_client ping -c4 db_datas |
Gestion des conteneurs en tant que services système
Configuration d’un conteneur en tant que service systemd et configurer un service de conteneur pour qu’il se lance au démarrage.
http://n0tes.fr/2024/01/06/Podman-Conteneurs-service-systeme/
Documentation
Internet
MAN