A Windows konténerek rövid bemutatása. A konténerek megértése A Windows szerver konténerei

A maiban Tegyen fel egy kérdést a rendszergazdának, Megmutatom, hogyan telepíthet egy képet egy tárolóban a Windows Server 2016 rendszeren, hogyan hozhat létre új lemezképet, és hogyan töltheti fel a Dockerbe.

A Windows Server 2016 egyik legfontosabb új funkciója a tárolók és a Docker támogatása. A tárolók könnyű és rugalmas virtualizációs élményt nyújtanak, amellyel a fejlesztők gyorsan telepíthetik és frissíthetik az alkalmazásokat a virtuális gépek többletköltsége nélkül. A Docker konténerkezelési megoldással párosulva a konténertechnológia robbanásszerűen fejlődött az elmúlt néhány évben.

Ez a Windows Server-tárolók telepítése és kezelése Dockerrel című, a Windows Server 2016 Technical Preview 3 rendszerhez készült aktuális információinak frissítése. A Dockerrel kapcsolatos további információkért lásd: Mi az a Docker? és jobbak a Docker-tárolók, mint a virtuális gépek? a Technikai alap Petri informatikai ismeretek.

A cikkben található utasítások követéséhez hozzá kell férnie egy Windows Server 2016 rendszert futtató fizikai vagy virtuális kiszolgálóhoz. Letöltheti a kiértékelési példányt a Microsoft webhelyéről, vagy beállíthat egy virtuális gépet a Microsoft Azure-ban. Szüksége lesz egy ingyenes Docker-azonosítóra is, amelyet regisztrációval szerezhet meg.

Telepítse a Docker Engine-t

Az első lépés a Docker támogatás telepítése a Windows Server 2016 rendszeren.

  • Jelentkezzen be a Windows Server rendszerbe.
  • Kattintson Keresés tálca ikonra és gépelje be PowerShell a keresőmezőben.
  • Kattintson Jobb klikk egerek Windows PowerShell a keresési eredmények között, és válassza ki Futtatás rendszergazdaként menüből.
  • Amikor a rendszer kéri, adja meg a rendszergazdai hitelesítő adatokat.

A Docker Windows Server rendszerre történő telepítéséhez futtassa a következő PowerShell-parancsmagot. A rendszer felkéri a NuGet telepítésére, amely letölti a Docker PowerShell modult egy megbízható online adattárból.

Telepítési modul - Name DockerMsftProvider -Force

Most használd Telepítési csomag cmdlet a Docker motor Windows Server rendszerre történő telepítéséhez. Vegye figyelembe, hogy a folyamat végén újraindítás szükséges.

Telepítési csomag - Docker neve - Szolgáltatónév DockerMsftProvider - Újraindítás kényszerítése - Számítógép - Kényszer

A kiszolgáló újraindítása után futtassa újra a PowerShell promptot, és a következő parancs futtatásával ellenőrizze, hogy a Docker telepítve van-e:

docker verzió

Töltse le a képet a Dockerből, és indítsa el a tárolófolyamatot

Most, hogy a Docker motor telepítve van, húzzuk ki az alapértelmezett Windows Server Core képet a Dockerből:

docker pull microsoft/windowsServerCore

Most, hogy a képet feltöltötte a helyi szerverre, indítsa el a tárolófolyamatot a használatával dokkoló indítás:

A Docker futtatja a Microsoft /windowsServerCore-t

Hozzon létre egy új képet

Most már létrehozhatunk egy új képet a korábban letöltött Windows Server képből kiindulópontként. A futtatás előtt szüksége lesz egy Docker azonosítóra. Ha még nem rendelkezik vele, regisztráljon egy Docker-fiókra.

Szponzorok

A Docker-képek általában Dockerfile-receptekből épülnek fel, de a demonstráció céljából a feltöltött képen egy parancsot futtatunk, a változás alapján létrehozunk egy új képet, majd feltöltjük a Dockerbe, hogy elérhető legyen a felhőből.

Vegye figyelembe, hogy az alábbi parancssorban -t A paraméter megadja a képcímkét, amely lehetővé teszi a kép egyszerű azonosítását. Különös figyelmet kell fordítani a címke neve után megjelenő kötőjelre is.

"A Microsofttól /windowsservercore `n CMD echo Hello World!" | docker build -t mydockerid /windows-test-image -

