Kontit ovat olleet muotisana jo vuosia... mutta mitä ne tarkalleen ovat?
Säilöt ovat tapa käyttää virtualisoituja sovelluksia tietokoneellasi, jotka ovat samankaltaisia kuin virtuaalikoneita, mutta käyttävät erilaisia taustatekniikoita. Ne voivat olla monimutkaisia ymmärtää, mutta ne ovat välttämättömiä kaiken suorittamisen kannalta Minecraft palvelimia Googlelle. Ja aiomme näyttää sinulle, kuinka ne asetetaan.
Käytämme Linuxia, käyttöjärjestelmää, joka on rakennettu siirrettävyyteen, modulaarisuuteen ja vakauteen. Linuxia on kaikessa palvelimista mikroaaltouuneihin ja videopelikonsoleihin. Säilöt eivät rajoitu toimimiseen Linuxissa, mutta niiden taustalla olevat tekniikat sopivat parhaiten Linuxille ja toimivat parhaiten siinä. Jos olet uusi Linuxin käyttäjä, suosittelemme tutustumaan meidän aloittelijan opas ennen sukellusta.
Ovatko kontit virtuaalikoneita?
Säiliöt voivat olla monimutkainen aihe, mutta on parasta aloittaa yhdestä keskeisestä kohdasta: Säiliö on ei virtuaalinen kone. Virtuaalikone on simuloitu versio tietystä laitteistosta ja sen ohjelmistosta, joka toimii niin kutsutussa hypervisorissa. Jos olet joskus käyttänyt ohjelmistoja, kuten VirtualBox tai
multipass, olet käyttänyt hypervisoria.Hypervisor toimii yleensä joko omana käyttöjärjestelmänä (tunnetaan tyypin 1 hypervisorina) tai toisen käyttöjärjestelmän, kuten Windowsin tai Ubuntun (tyypin 2 hypervisor), rajoissa. Hypervisorin vastuulla on esittää vieraskäyttöjärjestelmälle simuloidut laitteistot, joita se tarvitsee toimiakseen. Täysi käyttöjärjestelmä voi sitten toimia päällä. Tämä sisältää kaiken simuloidusta suorittimesta ja RAM-muistista tietoväyliin, levyasemiin tai verkkosovittimiin. Tämä simulointi on laskennallisesti kallista, joten virtuaalikoneilla on tyypillisesti merkittäviä yleiskustannuksia.
Joten mikä on kontti?
Säilö on virtuaalikoneen kaltainen siinä mielessä, että se sisältää ja suorittaa ohjelmistoja eristetyssä ympäristössä isäntäjärjestelmässä. Kontit kuitenkin korvaavat perinteisen laitteiston virtualisoinnin tukemalla suoraan isäntäkäyttöjärjestelmään. Säilöt jakavat isäntäkäyttöjärjestelmän kirjastot ja binaarit, ja niillä on vain ne resurssit ja riippuvuudet, joita tarvitaan niiden sisältämän tietyn sovelluksen suorittamiseen. Tämä tarkoittaa, että ei tarvita täyttä käyttöjärjestelmää säilöä kohden, koska kaikki säilöt toimivat a järjestelmä voi jakaa yhden isäntäkäyttöjärjestelmän säilyttäen samalla virtuaalisen erottelun koneita.
Säilöillä on pääsy isäntäkäyttöjärjestelmään acontainer enginen kautta, joka hallitsee käynnissä olevia säilöjä ja hallitsee niiden pääsyä taustalla olevaan käyttöjärjestelmään. Tämä voi sisältää suojauksen vahvistamisen säilöjen välillä ja käyttöjärjestelmätiedostojen tai verkkoyhteyksien käyttöoikeuden myöntämisen tai epäämisen.
Mitä kompromisseja on konttien käytössä?
Vaikka virtuaalikoneet ja säiliöt ovat samankaltaisia, säiliöiden käyttämisessä on haittoja. Ensinnäkin virtuaalikoneita pidetään turvallisempina, koska virtuaalikoneen "pakoon" tarkoitettu hyökkäyspinta on huomattavasti pienempi ja vaikeampi tunkeutua. Säiliö ei ehkä sovellu esimerkiksi haittaohjelmien testaamiseen.
Säilöjen käytön suurin etu on, että ne ovat kevyitä. Koko käyttöjärjestelmän virtualisoinnin välttäminen tarkoittaa minimaalisia käynnistysaikoja ja järjestelmän ylimääräisiä kustannuksia. Tämä tarkoittaa, että useita säiliöitä voi ajaa yhdellä isännällä, mikä ei olisi mahdollista virtuaalikoneiden kanssa.
Koska säiliöt eivät vaadi täyttä käyttöjärjestelmää, ne voidaan helposti pakata pienempiin kuviin ja jakaa. Vaikka koko virtuaalikoneen kuva voi helposti olla kymmeniä gigatavuja, säilöissä voi olla jopa 15 kt: n kokoisia kuvia. Tämä tekee astioiden jakamisesta ja käyttämisestä erittäin helppoa. Osoitamme tämän suorittamalla joitain yksinkertaisia esimerkkisäiliöitä Dockerissa.
Dockerin asennus
Siinä on paljon teoriaa, joten mennään käytäntöön. Näytämme sinulle, kuinka säilön määrittäminen, asennamme Dockerin Ubuntu 23.10:een ja käytämme sitä yksinkertaisen Hello World -säilön suorittamiseen. Vaiheemme on testattu virtuaalikoneella, mutta voit myös käynnistää kaksoiskäynnistyksen Windows-tietokoneeltasi tai käyttää a loistava kannettava Linuxille.
Dockerista on nopeasti tullut de facto konttityökalu. Vaikka muita työkaluja on olemassa, Docker on laajalti hyväksytty ja sopii kaikkiin paitsi vaativimpiin sovelluksiin. Siellä on dokumentaatio eri tavoista asentaa Docker, mutta käytämme mukavuusasennusohjelmaa. Tämä komento lataa komentosarjan osoitteesta get.docker.com paikalliselle koneellesi:
$ curl -fsSL https://get.docker.com -o get-docker.sh
Voit sitten suorittaa tämän skriptin asentaaksesi Dockerin. Voit varmistaa, että Docker on asennettu oikein, tarkistamalla version:
$ sudo sh ./get-docker.sh
Sen jälkeen versiotarkistus:
$ sudo docker version
Voit myös varmistaa, että telakointipalvelu toimii taustalla:
$ sudo systemctl status docker
Sen pitäisi merkitä "aktiivinen (käynnissä)" vihreällä tekstillä, kuten alla olevassa kuvakaappauksessa korostetaan. Docker-moottorin versio tulisi myös tulostaa virheettömästi.
Ajetaan yksinkertainen esimerkki
Nyt kun Docker on asennettu, voit käyttää sitä säilön kuvan lataamiseen. Säilökuvat ovat paljolti virtuaalikoneiden ISO: n kaltaisia, paitsi että ne ovat yleensä pienempiä ja helpompia rakentaa. Lataa yksinkertainen hello-world-säiliökuva seuraavalla komennolla:
$ sudo docker pull hello-world
Kun kuva on ladattu, voit tarkistaa luettelon järjestelmääsi ladatuista kuvista seuraavasti:
$ sudo docker images
Sinun pitäisi nyt nähdä hello-world ladattu. Huomaa erittäin pieni koko (13Kt testikoneellamme) sekä sen tunniste. Kuvan tunniste on käytännössä sen versio. Oletuksena Docker lataa kuvan uusimman version. Suorita säilö tämän kuvan perusteella käyttämällä:
$ sudo docker run hello-world: latest
Tämä tulostaa Dockersin hello-world-pelin, joka toimii hyvin pienestä C-ohjelmasta (jonka voit tarkistaa GitHub).
Onnittelut; olet ajanut ensimmäisen konttisi! Tässä tapauksessa ohjelma on tulostanut tuloksensa ja lopettanut suorituksensa. Säiliö on nyt kuollut eikä ole enää käynnissä.
Kuinka pitää kontit hengissä
Perussäilön suorittamisen jälkeen voimme nyt rakentaa monimutkaisemman esimerkin, joka ei poistu välittömästi tehtävän suorittamisen jälkeen. Säiliöt rakennetaan usein yhden prosessin ympärille, mikä voi synnyttää useampia prosesseja. Kun tämä perusprosessi päättyy, koko säiliö poistuu sen mukana. Tämä saattaa kuulostaa rajoitukselta, mutta se on itse asiassa hyvin samanlainen kuin se, kuinka init-järjestelmät täydessä Linux-ytimen toiminnassa.
Pysyvän esimerkin suorittamiseksi voimme vetää kuvan Nginxille, joka on verkkopalvelin, jota käytetään isännöimään merkittävää osaa maailman verkkosivustoista. Valitsimme Nginxin tähän esimerkkiin, koska se on yksinkertainen, ei vaadi edistyneitä määrityksiä ja on kevyt. Lataa uusin Nginx-kuva seuraavalla komennolla:
$ sudo docker pull nginx
Olemme lisänneet -s merkitse tässä määrittääksesi portin edelleenlähetyksen säilöstä isäntäkäyttöjärjestelmään. Porttia 80 käytetään salaamattomaan HTTP- (eli verkko-) liikenteeseen. Tämän avulla voit käyttää säilöä isäntäkoneeltasi:
$ sudo docker run -p 80:80 nginx
Tämä komento suoritetaan päätteessäsi liitetyssä tilassa, mikä tarkoittaa, että säilö on kirjaimellisesti liitetty terminaaliin, joten kaikki lokit tulostetaan sinne. Kun säiliö on käynnistynyt, avaa se http://localhost selaimessasi. Näet alla olevan kaltaisen Nginxin tervetulonäytön:
Nginx-säiliö on nyt käynnissä konttimoottorisi sisällä. Vaikka Nginx toimii liitetyssä tilassa, se jatkaa toimintaansa vain niin kauan kuin se on auki. Voit poistua Nginx-säiliöstä painamalla Ctrl + C terminaalissasi.
Kuinka ajaa säilöjä taustalla
Jos haluat suorittaa Nginxin taustalla, lisäämme toisen lipun, -d, irrotettua tilaa varten. Tämä käynnistää terminaalistasi irrotetun kontin, mikä tarkoittaa, että se on taustalla. Esimerkiksi:
$ sudo docker run -d -p 80:80 nginx
Voit luetella käynnissä olevia säiliöitä järjestelmässä. Huomaa, kuinka Nginx-säilösi toimii nyt taustalla ja sille on määritetty tunnus.
$ sudo docker ps
Käynnissä oleva taustasäiliö voidaan tappaa sen tunnuksella. Saatat myös huomata, että säilölle on annettu nimi. Jos sitä ei ole määritetty, Docker antaa kullekin säilölle satunnaisen yksilöllisen nimen.
$ sudo docker kill
Voit kuitenkin testata tätä mielenkiintoisemmilla kuvilla. Tarjolla on runsaasti tarjolla Docker-keskitin, joka toimii julkisten konttikuvien keskusvarastona.
Sukellus syvemmälle konteilla
Tämä on ollut lyhyt johdatus kontteihin. Säiliöt voivat olla rajattoman monimutkaisia, mutta ne ovat perustavanlaatuinen rakennuspalikka pitkälle hajautetuille järjestelmille, jotka käyttävät suurta osaa nykyaikaisesta Internetistämme. Tämä voima ei kuitenkaan poista niiden käyttöä pienemmässä mittakaavassa. Konttien ja Dockerin perusteiden tuntemus voi olla portti hyödyllisten paikallisten palvelujen, kuten Minecraft palvelin tai Plex vanhalla tietokoneella.