„Docker host telepítése (Fossa)” változatai közötti eltérés

Innen: AdminWiki
(Tűzfalbeállítások (UFW) módosítása a Docker használatához)
(Docker házirend)
1. sor: 1. sor:
 
'''Vázlatos, kritikával olvasd!'''
 
'''Vázlatos, kritikával olvasd!'''
 
==Docker házirend==
 
==Docker házirend==
 +
* Ebben a leírásban egy standalone szervergépen (nem ''swarm''-ban) futtatunk egymástól független dockerezett szolgáltatásokat.
 +
* Minden szolgáltatást egy-egy ''docker-compose.yml'' állomány definiál.
 +
* A szolgáltatásokat azonos, nem ''sudo''-képes, dedikált Linux felhasználó (''dockeradmin'') nevében futtatjuk.
 +
* A szolgáltatásokat kiszolgáló közös scriptek a ''dockeradmin'' HOME/bin könyvtárában találhatóak.
 +
* A szolgáltatásokhoz kapcsolódó valamennyi egyedi állomány (specifikus kód, karbantartó script, konfiguráció, adat, helyi mentés, log, stb.) egyetlen könyvtárszerkezetben, a ''dockeradmin'' $HOME/services/<szolgáltatás neve> könyvtárban található.
 +
* A szolgáltatáskönyvtárak azonos skeletonból jönnek létre.
 +
 
'''TODO!'''
 
'''TODO!'''
 +
 
==Telepítés==
 
==Telepítés==
 
A Docker (''community edition'') telepíthető az Ubuntu repositoryból (''docker.io, Debian way''), vagy a ''docker.com'' repositoryból (''docker-ce, Golang way''). A fő különbség, hogy a ''docker.ce'' statikusan linkelt (az összes függőségével egybecsomagolva érkezik), míg a ''docker.io'' esetében a függőségeket a Debian/Ubuntu kezeli (ami jelentős erőfeszítést igényel a ''maintainer''-től). A ''Debian-way'' mellett szólhat a kiterjedtebb security- és tesztelési mechanizmus; ellene szólhat a kétely, hogy képes lesz-e lépést tartani a Docker kiadásaival az LTS támogatás teljes időtartamában.  
 
A Docker (''community edition'') telepíthető az Ubuntu repositoryból (''docker.io, Debian way''), vagy a ''docker.com'' repositoryból (''docker-ce, Golang way''). A fő különbség, hogy a ''docker.ce'' statikusan linkelt (az összes függőségével egybecsomagolva érkezik), míg a ''docker.io'' esetében a függőségeket a Debian/Ubuntu kezeli (ami jelentős erőfeszítést igényel a ''maintainer''-től). A ''Debian-way'' mellett szólhat a kiterjedtebb security- és tesztelési mechanizmus; ellene szólhat a kétely, hogy képes lesz-e lépést tartani a Docker kiadásaival az LTS támogatás teljes időtartamában.  

A lap 2021. október 15., 16:21-kori változata

Vázlatos, kritikával olvasd!

Docker házirend

  • Ebben a leírásban egy standalone szervergépen (nem swarm-ban) futtatunk egymástól független dockerezett szolgáltatásokat.
  • Minden szolgáltatást egy-egy docker-compose.yml állomány definiál.
  • A szolgáltatásokat azonos, nem sudo-képes, dedikált Linux felhasználó (dockeradmin) nevében futtatjuk.
  • A szolgáltatásokat kiszolgáló közös scriptek a dockeradmin HOME/bin könyvtárában találhatóak.
  • A szolgáltatásokhoz kapcsolódó valamennyi egyedi állomány (specifikus kód, karbantartó script, konfiguráció, adat, helyi mentés, log, stb.) egyetlen könyvtárszerkezetben, a dockeradmin $HOME/services/<szolgáltatás neve> könyvtárban található.
  • A szolgáltatáskönyvtárak azonos skeletonból jönnek létre.

TODO!

Telepítés

A Docker (community edition) telepíthető az Ubuntu repositoryból (docker.io, Debian way), vagy a docker.com repositoryból (docker-ce, Golang way). A fő különbség, hogy a docker.ce statikusan linkelt (az összes függőségével egybecsomagolva érkezik), míg a docker.io esetében a függőségeket a Debian/Ubuntu kezeli (ami jelentős erőfeszítést igényel a maintainer-től). A Debian-way mellett szólhat a kiterjedtebb security- és tesztelési mechanizmus; ellene szólhat a kétely, hogy képes lesz-e lépést tartani a Docker kiadásaival az LTS támogatás teljes időtartamában.

Mivel mindkét kiadás egyazon operációs rendszer alá nem telepíthető, választanunk kell közülük. Jelen leírásban a Debian way-t preferálom.

docker.io

A szokásos módon telepíthető:

apt install docker.io docker-compose  # Sok függőség, elsősorban Python

docker-ce

TODO!

Beállítások

Automatikus indítás

A telepített engine nem fut automatikusan, ezt külön engedélyezni kell:

systemctl enable --now docker
systemctl status docker
systemctl start docker  # ha nem futna

Ezután az engine elindul, és a szervergép újraindításakor is automatikusan futni kezd.

Kezelési jog nem sudo-képes felhasználóknak

A Docker engine (sudo használata nélküli) kezelésére a docker Linux csoport tagjai jogosultak, ezért a dockeradmin felhasználót ebbe a csoportba fel kell venni:

sudo usermod -aG docker dockeradmin

A következő belépéstől kezdve a dockeradmin felhasználó már kiadhatja a Docker kezelő parancsokat.

Tűzfalbeállítások (UFW) módosítása a Docker használatához

Alapértelmezésben az UFW blokkolja a szolgáltatások (Docker image-ek) kommunikációját a host gépen futó szolgáltatásokkal (pl. levélküldés a host MTA-n keresztül). Engedélyezzük a szolgáltatások alhálózatairól és a host gép közötti forgalmat korlátozások nélkül (átgondolni: TODO!):

sudo ufw allow in  from 172.17.0.0/16 to any
sudo ufw allow out from any to 172.17.0.0/16

Alapértelmezésben a Docker által exportált portok kívülről láthatóak lesznek annak ellenére, hogy az UFW-ban nem engedélyeztük ezeket az in szabályokban.

A dockerizált szolgáltatások számára engedélyezzünk korlátlan kommunikációt a host géppel:

TODO!

Levélküldés engedélyezése a dockerezett szolgáltatások számára

Hasznos lehet, ha a szolgáltatások is igénybe vehetik a korábban beállított technikai levélküldést. Ehhez engedélyezzük a mail relay-t a Postfixben a Docker networkök felől is:

sudo mcedit /etc/postfix/main.cf

[...]
mynetworks = 127.0.0.0/8 [...] 172.17.0.0/16
[...]

sudo systemctl restart postfix

Gyorsteszt

dockeradmin felhasználóként bejelentkezve futtassuk le a hello-world példa image-et:

docker run hello-world

Siker esetén a Docker alapfunkciói használhatóak.

Docker host szolgáltatások

Irodalom