Miután a Docker befejezte az új lemezkép létrehozását, ellenőrizze a helyi kiszolgálón elérhető képek listáját. Mindkettőt látnia kell. Microsoft /windowsServerCoreÉs mydockerid /windows-test-images a listában.

dokkoló kép

Most indítson el egy új képet a tárolóban, ne felejtse el kicserélni mydockerid Docker azonosítójával, és látnia kell Helló Világ! Megjelenik a kimeneten:

a docker futtatja a mydockerid /windows-test-images programot

Tölts fel egy képet a Dockerbe

Töltsük fel az imént létrehozott képet a Dockerbe, hogy elérhető legyen a felhőből. Jelentkezzen be Docker azonosítójával és jelszavával:

Jelentkezzen be a docker -u mydockerid -p mypassword szolgáltatásba

használat dokkoló tolja az előző lépésekben létrehozott kép cserével való feltöltéséhez mydockerid a Docker ID nevével:

Docker push mydockerid /windows-test-images

Hogyan csomagoljunk egy alkalmazást egy Docker tárolóba?

Van egy NodeJS-ben írt alkalmazásom. Hogyan csomagolhatom Docker-képbe, hogy tárolóként fusson?

A Docker egy konténerkezelő rendszer POSIX-kompatibilis operációs rendszerekhez (jelenleg a Linux támogatott). A Docker egyik jellemzője, hogy egy alkalmazást az összes szükséges környezettel úgy csomagolhat, hogy az egy másik rendszeren futhasson anélkül, hogy hosszas és bonyolult függőségek telepítése vagy forrásból történő építése folyamatban lenne. A telepítésre kész csomagolt alkalmazást "image"-nek nevezzük. A Docker képek „sablonokon” – előre konfigurált munkakörnyezeteken – alapulnak. Elosztásként is felfoghatod operációs rendszer, bár ez nem teljesen igaz. Saját sablont is létrehozhat a Docker dokumentációjának elolvasásával. Ennek a megközelítésnek az az előnye, hogy az alkalmazás képfájlja csak magát az alkalmazást tartalmazza, és a hozzá szükséges környezet automatikusan letöltődik a sablontárból. A Docker egy kicsit olyan, mint a chroot vagy a bsd jail, de másképp működik.

Fontos különbséget tenni a „tároló” és a „kép” fogalmak között. A tároló az alkalmazás futó példánya, a kép pedig egy fájl, amely az alkalmazást tárolja, és amelyből a tároló létrejön.

Tegyük fel, hogy van egy NodeJS-alkalmazása, amelyet egy tárolóba szeretne csomagolni. Tegyük fel, hogy az alkalmazást futtató fájl neve server.js, és az alkalmazás a 8000-es porton figyel a futtatásra. A „node:carbon” sablont fogjuk használni. Az alkalmazás konténerbe helyezéséhez létre kell hoznia egy "Dockerfile"-t abban a könyvtárban, ahol az alkalmazásfájlok találhatók, amely leírja a kép elkészítésének paramétereit:

$ érintse meg a Dockerfile-t

A fájl tartalma valahogy így nézhet ki:

# Adja meg a használni kívánt sablont FROM node:carbon # Alkalmazás munkakönyvtár létrehozása a WORKDIR tárolón belül /usr/src/app # Alkalmazásfüggőségek telepítése az npm segítségével # Másolja ki a package.json ÉS a package-lock.json fájlt, ha van COPY csomag*. json ./ RUN npm install # Másolja az alkalmazás fájljait a COPY képbe. . # Nyissa meg a 8000-es portot, hogy az elérhető legyen az EXPOSE 8000 tárolón kívül # Hajtsa végre a parancsot az alkalmazás futtatásához a CMD tárolón belül [ "npm", "start" ]

A szükségtelen fájlok képből való kizárásához felsorolhatja a nevüket a „.dockerignore” fájlban. Használhat maszkot (*.log).

A kép a következő paranccsal készül:

$ docker build -t felhasználónév/node-web-app .

$ docker images # Példa REPOSITORY TAG ID LÉTREHOZOTT csomópont carbon 1934b0b038d1 5 napja felhasználónév/csomópont-web-alkalmazás legfrissebb d64d3505b0d2 1 perce

A tároló indítása képből a következő paranccsal történik:

$ docker run -p 49160:8000 -d felhasználónév/node-web-app

Ez a példa létrehoz egy tárolót a „felhasználónév/csomópont-web-alkalmazás” képből, és azonnal elindul. A 8000-es alkalmazásport elérhető a helyi gépen (localhost), és ahhoz, hogy "kint" elérhető legyen, a 49160-as portra "továbbküldik". Bármilyen szabad portot választhat, ezen kívül lehetőség van az alkalmazás továbbítására is. port "ahogy van" a " -p 8000:8000" opció megadásával.

A következő parancs kiadásával láthatja, hogy a tároló fut:

$ docker ps # Példa ID IMAGE COMMAND ... PORTS ecce33b30ebf felhasználónév/csomópont-web-alkalmazás:legújabb npm indítás ... 49160->8000

A tároló többféle paranccsal kezelhető, megadva ennek a tárolónak az azonosítóját:

$ docker szünet ecce33b30ebf - szüneteltesse az ecce33b30ebf azonosítójú tárolót
$ docker önéletrajz ecce33b30ebf - önéletrajz konténer azonosítója ecce33b30ebf
$ docker stop ecce33b30ebf - stop konténer azonosítóval ecce33b30ebf
$ docker rm ecce33b30ebf - távolítsa el a tárolót (ez eltávolítja az alkalmazás által a tárolón belül létrehozott összes adatot)

2013 márciusában Soloman Hykes bejelentette egy nyílt forráskódú projekt elindítását, amely később Docker néven vált ismertté. A következő hónapokban a Linux-közösség határozottan támogatta, és 2014 őszén a Microsoft bejelentette, hogy konténereket kíván bevezetni a Windows Server 2016 rendszerbe. A WinDocks, amelynek társalapítója, kiadta a program független verzióját. nyílt forráskód A Docker for Windows 2016 elején, az SQL Server első osztályú konténer-támogatására összpontosítva. A konténerek gyorsan a figyelem középpontjába kerülnek az iparban. Ebben a cikkben áttekintjük a konténereket és azok használatát az SQL Server fejlesztői és DBA-k által.

Konténerszervezési alapelvek

A konténerek határozzák meg új módszer alkalmazáscsomagolás, a felhasználó és a folyamat elkülönítésével kombinálva, több bérlős alkalmazásokhoz. Különféle konténer-megvalósítások Linuxra és Windowsra már évek óta léteznek, de a Windows Server 2016 megjelenésével megérkezett a de facto Docker-szabvány. Ma a Docker-tároló API és formátuma támogatott az AWS nyilvános szolgáltatásokon, az Azure-on, a Google Cloudon, valamint az összes Linux- és Windows-disztribúción. A Docker elegáns keretének fontos előnyei vannak.

  • Hordozhatóság. A tárolók alkalmazásszoftver-függőségeket tartalmaznak, és változatlanul futnak a fejlesztő laptopján, egy megosztott tesztszerveren és bármely közszolgáltatáson.
  • A konténerek ökoszisztémája. A Docker API az ipari innováció középpontjában áll a figyelésre, naplózásra, adattárolásra, fürtök irányítására és felügyeletére szolgáló megoldásokkal.
  • Kompatibilitás a közszolgáltatásokkal. A tárolók mikroszolgáltatási architektúrához, méretezéshez és átmeneti munkaterhelésekhez készültek. A tárolóedényeket úgy tervezték, hogy tetszés szerint eltávolítsák és kicseréljék, és ne javítsák vagy frissítsék.
  • Gyorsaság és gazdaságosság. A tárolók létrehozása néhány másodpercet vesz igénybe; hatékony több előfizetős támogatás biztosított. A legtöbb felhasználó számára a virtuális gépek száma három-ötszörösére csökken (1. ábra).

SQL Server tárolók

Az SQL Server tíz éve támogatja a nevesített példányok többszörös bérlését, tehát mi az értéke az SQL Server-tárolóknak?

A lényeg az, hogy az SQL Server konténerek praktikusabbak sebességük és automatizálásuk miatt. Az SQL Server-tárolók elnevezett példányok, adatokkal és beállításokkal, másodpercek alatt kiépítve. Az SQL Server-tárolók másodpercek alatti létrehozásának, törlésének és cseréjének képessége praktikusabbá teszi őket a fejlesztés, a minőségbiztosítás és az alábbiakban tárgyalt egyéb használati esetek szempontjából.

Gyorsaságukkal és automatizáltságukkal az SQL Server Containerek ideálisak a termelésfejlesztési és minőségellenőrzési környezetben. A csapat minden tagja izolált tárolókkal dolgozik egy megosztott virtuális gépen, ami három-ötszörösére csökkenti a virtuális gépek számát. Ennek köszönhetően jelentős megtakarítást érünk el a virtuális gépek karbantartásán és a Microsoft licencek költségein. A tárolók könnyen integrálhatók a Storage Area Network (SAN) tömbökbe tárolóreplikák és adatbázis-klónok segítségével (2. ábra).

Egy 1 TB-os csatolt adatbázis egy tárolóban kevesebb mint egy perc alatt példányosodik. Ez jelentős előrelépés a dedikált elnevezett példányokkal vagy virtuális gépekkel az egyes fejlesztők számára biztosított kiszolgálókhoz képest. Az egyik vállalat nyolcmagos kiszolgálót használ akár 20 400 GB-os SQL Server-konténer kiszolgálására. Korábban az egyes virtuális gépek kiépítése több mint egy órát vett igénybe, a tárolópéldányok kiépítése pedig két perc alatt történik. Így sikerült 20-szorosára csökkenteni a virtuális gépek számát, ötszörösére csökkenteni a processzormagok számát, és drámai módon csökkenteni a Microsoft licencekért járó költségeket. Emellett megnövekedett rugalmasság és válaszkészség az üzleti életben.

SQL Server-tárolók használata

A tárolók meghatározása Dockerfile-szkriptek segítségével történik, amelyek konkrét lépéseket biztosítanak a tároló létrehozásához. Az 1. ábrán látható Dockerfile az SQL Server 2012-t határozza meg a tárolóba másolt adatbázisokkal és egy SQL Server-parancsfájllal a kiválasztott táblák maszkolásához.

Minden tároló több tucat adatbázist tartalmazhat segédfájlokkal és naplófájlokkal. Az adatbázisok a MOUNTDB paranccsal másolhatók és futtathatók egy tárolóban, vagy csatlakoztathatók.

Minden tároló egy, a gazdagéptől elkülönített privát fájlrendszert tartalmaz. A 2. ábrán a tároló az MSSQL-2014 és a venture.mdf használatával készült. Egyedi ContainerID és konténerport jön létre.


2. ábra: SQL Server 2014 tároló és venture.mdf

Az SQL Server tárolók biztosítják új szint teljesítmény és automatizálás, de viselkedésük teljesen megegyezik a szokásos elnevezett terekkel. Az erőforrás-kezelés megvalósítható az SQL Server Instrumentation használatával vagy a konténer erőforrás-korlátozásaival (3. ábra).

Egyéb alkalmazások

A konténerek a legáltalánosabb eszközei a fejlesztési és minőségbiztosítási környezet megszervezésének, de más felhasználási módok is kialakulóban vannak. A katasztrófa utáni helyreállítási tesztelés egyszerű, de ígéretes használati eset. Mások közé tartozik a belső SQL Server-környezet konténerbe helyezése olyan régebbi alkalmazásokhoz, mint például az SAP vagy a Microsoft Dynamics. A konténeres háttérrendszer olyan munkakörnyezetet biztosít, amely támogatja és jelenlegi karbantartás. Az értékelő tárolók a tartós adattárolókkal rendelkező éles környezetek támogatására is szolgálnak. A következő cikkek egyikében részletesen szólok a tartós adatokról.

