Previous: Databázový kontajner, Up: Kontajnery systému Guix [Contents][Index]
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]