fbpx

Näin modernisoit Windows-ympäristösi Dockerin avulla

Haluaisitko tehostaa teidän IT-infran käyttöänne tai säästää lisenssikustannuksissa?

Onko tavoitteenasi, että pystyisitte hyödyntämään pilvipalveluita aiempaa enemmän?

Kerron tässä kirjoituksessa, miten voit onnistua tässä käyttämällä Docker-kontteja Windows-ympäristössä.

Windows, Docker, Microsoft, konttiteknologia, kontit

Docker-konttien avulla voit tehostaa IT-infran käyttöä ja voit säästää joissain tilanteissa lisenssikustannuksissa.

Dockerin avulla myös Azuren pilvipalvelujen käyttö voi olla helpompaa.

IT-maailman kontit toimivat samaan tapaan kuin reaalimaailman rahtikontit. Ne standardoivat työkuormien ajoympäristön. Konttien avulla työkuormia eli sovelluksia voi siirtää aiempaa helpommin ympäristöstä toiseen.

Konttien avulla sovelluskehittäjän rakentama sovellus voidaan siirtää sellaisenaan konesaliin palvelimelle tai vaikka Azuren pilveen.

Docker on tuote, jolla voi rakentaa ja ajaa kontteja Windows-ympäristössä.

Jos haluat lukea enemmän Dockerin ja konttiteknologian perusteista, lue kirjoitukseni Mikä on Docker ja mitä hyötyä siitä on?  ja Konttiteknologia – mitä kontit ovat ja mitä hyötyä niistä on?

Tässä kirjoituksessa kerron, miten Dockeria käytetään Windows-ympäristössä. Kun olet lukenut tämän kirjoituksen, ymmärrät

  • Millaisia Docker-kontteja Windows-ympäristössä voi ajaa
  • Miten Windows Server 2016 ja 2019 eroavat Docker-tuen suhteen
  • Miten valitaan oikea Windows Server -tyyppi Dockerille
  • Mitä Azure-palveluita voit käyttää Docker-konttien kanssa

Windows-ympäristössä on kaksi erilaista Docker-konttityyppiä

Alun perin Docker on kehitetty avoimen koodin ympäristöihin. Microsoft on kuitenkin tehnyt yhteistyötä Dockerin kehittäjien kanssa, ja siksi se tukeekin Docker-kontteja sekä palvelimissa että työasemissa.

Esimerkiksi Windows Server 2016 ja 2019 sekä Windows 10 tukevat Docker-kontteja.  Ne sisältävät Docker Enterprise -ohjelman lisenssin, jonka vuoksi Dockeria ei tarvitse erikseen lisensoida.

Windows-alustalla voi ajaa ainoastaan Windows-kontteja. Jos on tarve ajaa Linux-kontteja, vaatii se siis Linux-palvelimen. Tämä johtuu siitä, että Docker-kontit käyttävät alustapalvelimensa käyttöjärjestelmää hyväkseen.

Windows 10 on tarkoitettu sovelluskehittäjien työkaluksi, eikä siinä saa ajaa lisenssiehtojen mukaan tuotantoympäristöä. Tuotantoympäristöjä varten Docker-kontit pitää siis siirtää palvelinkäyttöjärjestelmän päälle.

Miksi Windows 10:n päällä ei saa ajaa kontteja tuotantoympäristössä? Syy liittyy käyttöjärjestelmien ytimen eli kernelin eroihin. Koska Windows 10:ssä ja Windows Servereissä on erilainen kernel, peitetään tämä ero konteilta ajamalla Windows 10 –kontteja hyper-V-virtualisoinnin päällä.

Windows 10:ssä siis käytetään konttien ajamiseen kevennettyä versiota Hyper-V:stä. Microsoft haluaa palvelinkäyttöjärjestelmistä sille kuuluvat lisenssimaksut, ja tämän vuoksi Windows 10:a ei saa käyttää tuotantoympäristössä.

Windowsin päällä voi ajaa kahta eri tyyppistä Docker-konttia, jotka poikkeavat merkittävästi toisistaan.

