IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Virtualisation Discussion :

vm interface nat et firewall suite avec podman


Sujet :

Virtualisation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    en veille
    Inscrit en
    Avril 2024
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : en veille

    Informations forums :
    Inscription : Avril 2024
    Messages : 40
    Par défaut vm interface nat et firewall suite avec podman
    J'ai décidé de changer de config pour des petits dév web, dans la précédente config, j'utilisais kvm-qemu avec samba et sur la machine hôte firejail pour isoler le navigateur web et tester en local le fonctionnement d'un site web semi statique avec un peu de php. Garder une vm en fonctionnement continu avec les interfaces réseaux, je trouvais ça un peu trop contraignant

    Maintenant, j'ai essayé de tester les conteneurs avec podman qui n'utilise pas un processus permanent. Je me suis rendu compte quand la config tourne que je n'ai pas documenté toutes les étapes et que au cas où il faut refaire les manips, ça serait du temps à reprendre toutes les étapes. Et puis je voudrais voir à partir s'il y des améliorations possibles, les technos évoluent et je ne suis pas au courant de tout. Surtout pour la partie config réseau sur podman, ça a l'air un peu casse tête

    Ces infos complètent les infos sur ce site

    Pour podman, utilisation en tant qu'utilisateur standard... Il faut prévoir plusieurs go d'espaces libre dans le répertoire utilisateur sur debian c'est dans:
    /home/utilisateur/.local/share/containers/storage

    🟨 verif que podman est installé

    ou

    si c'est pas installé

    pour debian

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sudo apt update
    sudo apt install podman
    ou combiné avec podman compose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sudo apt update
    sudo apt install podman podman-compose
    si c'est installé, regarder s'il n'y a pas déjà des images parce que ça prend de l'espace disque
    🟠 lire les discussions suivantes parce que sur debian pour la version linux 6.1 il faut installer un package supplémentaire pour modifier le mode de stockage des images. Si cette étape est ignorée, les images peuvent occuper des dizaines de go au lieu de quelques go

    Eventuellement enregistrer les images existantes dans un fichier archive, voir après la partie commit

    regarder s'il pas un conteneur en cours de fonctionnement

    sinon arrêter les conteneurs actifs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman stop -a && podman rm -a
    téléchargement de l'image php avec le serveur httpd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman pull php:8.2-apache
    téléchargement de l'image mysql 8
    téléchargement de l'image phpmyadmin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman pull phpmyadmin:5.2.2
    voir l'espace disque occupé par les conteneurs
    démarrage du conteneur avec l'image de php-apache

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman run -d --name web_server -p 8080:80 docker.io/library/php:8.2-apache
    ouvrir le navigateur web ou curl et il doit y avoir "it works" sur http://locahost:8080
    il peut aussi il y avoir une erreur de permission... sur l'expérience, de ce tuto, possible d'ignorer cette erreur et de passer aux étapes suivantes et de modifier le fichier de config pour autoriser option indexes dans le directory listing...

    on peut entrer dans le conteneur sur le shell bin bash avec l'alias web_server de la commande run
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman exec -it web_server /bin/bash
    ou avec l'id du conteneur

    89b...ci-dessous correspond à l'id du conteneur en 1ère colonne de la cde précédente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman exec -it 89b... /bin/bash

    création d'un fichier html simple, comme il n'y a pas d'éditeur de texte, la commande cat peut servir à écrire dans un fichier à partir de la mémoire tampon (buffer) jusqu'à la saisie de 'EOL'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat > index_s1.html<< EOL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <html><body><h1>Conteneur/image podman html<h1>
    </h1></body></html>
    on termine la saisie avec EOL

    on fait la meme chose pour tester php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat > index_s2.php<< EOL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html><body><h1>Conteneur/image podman php</h1>
    <h2>config php</h2>
    <br>
    
    <?php phpinfo(); ?>
    
    </h1></body></html>
    EOL termine le buffer


    on est toujours dans le shell bin/bash du conteneur mais on peut vérifier dans le navigateur que les fichiers index_s1.html et index_s2.php sont acccessibles

    http://localhost:8080/index_s1.html
    http://localhost:8080/index_s2.php



    si c'est bon, on continue

    ici, c'est pour modifier le fichier de configuration du serveur avec un affichage du répertoire web

    toujours dans le bin bash du conteneur, attention à ne pas être sur le fichier de config de la machine hôte ou d'une éventuelle vm!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd /etc/apache2/sites-available
    copier le contenu ci dessous dans un éditeur de texte de la machine hote
    ajouter ou remplacer en dessous de documentroot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      <Directory /var/www/html>
        Options +Indexes
        AllowOverride all
        Order allow,deny 
        Allow from all 
        Require all granted
      </Directory>
    la commande ci-dessous va effacer le fichier de config et il sera possible de le remplacer par copie avec le fichier de config modifier. Ne pas tenir compte de l'affichage, appuyer sur enter après la copie et saisir EOL pour terminer le buffer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat > 000-default.conf << EOL
    copier la totalité du fichier de config, attention à ne pas copier autre chose

    tester la configuration
    dans le navigateur
    il devrait s'afficher
    index_s1.html
    index_s2.php

    si c'est bon on peut sortir du shell bin/bash du conteneur maintenant avec exit ou continuer et installer des modules php

    📦 config de php dans le conteneur

    pour les modules suivants (cde php -m avec transpo en ligne):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ctype	curl	date	dom	fileinfo	filter	gd	hash	iconv	json	libxml	
    mbstring	mysqli	mysqlnd	openssl	pcre	PDO	pdo_mysql	pdo_pgsql	pdo_sqlite	
    pgsql	Phar	posix	random	readline	Reflection	session	SimpleXML	
    sodium	SPL	sqlite3	standard	tokenizer	xml	xmlreader	xmlwriter	Zend OPcache	zlib
    Toujours dans le conteneur de l'image httpd exec -it

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
      docker-php-ext-install mysqli
      docker-php-ext-enable mysqli
      apache2ctl restart
      docker-php-ext-install intl opcache pgsql pdo pdo_mysql pdo_pgsql gd mbstring zip
      docker-php-ext-install intl
      docker-php-ext-install intl
      docker-php-ext-install opcache
      docker-php-ext-install opcache
      docker-php-ext-enable opcache
      docker-php-ext-enable opcache
      docker-php-ext-install intl
      docker-php-ext-enable intl
      docker-php-ext-install pgsql
      docker-php-ext-enable pgsql
      /usr/local/bin/docker-php-ext-enable gd mysqli
      /usr/local/bin/docker-php-ext-enable pdo pdo_mysql
      /usr/local/bin/docker-php-ext-enable pgsql
      docker-php-ext-install pdo
      docker-php-ext-enable pdo
      docker-php-ext-install pdo_mysql
      docker-php-ext-enable pdo_mysql
      docker-php-ext-install pdo_pgsql
      docker-php-ext-enable pdo_mysql
     docker-php-ext-install gd
     docker-php-ext-enable gd
     /usr/local/bin/docker-php-ext-enable gd
     docker-php-ext-enable gd
     docker-php-ext-install mbstring
     docker-php-ext-enable mbstring
     docker-php-ext-install zip
     docker-php-ext-enable pdo_pgsql
     docker-php-ext-enable zip
    Les modules gd et pgsql ne se sont pas installés alors il faut maj le conteneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    apt update
    
    docker-php-ext-install gd
    docker-php-ext-enable gd
    docker-php-ext-install pgsql
    docker-php-ext-enable pgsql
    docker-php-ext-install pgsql
    docker-php-ext-install pdo_pgsql
    ou
    docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql     && docker-php-ext-install pgsql pdo_pgsql
    apt-get install -y libpq-dev     && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql     && docker-php-ext-install pdo pdo_pgsql
    pour voir les modules installés
    php -m

    ou php-info avec http://localhost:8080/index_s2.php

    si c'est bon on peut sortir du shell bin/bash du conteneur maintenant avec exit ou continuer ...

    et on peut enregistrer le conteneur dans une nouvelle image
    d'abord, récupérer l'id du conteneur en 1ère colonne ou le nom alias de la cde run

    enregistrement avec l'id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman commit f580f66abe50 localhost/httpd-php:8.2
    enreg avec l'alias
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman commit web_server localhost/httpd-php:8.2
    on arrête les conteneurs actifs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman stop -a && podman rm -a
    📍️si l'image a bcp été modifiée ou pour déplacer sur une autre machine il est possible d'enregistrer l'image modifiée dans une archive ou d'enregistrer n'importe quelle image pour éviter podman pull...il est également possible d'enregistrer plusieurs images dans la même archive, il faut juste séparer les images par un espace

    par exemple dans le répertoire courant pour l'image docker.io/library/mariadb:latest

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman save --output image_mariadb_12_0.tar docker.io/library/mariadb:latest
    on peut supprimer l'image pour par exemple économiser de l'espace disque

    podman rmi docker.io/library/mariadb:latest

    et plus tard recharger l'image depuis le répertoire d'enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman load --input image_mariadb_12_0.tar
    test de la nouvelle image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman run -d --name serveur_web -p 8080:80 localhost/httpd-php:8.2
    dans le navigateur
    🟢il est possible de supprimer la première image pour économiser de l'espace disque avec la commande "podman rmi"

    cette commande map un répertoire web avec le serveur web php de podman
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    podman run -d --name php-dev -v /media/DOSSIER_WEB_ORDI_HOTE:/var/www/html:Z localhost/httpd-php:8.2
    normalement les fichiers web s'affichent dans le navigateur

    avec podman run pour lancer un serveur lamp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    podman pod create --name db0 --publish 8080:80 && 
    podman run -d --name php8-dev --pod db0 -v /media/DOSSIER_WEB_ORDI_HOTE:/var/www/html:Z httpd-php:8.2 && 
    podman pod create --name db1 --publish 8000:80 --publish 3306:3306 && podman run --name mysql-dev --pod db1 -v /media/DOSSIER_BDD_HOTE:/var/lib/mysql:Z -e MYSQL_ROOT_PASSWORD="mdp" -e MYSQL_USER="utilisateur_bdd" -e MYSQL_PASSWORD="mdpbdd" -d mysql:8 && 
    podman run --name pma --pod db1 -d -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 phpmyadmin:latest && 
    echo -e '\n' && podman pod ps && 
    echo -e '\n' && podman ps && 
    echo -e '\n'

    phpmyadmin sur port 8000


    mais avec podman-compose le réseau fonctionne mieux
    il faut installer podman-compose et créer des fichier yml

    pour installer podman compose

    sur debian
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sudo apt update
    sudo apt install podman-compose

    ci-dessous le fichier podman-compose.yml équivalent à podman run mais fonctionne mieux au niveau du réseau, accès possible simultanément au web, bdd et pma

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    version: '3.8'
    services:
      php-apache-environment:
        image: httpd-php:8.2
        container_name: httpd-php8
        volumes:
          - /media/DOSSIER_WEB_ORDI_HOTE:/var/www/html
        ports: 
          - 8080:80
      db:
        image: mysql:8
        container_name: db-mysql8
        environment:
          MYSQL_ROOT_PASSWORD: mdp
          MYSQL_DATABASE: demo
          MYSQL_USER: utilisateur_bdd
          MYSQL_PASSWORD: mdpbdd
          restart: unless-stopped
        volumes:
          - /media/DOSSIER_BDD_HOTE:/var/lib/mysql
        ports:
          - "3306:3306"
      phpmyadmin:
        image: phpmyadmin:5.2.2
        container_name: pma
        environment:
          PMA_HOST: db
          MYSQL_ROOT_PASSWORD: rootpassword
        ports:
          - "8000:80"

    dans le répertoire du fichier yml podman-compose.yml , démarrer avec
    et éteindre avec
    Il est aussi possible d'utiliser podman-desktop mais en ligne de cde on peut voir pas mal de chose d'un coup


    Pascal
    info2gestion📍️

  2. #2
    Membre averti
    Homme Profil pro
    en veille
    Inscrit en
    Avril 2024
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : en veille

    Informations forums :
    Inscription : Avril 2024
    Messages : 40
    Par défaut
    et pour firejail pour isolé le développement web

    je crée un profil dédié dans firefox, avec un theme dédié, je sais que c'est pour podman et pas kvm et je lance firefox avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/firejail --ignore=nogroups /opt/waterfox/waterfox -P webdev1 -no-remote
    de cette façon, avec ce profile, il n'y a pas d'accès web et donc pas de liens cdn qui peuvent masquer des fichiers ou styles

  3. #3
    Membre averti
    Homme Profil pro
    en veille
    Inscrit en
    Avril 2024
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : en veille

    Informations forums :
    Inscription : Avril 2024
    Messages : 40
    Par défaut
    Donc après cette config, évidemment, j'ai des questions

    Est-ce que j'ai suivi les bonnes pratiques pour un développement en local (pas d'accès extérieur http ou ssh)?

    Comment ça se fait qu'avec cette install et 2 images de php-httpd avec php8.2 et php 7.3, l'image de mysql9 et l'image de phpmyadmin, j'ai approx.20 go d'espace disque occupé?

    En comparaison la vm sur kvm debian server headless, avec 2 versions de php, la même bdd, c'est une vm qui occupe 5,2 gb???

  4. #4
    Membre averti
    Homme Profil pro
    en veille
    Inscrit en
    Avril 2024
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : en veille

    Informations forums :
    Inscription : Avril 2024
    Messages : 40
    Par défaut
    J'ai passé l'installation de 20 go à 2go pour obtenir le même résultat un serveur web, une base de données et phpmyadmin

    Avant:
    du -hs .local/*
    23,6G .local/share

    Maintenant
    du -hs .local/*
    1,8G .local/share

    La différence vient de la config de podman. L'installation par défaut sur debian utilise un sytème de stockage vfs qui réplique les images par couches. En modifiaint le fichier de config vfs par overlay, les images occupent moins d'espace disque et la performance en est améliorée. Apparemment, l'installation sur fedora par défaut c'est en overlay. A confirmer

    Pour debian donc il faut

    avant il n'y avait pas de config dans ce dossier
    cd /usr/share/containers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    podman info | grep graphDriverName
    #vfs
    possible de créer un fichier de config containers.conf et d'y ajouter driver = "overlay" mais j'ai essayé et certaines commandes comme podman save plantent à cause d'une erreur runroot

    résolution, installée le package containers-storage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    apt update
    apt install containers-storage
    et là il y a bien un fichier de config dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd /usr/share/containers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    podman info | grep graphDriverName
    #overlay
    mais tout est commenté, je ne comprends pas pourquoi. En tout cas, le reste fonctionne mais il faut passer par system reset. Avant il faut enregistrer les images. J'avais qui php7.4 qui a planté donc j'ai du reconstruire un image. Et d'ailleurs, je posterai les étapes parce que j'ai dû installé et activé des modules php dans le conteneur de l'image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    podman system reset
    #ca efface tout!
    voilà à partir de la pour une nouvelle configuration, je me retrouve avec 3 images qui font tourner les pages de mon site web en local, php, phpspreadsheet...pour 2 go d'espace disque utilisé au lieu de 20 go

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    podman system df
    TYPE           TOTAL       ACTIVE      SIZE        RECLAIMABLE
    Images         3           3           2.118GB    0B (0%)
    Containers     3           3           30.17kB     0B (0%)
    Local Volumes  0           0           0B          0B (0%)

    Je modifierai le 1er post de la discussion en conséquence 🏁

Discussions similaires

  1. vm interface nat et firewall
    Par barpasc dans le forum Virtualisation
    Réponses: 1
    Dernier message: 11/08/2025, 14h25
  2. Quel firewall utiliser avec kaspersky ?
    Par quaresma dans le forum Sécurité
    Réponses: 3
    Dernier message: 27/10/2006, 14h16
  3. Réponses: 7
    Dernier message: 27/09/2006, 17h03
  4. Problème d'interface de base de données avec Frontpage
    Par Auxtown-Son dans le forum Outils
    Réponses: 3
    Dernier message: 11/07/2006, 17h42
  5. interface idlj et Object Suite (JAVA)
    Par canou94 dans le forum CORBA
    Réponses: 5
    Dernier message: 25/11/2005, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo