„Docker host telepítése (Fossa)” változatai közötti eltérés
(→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!
Tartalomjegyzék
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
- How to Install Docker On Ubuntu 20.04 LTS Focal Fossa (Linuxconfig.org)
- Install Docker Engine on Ubuntu (Docker Docs)
- What is docker.io in relation to docker-ce and docker-ee? (StackOverflow)
- The docker.io Debian package is back to life (Collabora)
- Post-installation steps for Linux (Docker Docs)
- To Fix The Docker and UFW Security Flaw Without Disabling Iptables (GitHub)