Windows tukee kahta erilaista konttityyppiä: Windows Server -kontteja ja Hyper-V-kontteja.

Windows server -kontit

Windows Server -kontit muistuttavat hyvin paljon avoimen koodin docker-kontteja. Windows Server -kontit jakavat kernelin eli palvelimen käyttöjärjestelmän ytimen. Tämä on tehokas tapa käyttää resursseja.

Koska kaikki kontit käyttävät samaa käyttöjärjestelmän ydinosaa eli kerneliä, samalle palvelimelle ei voi laittaa mitä kontteja tahansa, koska niiden tulee olla käyttöjärjestelmän komponenttien kannalta yhteensopivia.

Windows Server docker kontti

Koska Windows server -kontit jakavat käyttöjärjestelmän ytimen eli kernelin, ne eivät ole täysin itsenäisiä.

Tämä tapa käyttää kontteja ei ole yhtä tietoturvallinen kuin virtuaalipalvelin. Windows server -konttien välillä ei siis ole täydellistä eristystä tietoturvan suhteen. Tämä on tärkeää pitää mielessä, kun suunnittelee palvelinympäristön modernisoimista Docker-konttien avulla.

Windows server -kontteina kannattaa siis ajaa kontteja, jotka kuuluvat samaan tietoturva-alueeseen.

Koska Windows server -kontit tarvitsevat vain yhden käyttöjärjestelmän (alustapalvelimen käyttöjärjestelmän), ei käyttöjärjestelmälisenssejäkään tarvita useampia.

Jos käyttää sovellusten ajoympäristönä Windows Server -kontteja, voi palvelinlisensseissä säästää merkittävästi verrattuna siihen, että ajaisi kaikkia sovelluksia omilla virtuaalipalvelimilla.

Hyper-V-kontit

Hyper-V-kontit eivät jaa yhteistä kerneliä, vaan jokaisella Hyper-V-kontilla on oma, pitkälle optimoitu käyttöjärjestelmänsä.

Tämä optimoitu käyttöjärjestelmä on hyvin kevyt ja se sisältää vain välttämättömät käyttöjärjestelmän toiminnot.

Koska kullakin Hyper-V-kontilla on oma käyttöjärjestelmäsä, ei sovellusten tarvitse olla vaatimuksiltaan samanlaisia.

Tietoturvamielessä hyper-V-kontit tarjoavat huomattavasti paremman eristyksen konttien välillä kuin käyttöjärjestelmän jakavat Windows Server –kontit.

Hyper-V Docker-kontti

Koska jokaisella Hyper-V-kontilla on oma käyttöjärjestelmänsä, on se myös raskaampi ajaa kuin Windows Server –kontti.

Huonona puolena Hyper-V-konttien kohdalla on niiden vaatima lisensointi. Koska jokaisella kontilla on oma käyttöjärjestelmänsä, tarvitaan jokaiselle kontille myös oma lisenssi. Tämän vuoksi Hyper-V-kontit eivät auta säästämään lisenssikuluissa, vaan niiden käyttöön pitää olla muita hyviä syitä.

Tilaa ILMAINEN opas

Opas pilvi konesali

Pilvistrategian laatimiseksi

Tilaa ilmainen 32-sivuinen opas, jossa kerron, mitä ottaa huomioon, kun haluat uudistaa IT-ympäristöä pilvipalvelujen avulla.

 

 

Valitse Windows Serveristä oikea käyttöjärjestelmäversio

Jotta elämä ei olisi liian yksinkertaista, on Microsoft julkaissut monia eri versioita palvelinkäyttöjärjestelmästä.

Sekä Windows Server 2016 että 2019 sisältävät Windows Server Core -käyttöjärjestelmän sekä kevyemmän Nano-version. Näiden erona on käyttöjärjestelmäasennuksen mukana asennettavien ohjelmistojen määrä.

Yleensä on fiksuinta käyttää kevyintä mahdollista käyttöjärjestelmäversiota, joka sisältää sovelluksien tarvitsemat ominaisuudet.

