Mikä on Docker ja mitä hyötyä siitä on?

Jos olet IT-alalla, olet varmasti kuullut sanan Docker. Jos muistelet, että kyse on takavuosien nuorison suosimasta kenkämerkistä, suosittelen lukemaan tämän kirjoituksen...

Docker on yksi keskeisimmistä teknologioista, joiden avulla IT-ympäristön uudistamista voidaan nopeuttaa.

Kontteja

Kerron tässä kirjoituksessa, mikä Docker oikein on. Kerron myös helppotajuisesti, mitä hyötyä Dockerista on liiketoiminnalle, IT-yksikölle ja sovelluskehitykselle.

Kun olet lukenut tämän kirjoituksen, ymmärrät perusteet Dockerista ja pystyt keskustelemaan sujuvasti Dockerin hyödyistä niin johtajien, IT:n kuin sovelluskehittäjien kanssa ja olet todennäköisesti innostunut tutkimaan asiaa hieman tarkemmin.

Aloitetaan siitä, mikä Docker on.

Mikä Docker on?

Docker on tuoteperhe, jonka avulla voi sekä laittaa sovelluksia kontteihin että ajaa kontteja. Docker tarjoaa tehokkaan ajoympäristön kontteihin sijoitetuille sovelluksille.

Jos kaipaat muistin virkistystä konttiteknologian perusteista tai et ole vielä lukenut kirjoitustani Konttiteknologia – mitä kontit ovat ja mitä hyötyä niistä on, niin voi olla hyvä lukea se ensin.

Fyysinen palvelin, jonka päällä on käyttöjärjestelmä ja konttien ajoympäristö (docker), jonka päällä kaksi konttia.

Docker kehitettiin alun perin avoimen koodin projektina Linuxille, mutta nykyään sen kehitystä vetää yritys nimeltä Docker Inc, joka tarjoaa tuotteesta niin ilmaista (Docker Community) kuin maksullistakin (Docker Enterprise) versiota.

Koska Docker tarjoaa eristetyn ajoympäristön sovelluksille, se voi tuntua hyvin samanlaiselle kuin virtuaalipalvelimet ovat. Äkkiä ajateltuna ne muistuttavatkin toisiaan. Lähempää tarkasteltuna konttitekniikka eroaa hyvin paljon palvelinvirtualisoinnista.

Kun virtuaalipalvelimissa sovelluksilla on aina oma käyttöjärjestelmänsä, virtuaalipalvelimet on eristetty toisistaan täysin. Palvelin myös varaa resursseja jatkuvasti.

Docker-kontit taas eivät lähtökohtaisesti tarvitse omaa käyttöjärjestelmää, vaan ne jakavat yhden yhteisen käyttöjärjestelmän. Kontteihin on sijoitettu vain sovelluksen tarvitsemat komponentit (sidonnaisuudet). Ne eivät myöskään varaa resursseja etukäteen, vaan pyytävät käyttöjärjestelmältä resursseja vain varsinaista ajoa varten.

Oheisessa kuvassa on kuvattu Docker-kontin suhdetta palvelimeen, jolla sitä ajetaan. Kuvan konttien ajoympäristö tarkoittaa tässä tapauksessa Dockeria.

Dockerin perusidea on siis pitää sovelluksen tarvitsema minimiajoympäristö yhdessä paketissa, joka on perinteistä käyttöjärjestelmää kevyempi.

Sovellusta voi siirtää helposti kehittäjän kannettavalta testiympäristöön, joka voi sijaita julkisessa pilvipalvelussa ja sieltä edelleen tuotantoon, joka voi puolestaan olla organisaation oma konesali.

Sovelluksien siirrot ovat helpompia kuin virtuaalipalvelimiin perustuvassa ympäristössä, koska koko sovellus ja sen tarvitsemat lisäkomponentit kulkevat mukana yhtenä tiedostona, jota voidaan ajaa suoraan erilaisissa ympäristöissä.

Mitä hyötyä Dockerista sitten on? Katsotaan sitä seuraavaksi.

Mitä hyötyä Dockerista on?

Oheiseen laatikkoon on tiivistetty tärkeimmät Dockerin tarjoamat tärkeimmät hyödyt.

Dockerin tärkeimmät hyödyt pähkinänkuoressa:

  • Docker nopeuttaa IT-ympäristön modernisointia ja vauhdittaa digitalisaatiota
  • Dockerin avulla voi tehostaa IT-infran käyttöä ja säästää IT-kuluissa
  • Docker mahdollistaa nopeamman sovelluskehityksen ja uusien versioiden julkaisemisen.

Mietitään aluksi, mitä hyötyä Dockerista on liiketoiminnan näkökulmasta. Tämä on eniten digitalisaatiosta kiinnostuneen johtajan näkökulma. Seuraavaksi kerron, mitä hyötyä Dockerista on IT:n kannalta. Tämä osuus käsittelee infrasta vastaavan IT-yksikön näkökulmaa.

