Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

Konttien ymmärtäminen

Moduuli 9: Docker ja docker compose · Lukuaika: 10 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat selittää, mikä kontti on, miten se eroaa virtuaalikoneesta, missä kontin tiedot säilyvät ja milloin Docker on palvelimellasi järkevä valinta.

Keskeiset käsitteet: image, kontti, kerros, registry (Docker Hub), tag, digest, namespaces, cgroups, jaettu ydin, haihtuva tiedostojärjestelmä, volume, bind mount, portin julkaiseminen, virallinen image

Miksi kontteja?

Oletetaan, että haluat ajaa VPS:lläsi tilasivua, joka näyttää, toimiiko verkkosivustosi. Ohjelma on kirjoitettu Node.js:llä, se tarvitsee tietyn Node.js-version ja lisäksi parisataa kirjastoa. Ilman kontteja asennat kaiken tämän palvelimellesi verkkopalvelimen ja tietokannan rinnalle. Vuoden päästä haluat toisen ohjelman, joka tarvitsee eri Node.js-version. Silloin alkaa palapeli.

Kontti ratkaisee tämän. Ohjelman tekijä toimittaa ohjelman ja kaiken, mitä se tarvitsee, yhtenä pakettina: imagena. Palvelimellasi käynnistät imagen konttina. Ohjelma näkee omat tiedostonsa, oman Node.js:nsä ja omat kirjastonsa, eikä se riitele palvelimesi muiden osien kanssa. Etkö tarvitse sitä enää? Poista kontti ja image, eikä hakemistoihin /usr tai /etc jää mitään.

Docker on tunnetuin työkalu imagejen hakemiseen ja konttien ajamiseen. Vaihtoehtojakin on (Podman, containerd itse), mutta käsitteet ovat kaikkialla samat.

Image, kontti ja registry

Kolme sanaa, jotka tulevat vastaan jatkuvasti:

  • Image: vain luku -muotoinen pohja, jossa on tiedostojärjestelmä (ohjelma, kirjastot, asetukset) ja käynnistettävä komento. Image koostuu kerroksista: peruskerros (esimerkiksi riisuttu Debian), sen päällä kerros, jossa on Node.js, ja sen päällä itse ohjelma. Kaksi imagea, joilla on sama peruskerros, jakavat sen levylläsi.
  • Kontti: imagen käynnissä oleva (tai pysäytetty) ilmentymä. Vain luku -kerrosten päälle kontti saa oman ohuen kirjoituskerroksen. Yhdestä imagesta voi käynnistää vaikka kymmenen konttia.
  • Registry: paikka, jossa imaget ovat, kuten Docker Hub (docker.io) tai GitHubin registry (ghcr.io). Docker hakee imagen komennolla docker pull.

Imagen nimi näyttää tältä:

louislam/uptime-kuma:2
caddy:2
vaultwarden/server:latest

Kaksoispisteen jälkeinen osa on tag: version nimilappu. Tag voi muuttua: caddy:2 osoittaa tänään eri buildiin kuin kolmen kuukauden päästä, kun uusi 2.x julkaistaan. Jos haluat lukita tarkasti, mitä imagea ajat, käytä digestiä: sisällön sormenjälkeä, kuten caddy@sha256:.... Se ei muutu koskaan. Tag latest on vain tekijän valitsema nimi. Se ei automaattisesti tarkoita "uusinta vakaata versiota", ja siksi se on huono valinta, jos haluat tietää, mitä on käynnissä.

Ei virtuaalikone

Kontti muistuttaa pientä virtuaalikonetta, mutta se ei ole sellainen. Ero on tärkeä tietoturvan kannalta.

Virtuaalikone (kuten VPS:si)Kontti
YdinOma ydinJakaa isäntäkoneen ytimen
KäynnistyminenSekunneista minuutteihin, koko käyttöjärjestelmäYleensä sekunnissa, vain ohjelma
ErotteluHypervisorin avulla, laitteistotasollaYtimen avulla: namespaces ja cgroups
KokoGigatavujaUsein kymmenistä satoihin megatavuihin

Kontti on käytännössä tavallinen prosessi palvelimellasi, jonka ydin sijoittaa eristettyyn ympäristöön:

  • namespaces antavat prosessille oman näkymän tiedostoihin, prosesseihin, verkkoon ja käyttäjiin. Kontissa ohjelma näyttää olevan prosessi numero 1, eikä se näe palvelimesi muita osia;
  • cgroups rajoittavat, kuinka paljon suoritinta ja muistia se saa käyttää.

Koska kaikki kontit jakavat saman ytimen, erottelu on löyhempi kuin kahden VPS:n välillä. Ytimen haavoittuvuus tai kontti, jolle on annettu liikaa oikeuksia, voi vaikuttaa isäntäkoneeseen. Siksi tämän moduulin säännöt: aja vain imageja, joihin luotat, älä anna konteille enempää oikeuksia kuin tarvitaan, äläkä koskaan liitä konttiin polkua /var/run/docker.sock tai / (oppitunnit 9.3 ja 10.2).

Missä tietosi säilyvät?

