bhawk.hu – Magyar fejlesztői blog

bhawk.hu – Magyar fejlesztői blog


2024. november
h K s c p s v
« dec    
 123
45678910
11121314151617
18192021222324
252627282930  

Kategóriák


ASP.NET 5: Docker konténerben Linuxon

Gulyás GáborGulyás Gábor

“Microsoft loves Linux”, szokták mondani. Az elmúlt évben egyre többször hallhattuk ezt a kijelentést. És talán nem is olyan meglepő, hogy ennek a szeretetteljes kapcsolatnak az egyik gyermeke a Linuxon futtatható ASP.NET lett. Lássuk, hogy miként tudjuk ezt az együttműködést megoldani a Dockerrel!

 

Docker_(container_engine)_logo

Mi az a Docker?

Mielőtt még belefognánk abba, hogy Linux rendszerünket jól tele pakoljuk mindenféle csomaggal és egy halom kódot legépeljünk, ismerkedjünk meg először a Docker és a konténer fogalmakkal. Legegyszerűbb módja ennek pedig az, ha megértjük a mögöttes problémát, amire megoldást adnak ezek a technológiák. Szoftverfejlesztőként minél több projektben vettünk részt eddig, annál nagyobb az esélye hogy előfordult már velünk az az eset, amikor az ügyfél rendszeréből hiányzott valami komponens, amire az alkalmazásunk épít. Legyen az a PHP esetében egy mcrypt, esetleg egy asztali alkalmazásnál a .NET keretrendszer, bármi.

A Docker egy olyan technológia, mely alkalmazásunkból egy olyan csomagot – úgynevezett konténert – hoz létre, mely nem csak a kódunkat, de egy teljes futtatókörnyezetet is magába foglal. Ezzel az alkalmazásunk nem csak hogy egyszerűen mozgathatóvá válik különböző gépek között, de bizonyos mértékben izoláltabb környezetet is kapunk. A virtuális gépekkel (VM) ellentétben azonban van egy nagy előnye ezeknek a konténereknek, melyet a következő képen láthatunk.

vm-vs-docker-diagram

Virtuális gép (VM)
A virtuális gépek esetében – bal oldalt – egy teljes operációs rendszert futtatunk virtualizált környezetben. Fel kell telepítenünk rá minden szoftvert, keretrendszert, amire csak szükségünk lehet, az alkalmazást pedig ebben a virtuális gépben (VM) fogjuk futtatni. Ezzel a megoldással könnyen búcsút mondhatunk rengeteg szabad memóriának a gazdarendszerben.

Docker
A Docker – jobb oldalt – ezzel szemben a gazdarendszer erőforrásait használja fel, az alkalmazások pedig futtatókörnyezetükkel és függőségeikkel együtt, izoláltan működnek – persze nem olyan mértékben, mint egy virtuális gép esetében, ugyanis a rendszerhez bizonyos formában hozzáférnek ezek a környezetek.

 

Mindkét technológiának megvan a maga előnye és hátránya, azonban alkalmazások futtatására és kitelepítésére a Docker egy jóval hatékonyabb megoldásnak bizonyulhat.

Docker telepítése

Követelmények

A Docker jelenleg csak 64 bites Linux szerverekre telepíthető, azonban a készülőben lévő és Technical Preview stádiumban elérhető Windows Server 2016 már szintén támogatja a konténeres technológiát. A cikkben egy Ubuntu 15.10-es rendszerre fogjuk telepíteni, de a hivatalos dokumentációban található leírás rengeteg másik disztribúcióra is, mint például Debian, Red Hat, vagy SUSE.

00-Ubuntu

A 64 bites rendszeren kívül a másik kitétel, hogy rendszerünk legalább 3.10-es kernelen fusson, ugyanis a Docker Engine olyan technológiákra épül, melyeket ettől a verziótól fölfele támogatnak csak a Linuxok. A kernel verziót a következő parancs hozza elő:

[ecko_code_highlight language=”shell”]$ uname -r
4.2.0-16-generic[/ecko_code_highlight]

Új apt források megadása

Hogy a Linux disztribúciónknak megfelelő Docker Engine kerüljön letöltésre az apt-get által, konfiguráljunk be egy új forrást. Ehhez a következő parancsokat kell beépelnünk:

[ecko_code_highlight language=”shell”]$ apt-get update
$ apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D[/ecko_code_highlight]

Egy tetszőleges szövegszerkesztővel – mint például a nano -, hozzuk létre és szerkesszük az [ecko_code_highlight language=”shell”]/etc/apt/sources.list.d/docker.list[/ecko_code_highlight] útvonalon elérhető állományt, töröljük ki a tartalmát – ha volt benne valami – és a rendszertől függően a következőt írjuk bele:

A Docker más Ubuntu rendszereket nem támogat, így mindenképpen ezen verziók egyikével kell rendelkeznünk!

Mentsük el a fájlt, majd haladjunk tovább a következő parancsokkal:

[ecko_code_highlight language=”shell”]$ apt-get update
$ apt-get purge lxc-docker
$ apt-cache policy docker-engine[/ecko_code_highlight]

Telepítés

Ha minden követelménynek eleget tesz rendszerünk és beállítottuk az apt-hoz a forrásokat, telepíthetjük a Docker Engine-t:

01-HelloWorld

A parancs lefuttatásával egy image fájlt töltünk le a Docker központi tárából, ami a fenti képen látható szöveget fogja kiírni számunkra. Néhány hasznos tanácsot is kapunk tőle, hogy merre is induljunk kezdőként.

ASP.NET a Linuxon

Miután meggyőződtünk róla, hogy a Docker Engine működik, írjuk be a következő parancsot:
[ecko_code_highlight language=”shell”]docker run -d -t -p 8080:5004 cicorias/dockermvcsample2[/ecko_code_highlight]

Ha minden számláló végigment, mindent letöltöttünk, akkor navigáljunk a szerverünkön a 8080-ás portra a böngészőből és – ha mindent jól csináltunk – a következőt fogjuk látni:

02-ASPNET

Nem, ez nem egy statikus oldal, ez valóban egy ASP.NET alapú oldal, amit mi éppen most a Linux rendszerünkről futtatunk!

A továbbiakban

A Docker működtetése nem egyszerű, erre rá kellett jönnöm az első próbálkozásaim során, így egyelőre érdemes az eddig olvasottakat megemészteni, kicsit ismerkedni magával a technológiával, esetleg belenézni a dokumentációba. A cikk következő részében bemutatom, hogy mik is azok a képfájlok a Docker-ben (amikből kettőt is letöltöttünk egyébként próbálkozásaink során), valamint hogy miként készíthetünk sajátot egy ASP.NET MVC alkalmazásból.

Mit gondoltok? Futtatni fogtok .NET oldalakat Linux-on ezek után? 😉

Minden ami Microsoft technológia! Több mint 8 éve foglalkozom programozással, ez idő alatt pedig rengeteg nyelvet elsajátítottam, leginkább a C#-ot kedvelem! Jelenleg szoftverfejlesztőként dolgozom!

Comments 0
There are currently no comments.

Ez a weboldal az Akismet szolgáltatását használja a spam kiszűrésére. Tudjunk meg többet arról, hogyan dolgozzák fel a hozzászólásunk adatait..