-
Levykuvat
Konttikuvat
Konttikuva on sovelluksen paketoitu versio, joka sisältää kaiken, mitä se tarvitsee toimiakseen konttina: sovelluskoodin, sen riippuvuudet, kirjastot ja perusajoaikaympäristön. Kuvat rakennetaan kerran, ja niitä voidaan ajaa yhdenmukaisesti millä tahansa konttialustalla, kuten Rahdissa, tai jopa paikallisilla koneilla, mikä varmistaa, että sovellus käyttäytyy samalla tavalla eri ympäristöissä.
Konttikuvat rakennetaan kerroksellisella tiedostojärjestelmällä, jossa jokainen kerros edustaa muutosta kuvaan, kuten tiedostojen lisäämistä, pakettien asentamista tai asetusten muokkaamista. Kun nämä kerrokset pinotaan yhteen, ne muodostavat täydellisen konttikuvan. Kuva on muuttumaton, koska tiedostojärjestelmän eri kerrokset ovat vain luku -muodossa. Voit kuitenkin lisätä kuvaan uusia kerroksia ja siten luoda muokatun version omaan käyttöösi.
Kontti on kyseisen kuvan käynnissä oleva ilmentymä. Kun Kubernetes käynnistää Podin, se ottaa kuvan, lisää sen päälle kirjoitettavan kerroksen ja suorittaa sovelluksen eristetyssä ympäristössä. Samasta kuvasta voidaan luoda useita kontteja. Kontit ovat Docker-kuvien käynnissä olevia ilmentymiä.
Kuvan käynnistäminen
Näiden käsitteiden selventämiseksi käydään läpi muutamia esimerkkejä. Jotta voit ensin ajaa kuvia, sinun täytyy asentaa konttimoottori, kuten Docker tai Podman. Alla olevassa esimerkissä käytämme dockeriä, mutta samat komennot toimivat myös podmanilla. Suorita paikallisessa terminaalissa seuraava komento:
Sinun pitäisi nähdä samankaltainen tuloste:
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
88770be1d442: Pull complete
b89cf3ec7a3e: Pull complete
bb8ecb62799c: Pull complete
2254fb813b11: Pull complete
40b6fc5618c6: Pull complete
cf9a807fe41d: Pull complete
cc57e8335c98: Pull complete
Digest: sha256:553f64aecdc31b5bf944521731cd70e35da4faed96b2b7548a3d8e2598c52a42
Status: Downloaded newer image for nginx:latest
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/11/28 13:04:36 [notice] 1#1: using the "epoll" event method
2025/11/28 13:04:36 [notice] 1#1: nginx/1.29.3
2025/11/28 13:04:36 [notice] 1#1: built by gcc 14.2.0 (Debian 14.2.0-19)
2025/11/28 13:04:36 [notice] 1#1: OS: Linux 6.12.54-linuxkit
2025/11/28 13:04:36 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/11/28 13:04:36 [notice] 1#1: start worker processes
2025/11/28 13:04:36 [notice] 1#1: start worker process 29
2025/11/28 13:04:36 [notice] 1#1: start worker process 30
2025/11/28 13:04:36 [notice] 1#1: start worker process 31
2025/11/28 13:04:36 [notice] 1#1: start worker process 32
2025/11/28 13:04:36 [notice] 1#1: start worker process 33
2025/11/28 13:04:36 [notice] 1#1: start worker process 34
2025/11/28 13:04:36 [notice] 1#1: start worker process 35
2025/11/28 13:04:36 [notice] 1#1: start worker process 36
2025/11/28 13:04:36 [notice] 1#1: start worker process 37
2025/11/28 13:04:36 [notice] 1#1: start worker process 38
Tässä esimerkissä konttina käynnistettävän kuvan nimi on nginx. Ensin Docker tarkistaa, onko kuva välimuistissa paikallisesti. Jos ei ole, Docker yrittää hakea sen oletusetärekisteristään nimeltä Docker Hub. Lokit näyttävät eri kerrosten hakuprosessin. Tämän jälkeen Docker luo haetusta kuvasta uuden kontin määrittämällä kontin tiedostojärjestelmän (kuvakerrokset + kirjoitettava kerros) ja valmistelemalla eristetyt nimiavaruudet (prosessit, verkko jne.). Kun tämä on tehty, Docker käynnistää kontin pääprosessin (tässä kuvan tapauksessa NGINX-verkkopalvelimen). Käynnissä olevia kontteja voi tarkastella seuraavalla komennolla:
Tulosteen pitäisi olla samankaltainen kuin:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e6598415a0c nginx "/docker-entrypoint.…" 5 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, [::]:80->80/tcp cranky_carver
Näet tietoja käynnissä olevista konteista, mukaan lukien niiden luomiseen käytetyn kuvan.
Kuvatunnisteet
Kuvatunnisteet ovat nimiöitä, joilla tunnistetaan konttikuvan eri versioita. Tunniste lisätään kuvan nimen perään kaksoispisteellä erotettuna. Esimerkiksi merkinnässä nginx:1.25 tunniste on 1.25. Tunnisteiden avulla voit määrittää tarkasti, minkä version kuvasta haluat ajaa. Yleisiä käytäntöjä ovat versionumerot, julkaisunimet tai erityistunnisteet, kuten latest.
Jos et määritä tunnistetta, järjestelmä olettaa :latest, kuten edellisessä esimerkissä. Jos haluat käynnistää NGINX-palvelimen version 1.25, suorita yksinkertaisesti:
Kuvan arkkitehtuuri
Konttikuvat rakennetaan tietylle CPU-arkkitehtuurille, kuten amd64 (x86_64) tai arm64. Arkkitehtuuri määrittää, millaisella koneella kuvaa voidaan ajaa. Yhdelle arkkitehtuurille rakennettu kuva ei voi toimia toisella, koska kuvan sisältämät konekäskyt eivät ole yhteensopivia.
Kun konttikuvia rakennetaan tai haetaan, ajoaikaympäristö valitsee oikean arkkitehtuurin automaattisesti, jos saatavilla on monen arkkitehtuurin kuva. Muussa tapauksessa sinun on varmistettava, että kuvan arkkitehtuuri vastaa sitä ajavaa konetta.
Voit tarkistaa kuvan arkkitehtuurin seuraavalla komennolla:
Huomio
Muulla kuin amd64-arkkitehtuurilla rakennettuja kuvia ei voi ajaa Rahdissa. Rakenna ne uudelleen amd64-koneella tai muunna ne. Voit myös rakentaa ne uudelleen suoraan Rahdissa, kuten on kuvattu seuraavassa osiossa.
Kuvarekisterit
Kuvarekisteri on palvelu, jossa konttikuvia tallennetaan, hallitaan ja jaellaan. Rekisterit toimivat keskitettyinä repositorioina, joista Dockerin, Podmanin ja Kubernetesin kaltaiset moottorit hakevat konttien ajamiseen tarvittavat kuvat. Rekisterit on järjestetty repositorioihin, ja kukin repositorio voi sisältää useita kuvan tunnisteellisia versioita. Esimerkiksi nginx:1.25 ja nginx:latest ovat kaksi tunnistetta samassa nginx-nimisessä repositoriossa.
Julkiset rekisterit, kuten Docker Hub tai Quay.io, ylläpitävät kuvia, joita kuka tahansa voi hakea. Yksityiset rekisterit vaativat tunnistautumisen, ja niitä käytetään yleisesti sisäisten tai sensitiivisten kuvien tallentamiseen. Rahdin kaltaiset Kubernetes-klusterit voivat hakea kuvia sekä julkisista että yksityisistä rekistereistä, kunhan tarvittavat käyttöoikeustiedot on annettu. Lisäksi Rahti tarjoaa oman integroidun rekisterinsä, jonka avulla voit tallentaa, hakea ja julkaista kuviasi.
Open Container Initiative (OCI) -standardi
Open Container Initiative määrittelee avoimet standardit konttiteknologialle. Sen kaksi päämäärittelyä ovat:
-
OCI Image Format — miten konttikuvat on rakenteistettu.
-
OCI Runtime Format — miten kontit käynnistetään ja niitä ajetaan.
Koska Docker, Podman, Kubernetes ja useimmat rekisterit noudattavat OCI-standardeja, yhdellä työkalulla rakennetut kuvat voidaan tallentaa ja ajaa millä tahansa OCI-yhteensopivalla alustalla. Tämä varmistaa siirrettävyyden ja yhteensopivuuden eri konttiympäristöjen ja teknologioiden välillä.
Seuraavat vaiheet
- Kuvan luominen — rakenna omat kuvasi paikallisesti tai suoraan Rahdissa.
- Rahdin integroitu rekisteri — tallenna, hae ja julkaise kuvia Rahti-projektissasi.
- Parhaat käytännöt — suosituksia kuviesi pitämiseksi pieninä, turvallisina ja ylläpidettävinä.