Windows Server Core sisältää enemmän ominaisuuksia kuin riisuttu Nano server. Seuraava kuva esittää käyttöjärjestelmäasennuksen kokoeroja Windows Server Coren ja Nano serverin välillä. Tarkemmin sanottuna kuvasta näkee, minkä kokoinen eri käyttöjärjestelmäversioiden Docker image on.

Windows Server 2016 ja Windows Server 2019

Lähde: https://stefanscherer.github.io/docker-on-windows-server-2019/

Kuvasta näkee myös, että Windows Server 2109 imaget ovat huomattavasti pienempiä kuin vanhemman Windows Server 2016 imaget. Docker-imaget ovat Windows Server 2019:ssä vain 25-30% vastaavasta Windows Server 2016 -imagesta.

Imagen koko vaikuttaa suoraan Docker imagen käynnistymiseen kuluvaan aikaan. Windows Server Coren imagen koko oli Windows Server 2016:ssa yli 10 GB, kun Windows Server 2019:ssä vastaavan imagen koko on alle 4 GB.

Nano Server on vielä Server Corea pienempi. Windows Server 2016:n nano server oli kokoluokaltaan 1,4 GB, kun Windows Server 2019:ssa voidaan päästä jopa alle 100 MB:n kokoon. Tämä alkaa olla kilpailukykyinen Linux-imagen kanssa.

Windows Server 2019 on siis houkuttelevampi käyttöjärjestelmä konttien kannalta, koska sitä on optimoitu kontteja silmällä pitäen.

Miksi pienempi image on parempi kuin suurempi? Yksi tärkeä syy on se, että pienempi image nousee pystyyn suurta nopeammin. Pienempi image on yleensä myös kevyempi ajaa, eli se kuluttaa vähemmän palvelinresursseja kuin raskaampi image. Lisäksi pienempi image on nopeampi kopioida ympäristöstä toiseen kuin suuri.

Kuvasta näkee myös, että Windows Server 2019 tarjoaa käyttöjärjestelmäversion, jota Windows Server 2016 ei tarjoa. Tämä käyttöjärjestelmäversio tarjoaa vielä Corea laajemman tuen eri sovelluksille.

Mistä sitten tietää, mikä käyttöjärjestelmäversio Docker-konttien ajamista varten tarvitaan? Käsitellään sitä seuraavaksi.

Ohjelmat tarvitsevat niille sopivan ajoympäristön ja kehitysalustan

Windows-sovellukset tarvitsevat tyypillisesti toimiakseen kehitysalustan, jonka nimi on .NET Framework.

.NET Framework sisältää mm. sovellusten tarjoaman ajoympäristön sekä monia ohjelmien tarvitsemia kirjastoja, jotka puolestaan tarjoavat erilaisia toiminnallisuuksia, joiden ominaisuuksia ohjelmoijat käyttävät hyödyksi.

Sovelluksen vaatima .NET FRamework vaikuttaa siihen, millaisen kontin sovellus vaatii

Hyödyntämällä valmiita toiminnallisuuksia ja kirjastoja ohjelmoinnissa säästetään paljon aikaa.

Koska tämä kehitysalusta on kehittynyt vuosien saatossa, eri aikakausien sovellukset käyttävät eri kehitysalustaa eli .NET Frameworkia. Tämä on tärkeää ymmärtää, kun mietitään, millä palvelinversiolla voidaan tarjota sovelluksen tarvitsemat palvelut.

Jos sovellus on yhtään vanhempi, se tarvitsee todennäköisesti vanhemman .NET Frameworkin. Tällöin tarvitaan käyttöjärjestelmäksi Windows Server Core, koska se tukee vanhempia .NET Frameworkeja.

Jos sovellus on uusi tai ihan hiljattain koodattu, se saattaa tukee uusinta .NET Corea, voidaan sen ajamiseen käyttää kevyttä Windows Nano Serveriä. .NET Core on myös ensimmäinen .NET-versio, joka tukee .NET-sovellusten ajamista muulla kuin Windows-palvelimella.

Käytä Azurea Docker-rekisterinä

Docker Hub on julkinen docker-rekisteri, johon imageja voi ladata. Rekisterin kautta imageja voi jakaa muille.

