16. dubna byl zveřejněn projekt Atomic - kombinace projektu OSTree Colina Walterse a projektu Docker. O co jde, k čemu je to dobré, a proč je to skvělá věc?
Začneme popořádku... co je to OSTree? (pro detailnější popis doporučuji přednášku z letošní Developer Conference - https://www.youtube.com/watch?v=Hy0ZEHPXJ9Q). Zjednodušeně řečeno, OSTree umožňuje na straně serveru vytvářet strom balíčků, chroot, nachystaný pro update hosta. Na hostovi pak stačí provést reboot a nastartovat do nového stromu. Pokud je se stromem jakýkoliv problém, tak se jednoduše stačí vrátit ke stromu předchozímu. Stromy jsou verzované, mají podobnou strukturu jako git a nemění obsah /etc a /var. Díky tomu je update systému atomický (na rozdíl od yum update, který může a nemusí restartovat různé služby, nechá běžet aplikace se starší verzí knihovny, která je stále v paměti, atd.) a z toho prochází i jméno projektu – Atomic.
OStree se výborně hodí pro správu malých hypervizorů nebo nodů, které nechcete ručně aktualizovat, ale prostě potřebujete funkční strom na všech svých nodech. Atomic jde ale dál, kombinuje OSTree s Dockerem (opět doporučuji zajímavou prezentace z Developer Conference od Alexe Larsona - https://www.youtube.com/watch?v=3cRKI-x5GY8). Docker umožňuje vytvářet přenositelné kontejnery s aplikacemi. Kontejnery jsou sice vždy svázány s nějakým základním kontejnerem, který představuje minimální instalaci distribuce, na které byl kontejner s aplikací vytvořen. Nástroje kolem Dockeru však tuto skutečnost pro uživatele dobře odstiňují a pokud chcete používat stejný kontejner na Fedoře, RHELu nebo Ubuntu, tak rozdíl nepoznáte.
Jak si Atomic a Docker vyzkoušet?
Mám pro vás velmi jednoduchý návod, jak si vyzkoušet na svém počítači Atomic, zaktualizovat ho, spustit v Dockeru svou aplikaci a aplikaci spravovat pomocí nového projektu Cockpit. Všechny informace najdete na webu http://www.projectatomic.io/
Nejdříve si stáhneme a rozbalíme Fedora Atomic qcow image pro KVM:
$ wget http://rpm-ostree.cloud.fedoraproject.org/project-atomic/images/f20/qemu/20140414.1.qcow2.xz $ xz -d 20140414.1.qcow2.xz
Atomic je vlastně minimální instalace Fedory 20, ze které byly odstraněny všechny “nepotřebné věci” jako dokumentace, manuálové stránky, firmware a další aplikace, které nejsou potřeba. Rozbalený obraz stačí spustit ve virt-manageru nebo naimportovat přes virt-install --import. Já preferuji virt-manager, kde stačí vybrat Use existing disk image.
V terminálu doporučuji hned změnit heslo pro uživatele root, případně přidat uživatele tak, aby se dalo do virtuálky přihlašovat přes ssh.
Po přihlášení můžete provést aktualizaci systému.
$ rpm-ostree upgrade
Aby se použil nový strom, je potřeba provést reboot systému
$ systemctl reboot
Pokud se chcete vrátit k předchozímu stromu, stačí zavolat
$ rpm-ostree rollback
Všechny stromy k dispozici pro rollback jsou uložené v /ostree.
Takže nyní máme aktualizovaný node nebo hypervizor pro Docker a v dalším kroku chceme systém spravovat a chceme na něm nainstalovat nějakou aplikaci. Pokud teď zkusíte instalovat aplikaci přes yum install, Docker vám to nedovolí (/ a /usr jsou read-only). To je záměr a cílem je veškeré aplikace spouštět v rámci kontejneru. Na webu http://docker.io si v části index můžete vybrat, jak různé base kontejnery pro vaše aplikace založené na různých distribucích, tak i kontejnery s předinstalovanou a nastavenou aplikací. Jako příklad jsem vybral kontejner s WordPressem. Ve virtuálce stačí spustit“
$ docker run -d -p 80:80 tutum/wordpress
Docker klient se připojí na index a stáhne a nainstaluje kontejner s WordPressem včetně základního kontejneru. Zároveň Docker rovnou spustí a dá mu k dispozici port 80 namapovaný uvnitř kontejneru také na port 80. Pak už stačí jen připojit se v prohlížeči na adresu kontejneru a můžete používat WordPress.
Atomic obsahuje ještě jeden velmi nový projekt - Cockpit. Webový nástroj pro monitoring a základní správu systému. Takže v naší atomické Fedoře stačí spustit službu cockpitd“
$ systemctl start cockpitd.service
a připojit se k webovému rozhraní na portu 21064, v mém případě tedy na
$ firefox http://192.168.100.145:21064/
V rozhraní můžete spravovat služby, sledovat logy, pracovat s disky, ale i spouštět, vypínat a přidělovat prostředky jednotlivým dockerovým kontejnerům. Přes toto rozhraní můžete i spustit terminál přímo ve webovém prohlížeči a připojit další stroje s démonem cockpit.
V Docker indexu naleznete spousty dalších hotových aplikací a i návod, jak si vytvořit a distribuovat aplikaci vlastní. Fedora Atomic by se do budoucna měla stát ideálním základem pro hostování takovýchto aplikací a už dnes je základem pro OpenShift nody nebo se o ní uvažuje jako o hypervisoru pro virtuální stroje.