A WinDocs elkötelezett amellett, hogy webes felületen keresztül még könnyebbé tegye a konténerek használatát. Egy másik projekt az SQL Server-tárolók DevOps-ban való migrálására vagy a Jenkins vagy Team City alapú CI/CD-folyamatokkal való folyamatos integrációjára összpontosít. Ma már mindenen megismerkedhet a konténerek használatával Windows kiadásai 8 és Windows 10, Windows Server 2012 vagy Windows Server 2016, az SQL Server 2008-tól kezdődő összes kiadás támogatásával a WinDocks Community Edition példányát használva (https://www.windocks.com/community-docker-windows).

A konténertechnológia feltárása
Windows Server 2016

A Windows Server 2016 egyik figyelemre méltó új funkciója a tárolók támogatása. Ismerjük meg őt jobban

A modern rendszerek már régóta eltávolodtak az egy operációs rendszer - egy szerver elvétől. A virtualizációs technológiák lehetővé teszik a szervererőforrások hatékonyabb felhasználását, lehetővé téve több operációs rendszer futtatását, elválasztva azokat egymástól és egyszerűsítve az adminisztrációt. Aztán ott voltak a mikroszolgáltatások, amelyek lehetővé teszik az elszigetelt alkalmazások önálló, könnyen kezelhető és méretezhető összetevőként történő telepítését. A Docker mindent megváltoztatott. Az alkalmazás környezettel együtt történő szállításának folyamata annyira egyszerűvé vált, hogy a végfelhasználót érdekli. A tárolón belüli alkalmazás úgy működik, mintha egy teljes értékű operációs rendszert használna. A virtuális gépekkel ellentétben azonban nem töltik be saját másolataikat az operációs rendszerről, a könyvtárakról, a rendszerfájlokról stb. A tárolók egy elszigetelt névteret kapnak, amelyben minden szükséges erőforrás elérhető az alkalmazás számára, de nem lehet kilépni. Ha módosítania kell a beállításokat, akkor csak a fő operációs rendszertől való eltérések kerülnek mentésre. Ezért a konténer a virtuális gépekkel ellentétben nagyon gyorsan elindul, és kevésbé terheli a rendszert. A konténerek hatékonyabban használják fel a szerver erőforrásait.

Tárolók a Windows rendszeren

A Windows Server 2016 rendszerben a meglévő virtualizációs technológiák – Hyper-V és Server App-V virtuális alkalmazások – mellé a Windows Server Containers konténerek támogatása is bekerült, a Container Management verem absztrakciós rétegen keresztül valósítva meg, amely megvalósítja az összes szükséges funkciót. A technológiát még a Technical Preview 4-ben jelentették be, de azóta sok minden változott az egyszerűsítés irányába, és a korábban írt utasítások el sem olvashatók. Ugyanakkor kétféle "saját" tárolót javasoltak - Windows és Hyper-V konténereket. És valószínűleg egy másik fő lehetőség a Docker-eszközök használata a PowerShell-parancsmagok mellett a tárolók kezelésére.

A Windows-konténerek elvileg a FreeBSD Jailre vagy a Linux OpenVZ-re hasonlítanak, egy magot használnak az operációs rendszerrel, amelyet a többi erőforrással (RAM, hálózat) együtt megosztanak egymás között. Az operációs rendszer fájlok és szolgáltatások az egyes tárolók névterébe vannak leképezve. Az ilyen típusú konténerek hatékonyan használják fel az erőforrásokat, csökkentik a többletköltséget, és ezáltal lehetővé teszik az alkalmazások sűrűbb elhelyezését. Mivel a konténer alapképeinek egy magja van egy csomóponttal, a verzióiknak meg kell egyeznie, különben a működés nem garantált.

A Hyper-V tárolók egy további szigetelőréteget használnak, és minden tárolóhoz saját mag és memória tartozik. Az elkülönítést az előző típustól eltérően nem az operációs rendszer kernel, hanem a Hyper-V hypervisor végzi (a Hyper-V szerepkört igényli). Az eredmény kevesebb többletterhelést jelent, mint a virtuális gépek, de nagyobb elszigeteltség, mint a Windows-tárolók. Ebben az esetben a tároló futtatásához ugyanazzal az operációs rendszer kernellel kell rendelkeznie. Ezek a tárolók Windows 10 Pro/Enterprise rendszeren is telepíthetők. Különösen érdemes megjegyezni, hogy a tároló típusát nem a létrehozáskor, hanem a telepítéskor választják ki. Vagyis bármely tároló futtatható Windows-ként és Hyper-V változatként is.

A tárolóban lévő operációs rendszerként a kivágott Server Core vagy Nano Server kerül felhasználásra. Az első a Windows Sever 2008-ban jelent meg, és nagyobb kompatibilitást biztosít a meglévő alkalmazásokkal. A második még lecsupaszítottabb, mint a Server Core, és úgy tervezték, hogy monitor nélkül fusson, lehetővé téve a szerver futtatását a lehető legkisebb konfigurációban a Hyper-V, fájlszerver (SOFS) és felhőszolgáltatások használatához, 93%-kal kevesebbet igényelve. tér. Csak a legtöbbet tartalmazza szükséges alkatrészeket(.Net CoreCLR-rel, Hyper-V, Clustering stb.).

A tároláshoz a VHDX merevlemez képformátumot használják. A tárolók, akárcsak a Docker esetében, képekként kerülnek mentésre a tárolóban. Ráadásul mindegyik nem egy teljes adathalmazt ment el, hanem csak a létrehozott kép és az alapkép közötti különbségeket. És az indításkor minden szükséges adat kivetül a memóriába. A Virtuális kapcsoló a tároló és a fizikai hálózat közötti hálózati forgalom kezelésére szolgál.