Ako vytvoriť Docker server pre aplikácie v kontajneroch v Azure (krok za krokom)

 V predošlom blogposte "krok za krokom" som popísal postup, ako v Azure vytvoriť Linux server s MySQL . V tomto návode síce naďalej zostanem vo svete Linuxu, ale posuniem sa do populárneho trendu kontajnerizácie pomocou technológie Docker . Kontajnery sú vyhradené prostredia pre beh aplikácií/služieb, ktoré sú v rámci jedného hostiteľa (servera) izolované, ale zdieľajú OS kernel a tam, kde je to vhodné, aj programy a knižnice (bins,libs). Pri vhodných aplikáciach je výsledkom použitia kontajnerov rýchlejšie nasadenie, nižšie nároky, ľahšia migrácia, rýchlejší štart.

Docker dnes podporuje hostiteľské servery na Linuxe, ale spolu s Microsoftom pracuje Docker open source komunita aj na podpore pripravovaného Nano servera založeného na Windows. V nasledujúcom návode nájdete kroky ako v Azure oživiť Docker hostiteľa na Linuxe, ako v ňom vytvoriť kontajner s aplikáciou a ako takýto kontajner vystaviť pre použitie cez internet.

1. Prihláste sa na "preview" portál správy Azure služieb https://portal.azure.com  Microsoft Account-om (LiveID), ktorý ste použili pri aktivácii Azure benefitu v MSDN alebo BizSpark-u, alebo ho používate v Azure Trial, prípadne v zakúpenej Azure subskripcii.

2. Na hlavnej obrazovke správy vašej Azure subskripcie vyberte vľavo hore menu „New“ .

3. Z zobrazeného submenu vyberte Marketplace a do položky na vyhľadávanie v ponuke marketplace napíšte "Docker on Ubuntu Server" .

4. Kliknite na vzorový image od Canonical + MS Open Tech.

5. Na informačnej a licenčnej stránke potvrďte Create.

6. Zadajte názov servera  (hostname), prihlasovacie meno administrátora servera (username), pre jednoduchosť nastavenia prihlasovania môžete nechať typ autentifikácie Password a do položky pre heslo (Password) zadajte heslo administrátora servera. Pre odskúšanie Docker hostiteľa môžete ponechať Pricing Tier (čiže veľkosť servera) na A1 (t.j. 1 vCPU, 1,75GB RAM). Zmeňte predvolené dátové centrum (položka Location) tak, aby bolo najbližie k väčšine používateľov aplikácií, ktoré v Docker kontajneroch rozbeháte. Nakoniec potvrďte Create.

 

Poznámka: Pre kontajnery, ktoré CPU zaťažia viac, zvoľte sizing v položke Pricing Tier zo sady D.

7. Spustí sa proces vytvorenia virtuálneho servera na Linuxe s predinštalovaným rozšírením Docker. Počkajte niekoľko minút.

Poznámka: Ak ste nechali pri tvorbe servera "zaškrtnutú" položku "Pin to Startboard", vytvorí sa na hlavnej stránke Azure portálu dlaždica smerujúca na nový server. 

8. Po ukončení provisioningu Docker servera sa zobrazí detailný panel, v ktorom môžete vytvorený server podľa potreby ďalej konfigurovať.

9. Potvrďte v hornom menu Settings, potom Endpoints a opíšte si verejný port pre SSH.

10. Pre správu Docker-a a jeho kontajnerov sa vzdialene pripojte na vytvorený server. Z Windows klienta som použil PUTTY https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html , pričom do položky "Host name (or IP address)" som zadal Cloud Service DNS Name, ktoré sa automaticky pridelilo serveru tak, že sa k názvu servera zadaného v bode 6 pridala doména "cloudapp.net" (,v mojom príklade je Cloud Service DNS Name mojdocker-ubuntu.cloudapp.net) a do položky Port som zadal verejný port pre SSH opísaný v bode 9.

11. Prihláste sa pod administrátorským prihlasovacím účtom s heslom, ktoré ste zadali pri vytváraní servera v bode 6.

12. Dotiahnite aktualizácie vzorového image príkazom:

   sudo apt-get update

13. Preverte, že vzorový image neobsahuje žiadne aplikačné balíčky pre Docker kontajnery príkazom:

   sudo docker images

14. Ako príklad nasadenia aplikácie do Docker kontajnera použijem populárny webserver nginx. Nginx balíček pre Docker je (ako množstvo ďalšieho softvéru) katalogizovaný v Docker Hub-e. Spustite nasledujúci príkaz, ktorým stiahnete nginx cez Docker hub, nainštalujete ho do nového kontajnera s názvom machinenginx a pridelíte mu v hostiteľskom prostredí vášho Docker servera náhodný port (prepínač -P):

    docker run --name machinenginx -P -d nginx

   Poznámka: Prepínač -d zabezpečí, že sa kontajner pre nginx nielen naštartuje, ale bude naďalej bežať na pozadí.

15. Bežiacim kontajnerom v rámci hostiteľského Docker servera sa prideľujú porty na komunikáciu s okolitým svetom. Potvrďte nasledujúci príkaz, ktorý vypíše, aké porty sú pridelené bežiacim kontajerom, a teda aký port bol pridelený kontajneru webového servera nginx v rámci Docker hostiteľa:
   
    docker ps

   Poznámka: Výstup príkazu ukazuje, že nginx čaká na porte 80 a kontajner čaká na porte 32769, a teda požiadavky ktoré prídu kontajneru machinenginx na port 32769 sú presmerované na port 80 pre proces nginx.

16. Ak by sme do Docker hostiteľa nainštalovali browser, v ktorom by sme chceli otvoriť web cez http na porte 32769, zobrazila by sa úvodná stránka webservera nginx. Našim cieľom je ale ukázať kontajner s nginx-om svetu, nielen procesom na Docker hostiteľovi.
Keďže Azure stavia na bezpečnosti, musíte explicitne určiť, že chcete, aby sa port 32769 zviditeľnil do internetu. Musíte teda pre Docker hostiteľa otvoriť tzv. endpoint, v ktorom nastavíte pre vnútorný port 32769 jeho verejný párový port. Keďže chcete vystaviť aplikáciu webservera, dáva logiku nastaviť verejný port s hodnotou 80. Prejdite na Azure portále opäť na detail servera mojdocker-ubuntu a cez horné menu Settings otvorte stránku Endpoints.

17. Potvrďte Add v hornom menu.

18. Zadajte názov endpointu, protokol ponechajte TCP, verejný port (Public port) nastavte na klasický http port 80, vnútorný port (Private port) nastavte na port kontajnera, čiže v našom príklade na 32769. Nakoniec potrvrďte tlačidlo OK.

19. Po chvíli sa endpoint vytvorí a tak skúste skontrolovať výsledok vytvorenia Docker hostiteľa s jedným kontajnerom obsahujúcim webserver nginx. Stačí otvoriť browser a zadať do neho URL mojdocker-ubuntu.cloudapp.net.

20. Hotovo!

 

Miro

P.S. Ak ste členmi BizSpark programu pre začínajúce vývojárske "startupy" (firmy alebo živnostníkov) , alebo máte kúpené Visual Studio s MSDN, môžete si bezplatne aktivovať Azure benefit v týchto programoch (Microsoft Azure pre členov BizSpark , Microsoft Azure pre MSDN predplatiteľov). Pri registrácii Azure benefitu v MSDN alebo BizSparku nie je požadované overenie platobnou kartou. Ak nie ste členmi týchto programov, môžete si Microsoft Azure bezplatne vyskúšať na dobu 30 dní cez Microsoft Azure Trial.