Csináltam (ezúttal magamnak) egy új szervert a neten, és ahogy illik csináltam egy ugyanolyan teszt szervert is a laptopomon. Szárazabb, biztonságosabb érzés teszt környezetben tesztelni pl. egy ansible-playbookot.
Mivel mindkét szervert ansible-playbookokal építettem fel, így szoftveresen semmi különbség sem volt a kettő között. Kizárólag az IP címek, host nevek különböztek. Szándékosan ugyanannyi memória és processzor volt a teszt szerverben is, hogy ez se vezessen félre.
Majd a „belakás” közben észrevettem, hogy a teszt szerveren lévő wordpress konténer nem látta az adatbázis szervert. Az éles szerveren minden rendben volt. Természetesen ugyanaz a docker-compose.yml fájl volt mindkét szerverre felmásolva. Beléptem a teszt wordpress konténerbe, és szerettem volna telepíteni egy nmap-ot. Aki nem ismerné, az nmap egy remek hálózati port szkenner app.
Valami hasonló parancsot kell elképzelni:
# nmap -p 3306 wordpress-db
Ha az eredmény „open”, akkor minden rendben van, a weboldal látja az adatbázis szervert. Ám a teszt konténerben fel se tudtam telepíteni az nmap-ot, a csomagkezelő nem tudta letölteni a netről a fájlokat.
Mi van?!
Most mutatok egy egyszerű és kis méretű konténert, ahol alap hálózati teszteket tudunk végrehajtani:
# docker run --rm busybox nslookup bme.hu
;; connection timed out; no servers could be reached
Az eredmény: idő túllépés.
Pici magyarázat a parancshoz: a „docker run”-nal futtatjuk a konténerünket, az „–rm” kapcsoló azt jelenti, hogy kilépés után törli is a konténert (magyarul nem hagyunk szemetet magunk után), a „busybox” a konténer neve, mindössze 4,26 MB, és a végén van a parancs: „nslookup bme.hu”.
Az „nslookup hostnév” konténeren kívül is futtatható, sőt futtattam is, ott természetesen minden rendben volt.
Sok guglizás után arra jutottam, hogy valamilyen tűzfalas probléma van nálam itthon, ezért a teszt szerveren leállítottam a tűzfalat, és újraindítottam a dockert:
# systemctl stop firewalld
# systemctl restart docker
Újra elvégeztem a tesztet:
# docker run --rm busybox nslookup bme.hu
Server: 10.0.2.3
Address: 10.0.2.3:53
Non-authoritative answer:
Name: bme.hu
Address: 152.66.115.203
Non-authoritative answer:
Name: bme.hu
Address: 2001:738:2001:2001::f0c1
Innentől kezdve már látta a wordpress konténer a mysql adatbázisát.
Azóta se jöttem rá, hogy mitől van ez a jelenség, csak tippelni tudok, hogy nálam az IPv6 protokoll rosszul van konfigurálva, mindenesetre a teszt szerveren tudok élni kikapcsolt tűzfallal…