Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti login nodes and storage services are planned to remain available until 15 October 2026.

Konttikuvien pitäminen pieninä

On tärkeää pitää konttikuvat pieninä. Pienemmät kuvat latautuvat nopeammin, mikä lyhentää Kubernetesin Podien käynnistysaikaa ja parantaa skaalaustoimintojen reagointikykyä. Ne käyttävät myös vähemmän tallennustilaa rekistereissä ja klusterin noodeilla, mikä on tärkeää monen käyttäjän ympäristöissä, kuten Rahdissa. Lisäksi pienempi kuva sisältää vähemmän paketteja ja tiedostoja, mikä pienentää mahdollista hyökkäyspintaa ja vähentää vanhentuneiden tai haavoittuvien komponenttien mukaan päätymisen riskiä. Tämä helpottaa ylläpitoa ja parantaa kokonaisvaltaista tietoturvaa. Koska pienemmät kuvat sisältävät vain sen, mitä sovellus todella tarvitsee, ne ovat ennakoitavampia, helpompia debugata ja yksinkertaisempia toistaa eri ympäristöissä. Rahdin rekisterissä kuvan kokoraja on 5 GiB.

Käytä minimaalista pohjakuvaa

Aloita pienimmästä kuvasta, joka silti tarjoaa tarvitsemasi ominaisuudet. Kuvat kuten Alpine, UBI-minimal tai Distroless sisältävät vain olennaiset komponentit, mikä pienentää lopullisen kuvan kokoa merkittävästi ja vähentää hyökkäyspintaa. Esimerkki:

FROM alpine:3.19

Käytä monivaiheisia koonteja

Koosta sovelluksesi yhdessä vaiheessa, joka sisältää kääntäjät ja koontityökalut, ja kopioi vain lopullinen binaari tai tarvittava tuloste paljon pienempään ajonaikaiseen vaiheeseen. Tämä estää suurten työkaluketjujen päätymisen lopulliseen kuvaan. Esimerkki:

FROM golang:1.21 AS builder
WORKDIR /app
COPY ../../images .
RUN go build -o app

FROM alpine:3.19
COPY --from=builder /app/app /usr/local/bin/app
CMD ["app"]

Käytä .dockerignore-tiedostoa

.dockerignore-tiedoston avulla voit sulkea pois tiedostoja, kuten versionhallinnan metadataa, dokumentaatiota, artefakteja ja muita tarpeettomia tiedostoja. Tämä pienentää koontikontekstia ja pitää ne poissa kuvastasi. Se nopeuttaa koonteja ja estää ei-toivotun sisällön lisäämisen. Esimerkki:

.git
node_modules
tests/
docs/
*.log

Asenna vain se, mitä sovellus tarvitsee

Työkalujen, debuggainten, komentotulkkien tai kirjastojen lisääminen “varmuuden vuoksi” kasvattaa kuvan kokoa ja tietoturvariskiä. Pysy siinä vähimmäisjoukossa riippuvuuksia, joita sovelluksesi todella tarvitsee. Esimerkki:

Huono (paisunut kuva):

RUN apt-get update && apt-get install -y curl vim net-tools

Parempi:

RUN apt-get update && apt-get install -y curl

Jokainen RUN-ohje luo uuden kerroksen. Jos asennat paketteja yhdessä kerroksessa ja siivoat ne toisessa, ei-toivottu sisältö jää aiempiin kerroksiin. Paketinhallinnat jättävät jälkeensä metadataa, välimuisteja ja väliaikaisia tiedostoja. Niiden siivoaminen samassa kerroksessa, jossa ne luodaan, estää niiden pysyvän tallentumisen kuvaan. Komentojen yhdistäminen estää tämän. Esimerkki:

Huono (paisunut kuva):

RUN apt-get update
RUN apt-get install -y python3
RUN rm -rf /var/lib/apt/lists/*

Parempi (kaikki yhdessä kerroksessa):

RUN apt-get update && apt-get install -y python3 \
    && rm -rf /var/lib/apt/lists/*

Pidä data poissa kuvasta

Kuvien tulisi sisältää vain sovelluksen ajonaikainen ympäristö. Tämä tarkoittaa, että sovelluksen suorittamiseen tarvittavaa dataa ei tule lisätä kuvaan. Näin kuva ei ainoastaan pysy pienempänä, vaan vältämme myös uudelleenkoonnin, kun data muuttuu. Data voidaan tallentaa ulkoiseen taltioon, joka liitetään Podiin käynnistyksen yhteydessä, tai se voidaan tallentaa etäobjektitallennukseen, kuten Altaaseen, ja ladata käynnistyksen aikana tai tarvittaessa pyynnöstä.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta