Mitä ovat kontit ja Docker?

 

Kontit (englanniksi “containers”) ovat suosittu teknologia erityisesti “sovellusalusta palveluna”-ympäristöissä (Platform as a Service, PaaS). Viime vuosina kontit ovat levittäytyneet myös sovelluskehittäjien työasemille. Seuraavassa tutustumme lyhyesti, mitä kontit ovat ja miten ne eroavat virtuaalikoneista.

Kontit

Kontti on käyttöjärjestelmän tarjoama karsina, jossa ajettava sovellus, tarvittavat kirjastot, massamuisti ja verkkoyhteydet eristetään muusta ympäristöstä. Erona kevyempiin ratkaisuihin, kuten Python virtualenv, on se, että eristys on tarvittaessa niin täydellinen, etteivät kontit tiedä toisistaan mitään. Ero raskaampiin eristysratkaisuihin, kuten virtuaalikoneisiin, on se, että konttia ei tarvitse käynnistää kuten tietokonetta kaikkine oheislaitteineen. Siinä missä virtuaalikone virtualisoi kaiken laitteistosta alkaen käyttöjärjestelmää myöten, virtualisoi kontti vain käyttöjärjestelmätasolla sovellusten ajoympäristön.

Nopea ympäristöjen ylös- ja alasajo on vain yksi konttien etu. Toinen hyöty tulee lokeroinnista. Kontin avulla voidaan sovellus tai palvelu paketoida itsenäiseksi kokonaisuudeksi ilman huolta sovellusten välisistä konflikteista. Esimerkiksi, jos halutaan ajaa Vue.js:llä ja Node.js:llä tehtyä käyttöliittymää ja pyörittää taustalla Javalla tehtyä bisneslogiikkaa ja C++:lla tehtyä tietokantaa, voidaan kaikki kolme paketoida omiksi itsenäisiksi konteikseen ja laittaa ne juttelemaan keskenään virtuaalisten kansioiden ja virtuaaliverkon yli. Yksikään kontti ei sotke toisen riippuvuuksia ja jokainen ympäristö kirjastoineen saa elää vain tarkoitettua sovellusta varten. Jos esimerkiksi Node.js:ää pitää päivittää tietoturvaongelmien takia, voidaan kirjastoja päivittää vapaasti ilman huolta, että mikään muutos odottamattomasti vaikuttaisi muissa konteissa ajettaviin toimintoihin. Lisäksi kontteja on helppo siirtää palvelinalustalta toiselle sekä monistaa vastaamaan kasvanutta käyttöä.

Sovelluskehittäjän koneella kontti varmistaa sen, että jokaisella projektin jäsenellä on käytössään identtinen ympäristö kehittää ja testata tuotetta.

Keveyden ja verrattain yksinkertaisen rakenteensa ansiosta on konteilla helppo tehdä valmiita pohjia. Niitä voi nopeasti monistaa ja “periä” uusia kontteja luotaessa. Tällä vältetään toistuvat ympäristöjen asennukset ja konfiguroinnit. Omien konttien teossa voi keskittyä vain tarvittavien asioiden asentamiseen muiden tekemien standardipohjien päälle.

Docker

Docker-nimen kuulee yleisimmin lausuttavan konteista puhuttaessa yksinkertaisesti siksi, että Docker tarjoaa käyttäjäystävällisen kokemuksen konttien käyttöön. Vaikka kontit ovat teknologiana olleet olemassa jo 1990-luvulta saakka, onnistui Docker Inc. tuotteistamaan konseptin noin kymmenen vuotta sitten, jonka jälkeen “Docker-kontti” on ollut enemmän tai vähemmän kontin synonyymi.

Docker Inc. -yritys tarjoaa keskitetyn palvelun, Docker Hubin, josta käyttäjät voivat vapaasti ladata valmiiksi tehtyjä konttien aihioita. Aihiot sisältävät tyypillisesti erilaisten Linux-jakeluiden pohjalta rakennettuja ympäristöjä. Yleensä Docker-kontit ovatkin kontteja, jotka rakennetaan määrittämällä konfiguraatio jo olemassa olevalle kontille, joka ladataan Docker Hubista.

Tämä julkaisu käynnistää lyhyen juttusarjan, jonka avulla on tarkoitus esimerkkien kautta tutustuttaa kontteihin ja tuoda esille niiden etuja. Seuraavassa osassa luomme ensimmäisen oman Docker-kontin käyttäen Docker Hubia ja Dockerin tarjoamia komentorivityökaluja.

Kirjoittaja on Ouron Senior Developer Matti Kärki

Valikko