Dockerin ja DevOpsin perusteet · Oppitunti

Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla

Pienentäkää lopullisia näköistiedostoja valitsemalla minimaaliset pohjanäköistiedostot, poistamalla koontityökalut ja käyttämällä distroless- tai scratch-pohjia nopeampiin latauksiin ja pienempään hyökkäyspintaan.

Oppitunti 4/413 vaihetta

Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla on ilmainen Dockerin ja DevOpsin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Dockerin ja DevOpsin perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.

Miksi imagen koko on tärkeä

Pienemmät imaget latautuvat nopeammin, käynnistyvät nopeammin, maksavat vähemmän tallentaa ja sisältävät hyökkääjille vähemmän paketteja hyödynnettäviksi. Koon optimointi parantaa sekä suorituskykyä että tietoturvaa.

Kevyen pohjaimagen valitseminen

Oletus-imaget ovat käteviä mutta raskaita. Vaihtamalla node:20-imagen (noin 1 Gt) imageseen node:20-slim tai node:20-alpine voitte vähentää kokoa heti sadoilla megatavuilla.

FROM node:20-slim

Alpinen kompromissit

Alpine on pienikokoinen, mutta käyttää glibc:n sijaan musl libc -kirjastoa, mikä rikkoo toisinaan natiivibinaarit. Testatkaa huolellisesti; joskus -slim on turvallisempi pieni vaihtoehto.

FROM python:3.12-alpine

RUN-kerrosten yhdistäminen

Jokainen RUN lisää yhden kerroksen. Ketjuttakaa toisiinsa liittyvät komennot ja tehkää siivous samassa kerroksessa, tai poistetut tiedostot paisuttavat edelleen aiempaa kerrosta.

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

Käyttäkää .dockerignore-tiedostoa

.dockerignore-tiedosto pitää tarpeettomat tiedostot poissa build-kontekstista: esimerkiksi node_modules-kansion, .git-hakemiston ja lokit. Pienempi konteksti tarkoittaa nopeampia buildeja ja pienempiä kerroksia.

# .dockerignore
.git
node_modules
*.log

Monivaiheisen buildin kertaus

Suorittakaa buildi yhdessä vaiheessa kaikkien kääntäjien kanssa ja kopioikaa sitten COPY --from-määrityksellä vain artefakti puhtaaseen viimeiseen vaiheeseen. Työkaluketju ei päädy lopulliseen imageen.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app

FROM alpine:3.20
COPY --from=build /src/app /app

Distroless-imagen esittely

Distroless-imaget sisältävät vain sovelluksen ja sen ajonaikaisen ympäristön – eivät shelliä, paketinhallintaa tai ylimääräisiä binaareja. Ne ovat pieniä ja vaikeita hyödyntää väärin.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Ei shelliä, ei ongelmaa

Distroless-imagessa ei ole shelliä, joten RUN-komennot ja docker exec sh eivät toimi. Tehkää kaikki valmistelut aiemmissa vaiheissa; käyttäkää :debug-tagia, kun imagen sisälle on päästävä tarkistamaan asioita.

scratch-pohja

Täysin staattisille binaareille (Go, Rust) FROM scratch sisältää vain suoritettavan tiedoston – kokonaiskoko on usein muutama megatavu.

FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Saavutettujen hyötyjen mittaaminen

Vertailkaa kokoja komennolla docker images ja tarkistakaa suurimmat kerrokset komennolla docker history. Optimoikaa ensin suurimmat kerrokset.

docker history myapp:latest

Kiinnittäkää versiot, älkää käyttäkö latest-tagia

Tietyn tagin tai digest-arvon kiinnittäminen tekee buildeista toistettavia ja estää yllättävät koon kasvut, kun upstreamin latest muuttuu.

FROM node:20.11.1-slim

Pikatarkistus

Mikä distroless-imagessa on erityistä?

Kertaus

Osaatte nyt pienentää imageja tehokkaasti:

  • Valitkaa pohjaksi -slim, -alpine, distroless tai scratch
  • Ketjuttakaa ja siivotkaa RUN-kerrokset; käyttäkää .dockerignore-tiedostoa
  • Monivaiheiset buildit jättävät työkaluketjun pois lopullisesta imagesta
  • Mitatkaa kokoa komennolla docker history ja kiinnittäkää versiot

Pienemmät imaget tarkoittavat nopeampia ja turvallisempia julkaisuja.

Aloita maksutta

Opi Dockerin ja DevOpsin perusteet tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Dockerin ja DevOpsin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla”?

Pienentäkää lopullisia näköistiedostoja valitsemalla minimaaliset pohjanäköistiedostot, poistamalla koontityökalut ja käyttämällä distroless- tai scratch-pohjia nopeampiin latauksiin ja pienempään hy… Harjoittelet Dockerin ja DevOpsin perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Dockerin ja DevOpsin perusteet-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Dockerin ja DevOpsin perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Dockerin ja DevOpsin perusteet-oppitunnilla?

Kyllä. Jokainen Dockerin ja DevOpsin perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Monivaiheiset koonnit tehokkuutta varten
  2. Koontivälimuistin hyödyntäminen
  3. Dockerfile-tiedostojen tietoturvan parhaat käytännöt
  4. Näköistiedoston koon pienentäminen Slim- ja Distroless-pohjilla
← Takaisin: Dockerin ja DevOpsin perusteet