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

Innen: AdminWiki
Ugrás a navigációhoz Ugrás a kereséshez
 
(9 közbenső módosítás ugyanattól a felhasználótól nincs mutatva)
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ások számára a szervergép
** közös külső IP-t,
** hálózati forgalomirányítást,
** közös web reverse proxyt,
** SMTP smarthostot (technikai levelezést) és
** periodikus (napi) mentést (DB dump, fájlterület time machine (git) vagy tar.gz) biztosít.
* 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 (szolgáltatáskönyvtár) 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.  
8. sor: 22. sor:
=== docker.io ===
=== docker.io ===
A szokásos módon telepíthető:
A szokásos módon telepíthető:
<pre>apt install docker.io docker-compose  # Sok függőség, elsősorban Python</pre>
<pre>sudo apt install docker.io docker-compose  # Sok függőség, elsősorban Python</pre>
 
===docker-ce===
===docker-ce===
'''TODO!'''
'''TODO!'''
15. sor: 30. sor:
===Automatikus indítás===
===Automatikus indítás===
A telepített engine nem fut automatikusan, ezt külön engedélyezni kell:
A telepített engine nem fut automatikusan, ezt külön engedélyezni kell:
<pre>systemctl enable --now docker
<pre>sudo systemctl enable --now docker
systemctl status docker
sudo systemctl status docker
systemctl start docker  # ha nem futna</pre>
sudo systemctl start docker  # ha nem futna</pre>
Ezután az engine elindul, és újraindításkor is automatikusan futni kezd.
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===
===Kezelési jog nem ''sudo''-képes felhasználóknak===
26. sor: 41. sor:


===Tűzfalbeállítások (UFW) módosítása a Docker használatához===
===Tűzfalbeállítások (UFW) módosítása a Docker használatához===
Két lényeges módosításra lesz szükség:
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!'''):
* 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;
<pre>sudo ufw allow in  from 172.17.0.0/16 to any
* alapértelmezésben az UFW blokkolja a 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).
sudo ufw allow out from any to 172.17.0.0/16</pre>
 
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.
 
'''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:
<pre>sudo mcedit /etc/postfix/main.cf
 
[...]
mynetworks = 127.0.0.0/8 [...] 172.17.0.0/16
[...]
 
sudo systemctl restart postfix</pre>


===Gyorsteszt===
===Gyorsteszt===
Futtassuk le a ''hello-world'' példa image-et:
''dockeradmin'' felhasználóként bejelentkezve futtassuk le a ''hello-world'' példa image-et:
<pre>docker run hello-world</pre>
<pre>docker run hello-world</pre>
Siker esetén a Docker alapfunkciói használhatóak.
Siker esetén a Docker alapfunkciói használhatóak.

A lap jelenlegi, 2021. október 15., 15:07-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ások számára a szervergép
    • közös külső IP-t,
    • hálózati forgalomirányítást,
    • közös web reverse proxyt,
    • SMTP smarthostot (technikai levelezést) és
    • periodikus (napi) mentést (DB dump, fájlterület time machine (git) vagy tar.gz) biztosít.
  • 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 (szolgáltatáskönyvtár) 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ő:

sudo 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:

sudo systemctl enable --now docker
sudo systemctl status docker
sudo 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.

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