Mappage de port à des conteneurs
La commande podman run -p
permet de faire un mappage de port, ici entre le port 13306 de l’host et le port 3306 du conteneur db_01 :
$ podman run -d --name db_01 \ |
La commande podman port -a
affiche tous les mappages de ports de conteneur utilisés :
$ podman port -a |
$ podman port db_01 |
La commande firewall-cmd
permet au trafic du port 13306 dans l’host d’être redirigé vers le conteneur :
# firewall-cmd --add-port=13306/tcp --permanent |
# firewall-cmd --reload |
Note :
- Pour mapper un port sur l’host en dessous de 1024 sur un port de conteneur, il faut exécuter Podman en tant que root
- Il est possible de mapper un port supérieur à 1024 sur l’host du conteneur vers un port privilégié sur le conteneur, même en rootless
Configuration DNS dans un conteneur
Podman prend en charge 2 backends réseau pour les conteneurs : Netavark et CNI.
Pour vérifier quel backend réseau est utilisé :
$ podman info --format {{.Host.NetworkBackend}} |
Pour modifier le backend réseau, définissez la configuration dans /usr/share/containers/containers.conf
:
[network] |
La commande podman network create
créer un réseau compatible DNS. Vous utilisez la commande podman network create pour créer le réseau appelé db_network, et spécifiez le sous-réseau comme 10.87.0.0/32 et la passerelle comme 10.87.0.1.
$ podman network create --gateway 10.87.0.1 --subnet 10.87.0.0/32 db_network |
La commande podman network inspect
affiche les informations sur un réseau spécifique :
$ podman network inspect db_network |
La commande podman run --network
permet d’ajouter le réseau DNS db_network à un nouveau conteneur :
$ podman run -d --name db_01 \ |
$ podman run -d --name siteweb01 --network db_network my.com.pany.org/ubi8/ubi:latest sleep infinity |
Utilitaires
La commande podman exec
permet d’installer des utilitaire comme iproute
et iputils
:
$ podman exec -it db_01 dnf install -y iputils iproute |
$ podman exec -it siteweb01 dnf install -y iputils iproute |
Testez la résolution DNS avec la commande podman exec entre 2 conteneurs :
$ podman exec -it db_01 ping -c3 siteweb01 |
$ podman exec -it siteweb01 ping -c3 db_01 |
Vérifier les adresses IP de chaque conteneur et la résolution DNS :
$ podman exec -it db_01 ip a | grep 10.8 |
$ podman exec -it siteweb01 ip a | grep 10.8 |
Plusieurs réseaux dans un seul conteneur
Plusieurs réseaux peuvent être connectés à un conteneur en même temps.
La commande podman network create
permet de créer un réseau backend :
$ podman network create backend |
La commande podman network ls
affiche tous les réseaux Podman :
$ podman network ls |
Si le sous-réseau et la passerelle n’ont pas été spécifiés avec les options –gateway et –subnet, la commande podman network inspect
permet d’obtenir les informations IP du réseau backend :
$ podman network inspect backend |
La commande podman network connect
permet de connecter des réseaux supplémentaires à un conteneur en cours d’exécution :
$ podman network connect backend db_01 |
$ podman network connect backend siteweb01 |
La commande podman inspect
vérifie que les deux réseaux sont connectés à chaque conteneur et pour afficher les informations IP :
$ podman inspect db_01 |
$ podman inspect siteweb01 |
Le conteneur siteweb01 peut désormais communiquer avec le conteneur db_01 sur les deux réseaux.
La commande podman exec
effectue un ping
sur les deux réseaux sur le conteneur db_01 à partir du conteneur siteweb01 :
$ podman exec -it siteweb01 ping -c3 10.89.1.4 | grep 'packet loss' |
$ podman exec -it siteweb01 ping -c3 192.168.0.3 | grep 'packet loss' |
/!\ Résumé des commandes
Commandes :
$ podman port -a |
Fichiers :
Documentation
MAN podman(1)
MAN podman-exec(1)
MAN podman-info(1)
MAN podman-network(1)
MAN podman-network-create(1)
MAN podman-network-inspect(1)
MAN podmannetwork-ls(1)
MAN podman-port(1)
MAN podman-run(1)
MAN podman-unshare(1)