Tämä on aloittelijoiden klassinen ansa. Kontin kirjoituskerros on haihtuva: kun poistat kontin (esimerkiksi päivityksen yhteydessä, oppitunti 9.4), kaikki, mitä ohjelma siihen kirjoitti, katoaa. Siksi säilytettävät tiedot kuuluvat kontin ulkopuolelle:

  • Volume: tallennuspaikka, jota Docker hallinnoi itse (hakemistossa /var/lib/docker/volumes/). Annat sille nimen, esimerkiksi uptime-kuma, ja liität sen kontin hakemistoon: -v uptime-kuma:/app/data.
  • Bind mount: palvelimesi tavallinen hakemisto, jonka liität konttiin: -v /srv/vaultwarden:/data. Kätevä, koska näet tiedostot suoraan ja saat ne helposti mukaan varmuuskopioon (moduuli 8).

Kontin, jolla on hyvät volumet, voi heittää pois ja luoda uudelleen menettämättä mitään. Juuri näin päivittäminen toimii: haet uuden imagen, poistat vanhan kontin ja käynnistät uuden kontin samoilla volumeilla. Lisää siksi volumet varmuuskopiointisuunnitelmaasi (oppitunti 8.1).

Porttien julkaiseminen

Kontilla on oma verkkonsa. Verkko-ohjelmaan, joka kuuntelee kontissa porttia 3001, ei pääse palvelimen ulkopuolelta ennen kuin julkaiset portin: -p 3001:3001 (isäntäportti:konttiportti). Huomaa: ilman osoitetta Docker julkaisee portin palvelimesi kaikissa osoitteissa, eli 0.0.0.0 ja [::]. Se tarkoittaa, että portti on avoinna koko internetiin, ja Docker hoitaa tämän ufw:n ohi (oppitunti 9.3). Turvallinen tapa on julkaista loopbackiin, -p 127.0.0.1:3001:3001, ja laittaa eteen käänteinen välityspalvelin (reverse proxy) https:llä (oppitunti 9.4).

Kuka imagen tekee?

Image on jonkun muun tekemää ohjelmistoa, joka voi toimia palvelimellasi rootina. Tarkista siksi, kuka sen on tehnyt:

  • Docker Official Images (kuten caddy, nginx, postgres) ylläpitää Docker yhdessä tekijöiden kanssa;
  • tekijän omat imaget (kuten louislam/uptime-kuma ja vaultwarden/server) tunnistat nimestä, jonka projektin verkkosivusto mainitsee;
  • tuntemattomien julkaisemat imaget, joiden nimet muistuttavat oikeita: älä käytä.

Käytä aina nimeä, joka on projektin virallisella verkkosivustolla, älä ensimmäistä, jonka haku tuo esiin.

Milloin kyllä, milloin ei?

Docker on kätevä ohjelmille, jotka tekijä toimittaa imagena, palveluille, jotka haluat voida nopeasti poistaa tai siirtää, ja silloin, kun haluat ajaa rinnakkain useita ohjelmia, joilla on erilaiset vaatimukset. Palvelimesi perustaan (SSH, palomuuri, päivitykset) et käytä kontteja. Yksittäinen verkkosivusto, jossa on nginx ja PHP pakettilähteestä (oppitunti 7.2), toimii mainiosti ilman Dockeria. Kontti tuo lisäkerroksen, joka sinun on ymmärrettävä ja pidettävä ajan tasalla. Käytä sitä, kun siitä on hyötyä.

Yhteenveto

  • Image on kerroksista koostuva vain luku -pohja; kontti on sen käynnissä oleva ilmentymä, jolla on oma kirjoituskerros.
  • Kontit jakavat isäntäkoneen ytimen ja ne on eristetty namespacesien ja cgroupsien avulla: kevyempiä kuin virtuaalikone, mutta löyhemmin erotettuja.
  • Kirjoituskerros on haihtuva: pysyvät tiedot kuuluvat volumeen tai bind mountiin, ja ne kuuluvat varmuuskopioosi.
  • Tag voi muuttua, digest ei; latest kertoo vähän.
  • Julkaise portit osoitteeseen 127.0.0.1 ja käytä vain tekijän omia tai virallisia imageja.

Tietovisa (quiz)

1. Mikä on tärkein ero kontin ja virtuaalikoneen välillä?



2. Ajat konttia ilman volumea. Ohjelma tallentaa asetuksensa hakemistoon /app/data. Poistat kontin käynnistääksesi uuden version. Mitä asetuksille tapahtuu?



3. Miksi image:latest ei ole hyvä valinta tuotantoympäristössä?



4. Käynnistät komennon docker run -d -p 8080:80 nginx. Mistä osoitteista porttiin 8080 pääsee?



5. Haku tuo esiin imagen vaultwarden-server-official/vaultwarden. Mitä teet?



Tehtävä

Tehtävä O9.1: Kontti vai ei? Valitse kaksi ohjelmaa, joita haluat ajaa palvelimellasi (tai käytä esimerkkinä Uptime Kumaa ja WordPress-sivustoa). Selvitä kummastakin ohjelmasta, toimittaako tekijä virallisen imagen ja millä nimellä, minkä tagin valitsisit, mikä hakemisto sisältää pysyvät tiedot ja mitä porttia ohjelma kuuntelee. Selitä sen jälkeen, ajaisitko ohjelmaa kontissa vai pakettilähteestä, ja miksi.

Tehtävä O9.1: Kontti vai ei?

Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.




Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…