Lopuksi tarkastelen, mitä hyötyä Dockerista on sovelluskehittäjän kannalta.

Aloitetaan liiketoiminnan hyödyistä.

Mitä hyötyä Dockerista on liiketoiminnalle?

Tutkimusyhtiö Forresterin mukaan 60% haastatelluista yritysten johtajista uskoi, että he eivät ole pystyneet digitalisoimaan toimintaansa suunnitelmiensa mukaan.

Ehkä sinäkin olet jo huomannut, että digitalisaatio tapahtuu käytännössä hitaammin mitä alun perin on suunniteltu ja toivottu. Konttiteknologia ja Docker tuotteena on keino lisätä IT:n ketteryyttä ja muutosnopeutta.

  • Docker mahdollistaa nopeamman ja ketterämmän sovelluskehityksen kuin perinteinen palvelimiin perustuva sovelluskehitys. Docker Incin mukaan sovelluksia voidaan saada jopa 3 x aiempaa nopeammin markkinoille.
  • Dockerin ja konttiteknologian avulla voidaan tehostaa IT-infran käyttöä ja laskea IT-kuluja. Docker Incin mukaan IT-kuluja voidaan laskea konttien osalta jopa 40%.

Tilaa ILMAINEN opas

IT-strategian laatimiseksi

Tilaa ilmainen opas, jossa kerron, miten voit laatia käytännöllisen ja liiketoimintalähtöisen IT-strategian.

 

 

Mitä hyötyä Dockerista on IT-yksikölle?

Docker on yksi pilvisiirtymän mahdollistaja. Koska Docker paketoi sovellukset standardiyksiköihin, niiden siirtely oman konesalin ja pilven välillä on helpompaa kuin perinteisten sovellusten.

Docker tehostaa IT-infran käyttöä jopa 40% verrattuna perinteiseen ympäristöön. Perinteisessä IT-infrassa käytetään virtuaalipalvelimia erottamaan sovelluksia toisistaan. Jokainen sovellus tarvitsee oman käyttöjärjestelmän, joka vaatii lisenssin ja resursseja. Dockerista on siis seuraavia hyötyjä:

  • Kun sovellukset pakataan virtuaalipalvelinten sijaan Docker-kontteihin, niille ei tarvitse varata yhtä paljon muistia ja prosessorikapasiteettia kuin aiemmin. Tämän vuoksi sama sovellusympäristö pyörii konttien päällä pienemmällä raudalla kuin virtuaalipalvelimien päällä pyörivä sovellusympäristö.
  • Docker-kontit käynnistyvät sekunneissa, kun palvelimet käynnistyvät minuuteissa. Tämän vuoksi kontteja ei tarvitse pitää käynnissä yhtä paljon kuin palvelimia, vaan niitä voi käynnistää tarpeen mukaan. Tämän vuoksi jatkuvasti varattu palvelinkapasiteetti on pienempi, kun käytetään konttitekniikkaa.
  • Kun sovellukset pakataan virtuaalipalvelinten sijaan Docker-kontteihin, erillisten lisensoitavien palvelinten määrä vähenee. Jos esimerkiksi palvelimella ajaa 100 konttia, ei jokaista konttia tarvitse lisensoida erikseen. Riittää, että lisensoi alustapalvelimen.
  • Dockerin avulla voit modernisoida perinteisiä sovelluksia ilman, että niitä tarvitsee koodata kokonaan uudelleen. Myös perinteisiä sovelluksia voi laittaa konttiin eli kontittaa. Kontit eivät välttämättä vaadi sovelluksen rakenteen muuttamista.

Mitä hyötyä Dockerista on sovelluskehittäjälle?

Docker standardoi sovelluksen ajoympäristön, jonka vuoksi kehitysympäristö on täsmälleen saman näköinen kuin testi- tai tuotantoympäristö.

  • Koska eri ympäristöt ovat keskenään samannäköisiä, on sovellusten siirto kehityksestä testiin ja tuotantoon paljon suoraviivaisempaa kuin perinteisessä palvelimiin perustuvassa rakenteessa.
  • Dockerin avulla on mahdollista nopeuttaa sovelluskehityksen sykliä. Kun uusi koodi on helpompi viedä testiin ja siitä tuotantoon, voidaan uusia ominaisuuksia ja koodipäivityksiä julkistaa aiempaa nopeammin.
  • Docker mahdollistaa täysiverisen kehitysympäristön pyörittämisen itse, ilman muiden apua, omalla kannettavalla. Erilaisia ympäristöjä saadaan pystyyn nopeasti, ilman pelkoa kuluista, joita julkipilven palvelujen käyttäminen generoi ainakin jossain määrin.
  • Docker mahdollistaa uusien teknologioiden opettelun helposti, koska julkisissa, ilmaisissa hakemistoissa (Docker repository) on ladattavissa tuhansia erilaisia tuotekokoonpanoja ja konfiguraatioita sisältäviä kontteja.

