Dockerin ja DevOpsin perusteet · Oppitunti

Koontivälimuistin hyödyntäminen

Optimoikaa Docker-koontien kesto ymmärtämällä ja hyödyntämällä tehokkaasti Dockerin koontivälimuistia.

Oppitunti 2/411 vaihetta

Koontivälimuistin hyödyntäminen on ilmainen Dockerin ja DevOpsin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

Nopeuta rakentamista välimuistin avulla

Docker-levykuvien rakentaminen voi kestää jonkin aikaa, etenkin monimutkaisten sovellusten kohdalla. Dockerin build-välimuisti on älykäs ominaisuus, joka nopeuttaa toimintaa huomattavasti!

Se toimii käyttämällä uudelleen aiempien koontiversioiden kerroksia, joten Dockerin ei tarvitse rakentaa kaikkea alusta joka kerta.

Koontivälimuistin hyödyntäminen — kuvitus 1

Rakentaminen kerros kerrokselta

Kun rakennatte Docker-levykuvan käyttämällä tiedostoa Dockerfile, Docker suorittaa jokaisen ohjeen rivi riviltä.

  • Jokainen ohje, kuten FROM, RUN tai COPY, luo levykuvaan uuden ”kerroksen”.
  • Nämä kerrokset pinotaan päällekkäin lopullisen levykuvan muodostamiseksi.

Dockerin välimuistin tarkistus

Ennen ohjeen suorittamista Docker tarkistaa, onko juuri kyseinen kerros rakennettu aiemmin. Se vertaa seuraavia asioita:

  • Itse ohjetta (esimerkiksi RUN apt update).
  • Tiettyjen ohjeiden ”kontekstia” (esimerkiksi COPY-ohjeella kopioitavia tiedostoja).

Jos vastaava kerros löytyy, Docker käyttää sitä välimuistista sen sijaan, että suorittaisi ohjeen uudelleen.

Välimuistin mitätöityminen

Välimuisti on hyödyllinen, mutta sitä ei käytetä aina. Jos Docker havaitsee muutoksen ohjeessa tai sen kontekstissa, kyseisen kerroksen ja kaikkien sitä seuraavien kerrosten välimuisti mitätöityy.

Tämä tarkoittaa, että Docker rakentaa uudelleen kyseisestä kohdasta alkaen ja ohittaa kaikki sen alapuolella olevat välimuistissa olevat kerrokset.

Ohjeiden älykäs järjestäminen

Jotta välimuistiosumia saadaan mahdollisimman paljon, järjestäkää Dockerfile-tiedoston ohjeet harvimmin muuttuvista useimmin muuttuviin.

  • Vakaat riippuvuudet ensin: Asentakaa järjestelmäpaketit tai sovelluksen riippuvuudet, jotka muuttuvat harvoin.
  • Sovelluskoodi viimeiseksi: Kopioikaa usein muuttuva sovelluksen lähdekoodi mahdollisimman myöhäisessä vaiheessa.

Järjestys välimuistiosumia varten

Tarkastellaan esimerkkiä. Kun RUN pip install -komento (joka muuttuu yleensä harvemmin) sijoitetaan ennen komentoa COPY . . (joka muuttuu jokaisen koodipäivityksen yhteydessä), Docker voi käyttää riippuvuuskerrosta uudelleen.

Oletetaan, että requirements.txt-tiedosto sisältää paketit flask ja gunicorn ja että app.py on pääsovelluksenne.

Dockerfile:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]

Jos vain app.py muuttuu, Docker rakentaa uudelleen ainoastaan viimeiset COPY- ja CMD-kerrokset, mikä säästää aikaa!

Valikoiva kopiointi .dockerignore-tiedoston avulla

Kun käytätte komentoa COPY . ., Docker tarkistaa muutosten varalta jokaisen build-kontekstin tiedoston. Pienetkin tarpeettomat tiedostot, kuten .git-kansiot tai paikalliset testitiedot, voivat mitätöidä välimuistin.

Käyttäkää .dockerignore-tiedostoa tarpeettomien tiedostojen ja hakemistojen jättämiseen build-kontekstin ulkopuolelle. Näin ne eivät aiheuta välimuistin mitätöitymistä.

.dockerignore käytännössä

Sijoittakaa nimellä .dockerignore oleva tiedosto build-kontekstin juureen, Dockerfile-tiedoston viereen.

Esimerkki .dockerignore-tiedostosta:

.git
.venv
__pycache__
*.log
node_modules

Nyt kun käytätte komentoa COPY . ., Docker ohittaa nämä tiedostot, mikä tuottaa luotettavampia välimuistiosumia!

Milloin välimuisti ohitetaan

Joskus haluatte varmistaa, että kaikki rakennetaan puhtaalta pohjalta ja välimuisti ohitetaan kokonaan. Tämä voi olla hyödyllistä virheenkorjauksessa tai silloin, kun haluatte varmistaa riippuvuuksien uusimmat mahdolliset versiot.

Voitte pakottaa Dockerin rakentamaan uudelleen ilman välimuistia lisäämällä --no-cache-lipun build-komentoon:

docker build --no-cache -t my-app:latest .

Välimuistin optimoinnin tarkistus

Olette rakentamassa Docker-levykuvaa Node.js-sovellukselle. Dockerfile-tiedosto näyttää tällä hetkellä tältä:

FROM node:16-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]

Mikä muutos optimoisi tämän Dockerfile-tiedoston build-välimuistin kannalta parhaiten?

Kertaus: hallitkaa välimuisti!

Hienoa työtä! Olette oppineet hyödyntämään Dockerin build-välimuistia levykuvien nopeampaan rakentamiseen.

  • Docker rakentaa levykuvat kerros kerrokselta ja käyttää välimuistissa olevia kerroksia uudelleen aina kun mahdollista.
  • Ohjeen tai sen kontekstin muutokset mitätöivät välimuistin kyseisestä kohdasta alkaen.
  • Optimoikaa järjestämällä ohjeet harvimmin muuttuvista useimmin muuttuviin.
  • Käyttäkää .dockerignore-tiedostoa tarpeettomien tiedostojen jättämiseen build-kontekstin ulkopuolelle.
  • Käyttäkää --no-cache-lippua pakottaaksenne puhtaan buildin tarvittaessa.

Tehokas välimuistin käyttö nopeuttaa kehityssyklejä ja tekee julkaisuista joustavampia!

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 ”Koontivälimuistin hyödyntäminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Dockerin ja DevOpsin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Koontivälimuistin hyödyntäminen”. 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 ”Koontivälimuistin hyödyntäminen”?

Optimoikaa Docker-koontien kesto ymmärtämällä ja hyödyntämällä tehokkaasti Dockerin koontivälimuistia. 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 2/4.

Kuinka kauan ”Koontivälimuistin hyödyntäminen”-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