Microsoft tarjoaa Azuresta docker-rekisterin eli säilytyspaikan, joka sopii paremmin yrityksille ja muille organisaatioille.

Azuren tuotteen nimi on Azure Container Registry.

Docker image Azure

Docker-kontteja voi siis ladata Azureen ja jakaa niitä sitä kautta kehittäjille, ja kehittäjät voivat jakaa valmiita, sovellukset sisältäviä kontteja palvelinten operoijien kanssa.

Miksi kukaan haluaisi käyttää maksullista rekisteriä? Azuren Container Registry mahdollistaa organisaation sisäisen rekisterin, johon kukaan ulkopuolinen ei pääse käsiksi.

Azure Container Registryn avulla voidaan rajata sitä, ketkä kaikki näkevät ja voivat ladata organisaation rakentamia imageja.

Aja Docker-kontteja Azuressa ilman virtuaalipalvelimia

Docker-kontit vaativat aina alustakseen käyttöjärjestelmän ytimen, kernelin, jota kontit käyttävät hyväkseen. Omassa konesalissa tämä käyttöjärjestelmä voi olla joko fyysisen tai virtuaalisen palvelimen päällä.

Microsoft tarjoaa Azuressa palvelua nimeltä Azure Container Instances. Kyse on Microsoftin hallinnoimasta ajoympäristöstä, johon voi tuoda Docker-kontteja ilman, että asiakkaan tarvitsee hallita alustapalvelinta. Azure Container Instances tukee myös Linux-kontteja, joten Azuressa voi ajaa monenlaisia kontteja huolehtimatta alustapalvelimien ylläpidosta.

Azure Container Instancessa maksetaan palvelimen CPU:n ja muistin käytöstä sekuntipohjaista veloitusta. Tämä on hyvin kiinnostava tapa ajaa konttiympäristöä pilvessä.

Tilaa ILMAINEN opas

Opas pilvi konesali

Pilvistrategian laatimiseksi

Tilaa ilmainen 32-sivuinen opas, jossa kerron, mitä ottaa huomioon, kun haluat uudistaa IT-ympäristöä pilvipalvelujen avulla.

 

 

Miten konttiympäristöä hallitaan?

Olen käsitellyt tässä kirjoituksessa Windows Docker -ympäristön perusteista. Olen käsitellyt sitä, että Microsoft tarjoaa kahdenlaisia Docker-kontteja: Windows Server –kontteja ja Hyper-V-kontteja. Windows Server –kontit eivät vaadi konttikohtaista lisensointia, kun taas Hyper-V-kontit vaativat.

Sekä Windows Server 2016 että 2019 tukevat konttien ajamista. Windows Server 2019 tarjoaa kuitenkin huomattavasti pienempiä ja sitä kautta vähemmän resursseja vaativia kontteja kuin vanhempi Windows Server 2016.

Kontteja voi ajaa omassa konesalissa tai Azuressa. Azuressa voi hyödyntää myös Docker-konttien rekisteriä sekä ajaa kontteja ilman, että tarvitsee pitää itse yllä alustapalvelimia.

Miten kontteja sitten hallitaan? Yleinen vaihtoehto konttiympäristön hallintaan on Kubernetes. Käsittelen Kuberneteksen toimintaa ja hyötyjä tulevissa kirjoituksissa. Tilaa uutiskirjeeni, niin saat tiedon, kun julkaisen uusia kirjoituksia.

 

Disclaimer: Varmista lisenssiehdot Microsoftilta tai jälleenmyyjältäsi. Tässä kerrotut lisensointivaatimukset perustuvat kolmannen osapuolen lähteisiin. Jos havaitset artikkelissa virheitä lisensoinnin suhteen, olethan yhteydessä minuun lähettämällä sähköpostia osoitteeseen niklas at walleniusconsulting.fi.

 

Jos pidit tästä artikkelista, myös seuraavat artikkelit voivat olla kiinnostavia:

Tilaa uutiskirjeeni

Saat tiedon uusista artikkeleista suoraan sähköpostiisi.

Annan luvan tallentaa tietoni ja hyväksyn tietosuojakäytännön.

Vieritä ylös