Nyt olemme käsitelleet Dockerin hyötyjä. Ei ole ihme, että kontit ja Docker kiinnostaa tällä hetkellä todella monia organisaatioita.

Jotta pääsisit liikkeelle Docker-kokeiluissa, käsitellään seuraavaksi, mitä osia dockerissa on, ja miten Docker toimii.

Lue eteenpäin, niin saat tietää, mitä komponentteja Dockerissa on.

Miten Docker toimii?

Tässä osuudessa kerron erittäin lyhyesti, miten Docker toimii ja mitä komponentteja tai käsitteitä Dockeriin liittyy. Dockerissa on seuraavia peruskomponentteja: Docker image, Docker File, Registry, Container, Engine ja Orchestrator. Käydään lyhyesti läpi kukin niistä. Listan alla olevasta kuvasta näet periaatteen, miten osat liittyvät toisiinsa.

  • Docker Image on yksi tiedosto, joka sisältää sekä sovelluksen, että sen tarvitsemat ohjelmistot ja käyttöjärjestelmän. Image on periaatteessa itsenäinen kokonaisuus, jota voi siirrellä paikasta toiseen. Windowsissa yksi image voi sisältää käyttöjärjestelmän (esimerkiksi Windows Server Core), sovelluspalvelimen (esim. IIS Web-palvelin), ASP.NET-komponentit ja varsinaisen sovelluksen ja sen tarvitsemat konfiguraatiot. Tämä kaikki on siis pakattu yhteen tiedostoon. Tiedosto sisältää kaiken tarvittavan, mitä tämän esimerkin web-sovelluksen ajaminen vaatii.
  • Docker File on konfiguraatiotiedosto, joka kertoo, miten Docker image rakennetaan.
  • Registry on Docker-tiedostojen (image) säilytyspaikka. Tällaisia säilytyspaikkoja tai varastoja on sekä julkisia että yksityisiä. Tunnetuin julkinen varasto on Docker Hub, jossa on kymmeniä tuhansia valmiita imageja, joita voi ladata ilmaiseksi. Varasto voi olla myös yksityinen, jolloin siihen on laitettu vain yrityksen itse tekemiä imageja.
  • Docker Container eli Docker-kontti on imagen pohjalta käynnistetty sovellusyksikkö eli kontti. Yhdestä imagesta voi käynnistää monta rinnakkaista konttia. Kontille ei aseteta etukäteen tiettyjä resursseja, vaan se pyytää alla olevalta käyttöjärjestelmältä resursseja tarpeen mukaan.
  • Docker Engine on ohjelma, joka pyörittää palvelimella ajettavia kontteja. Esimerkiksi Windowsissa kyse on yhdestä taustalla ajettavasta palvelusta. Tätä ohjelmaa hallitaan Docker APIn kautta, jota voi ohjata Windowsissa esim. PowerShellin kautta. Docker Enginen avulla voi sekä rakentaa kontteja eli pakata sovelluksen tarvitsemia kokonaisuuksia imageksi että ajaa niitä.
  • Orchestrator eli automaattinen hallinta on ohjelma, jonka avulla kontteja voidaan hallita silloin, kun tarvitaan useampi palvelin ajamaan kontteja. Yksi esimerkki tällaisesta on Docker Swarm, joka on Dockerin orkestrointi-ohjelma. Sen avulla voidaan muodostaa useiden palvelimien klustereita ja jakaa kuormia palvelimien välillä. Yksi suosittu orkerstrointisovellus on Kubernetes. Se ansaitsee oman kirjoituksen, joten en käsittele sitä tässä artikkelissa.
Kontit, Docker engine, Docker hub, powershell, image

Kun käyttäjä haluaa käynnistää uuden kontin imagesta, kone tarkistaa aluksi, löytyykö tarvittava image paikallisesti. Jos se löytyy, kontti käynnistetään välittömästi. Jos taas imagea ei löydy, lähdetään sitä etsimään halutusta varastosta (registry). Jos sellainen löytyy, image ladataan paikalliseksi ja kontti käynnistetään tämän jälkeen.

Mitä seuraavaksi?

Jos haluat alkaa kokeilemaan asioita käytännössä, käy lataamassa koneellesi Docker Desktop.

Jos et ole jo lukenut, lue konttiteknologiaa käsittelevä kirjoitukseni. Tähän aiheeseen liittyy myös mikropalveluita käsittelevä kirjoitukseni Mitä mikropalvelut ovat?

Jos olet kiinnostunut Dockerista Windows-ympäristössä, tilaa uutiskirjeeni, koska julkaisen lähiaikoina kirjoituksen, joka käsittelee Dockeria nimenomaan Windows-ympäristön kannalta. Jos olet kiinnostunut siitä, tilaa uutiskirjeeni, niin saat ilmoituksen uusista kirjoituksista sähköpostiisi.

Tilaa uutiskirjeeni

Saat tiedon uusista artikkeleista suoraan sähköpostiisi.

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

Vieritä ylös