Précédent: , Monter: Conteneurs pour le système Guix   [Table des matières][Index]


4.2.2 Utilisation du réseau dans le conteneur

Que vaut un système Guix dans lequel tourne un service de bases de données PostgreSQL dans un conteneur si nous ne pouvons lui parler qu’avec des processus originaire de ce conteneur ? Il serait bien mieux de pouvoir parler à la base de données via le réseau.

La manière la plus simple de faire cela est de créer une paire de périphérique Ethernet virtuels (connus sous le nom de veth). Nous déplaçons l’un des périphériques (ceth-test) dans l’espace de nom net du conteneur et laissons l’autre côté (veth-test) de la connexion sur le système hôte.

pid=5983
ns="guix-test"
host="veth-test"
client="ceth-test"

# Attache le nouvel espace de nom réseau « guix-test » au PID du conteneur.
sudo ip netns attach $ns $pid

# Crée une paire de périphériques
sudo ip link add $host type veth peer name $client

# Déplace le périphérique client dans l'espace de nom réseau du conteneur
sudo ip link set $client netns $ns

Puis nous configurons le côté de l’hôte :

sudo ip link set $host up
sudo ip addr add 10.0.0.1/24 dev $host

…puis nous configurons le côté client :

sudo ip netns exec $ns  ip link set lo up
sudo ip netns exec $ns  ip link set $client up
sudo ip netns exec $ns  ip addr add 10.0.0.2/24 dev $client

Maintenant l’hôte peut atteindre le conteneur à l’adresse IP 10.0.0.2 et le conteneur peut atteindre l’hôte à l’adresse IP 10.0.0.1. C’est tout ce dont nous avons besoin pour communiquer avec le serveur de bases de données dans le conteneur à partir du système hôte, à l’extérieur.

$ psql -h 10.0.0.2 -U test
psql (14.4)
Type "help" for help.

test=> CREATE TABLE hello (who TEXT NOT NULL);
CREATE TABLE
test=> INSERT INTO hello (who) VALUES ('world');
INSERT 0 1
test=> SELECT * FROM hello;
  who
-------
 world
(1 row)

Maintenant que nous avons fini cette petite démonstration, nettoyons tout ça :

sudo kill $pid
sudo ip netns del $ns
sudo ip link del $host

Précédent: Un conteneur de base de données, Monter: Conteneurs pour le système Guix   [Table des matières][Index]