Previous: , Up: Kontajnery systému Guix   [Contents][Index]


4.2.2 Prístup do siete vrámci kontajnera

Na čo nám je systém Guix, na ktorom v kontajneri beží databázová služba PostgreSQL, ku ktorej môžeme pristupovať len prostredníctvom procesov spustených v kontajneri? Bolo by oveľa lepšie, keby sme k databáze mohli pristupovať cez sieť.

Najjednoduchším spôsobom ako to dosiahnuť, je vytvoriť pár spojených virtuálnych Ethernet zariadení (známych ako veth). Jedno zo zariadení (ceth-skuska) presunieme do oblasti názvov net nášho kontajnera a to druhý koniec (veth-skuska) pripojenia ponecháme na hostiteľskom systéme.

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

# Pripojiť novú oblasť mien „guix-skuska“ k PID kontajnera.
sudo ip netns attach $ns $pid

# Vytvoriť pár zariadení.
sudo ip link add $host type veth peer name $client

# Presunúť klientske zariadenie do oblasti mien kontajnera.
sudo ip link set $client netns $ns

Potom nastavíme hostiteľa:

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

…a klienta:

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

V tomto bode má hostiteľ dosah na klienta cez IP adresu 10.0.0.2 a kontajner má dosah na hostiteľa cez IP 10.0.0.1. To je všetko čo potrebujeme pre spojenie sa s databázovým serverom v kontajneri z vonkajšieho prostredia hostiteľského systému.

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

skuska=> CREATE TABLE ahoj (kto TEXT NOT NULL);
CREATE TABLE
skuska=> INSERT INTO ahoj (kto) VALUES ('svet');
INSERT 0 1
skuska=> SELECT * FROM ahoj;
  kto
-------
 svet
(1 row)

Keď už sme skončili s týmto krátkym príkladom, trochu upracme:

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

Previous: Databázový kontajner, Up: Kontajnery systému Guix   [Contents][Index]