Pāriet uz saturu

Sīkdatņu iestatījumi

Izvēlieties, kāda veida sīkdatnes atļaujat. Savu izvēli varat jebkurā laikā mainīt sadaļā Sīkdatņu iestatījumi katras lapas apakšā. Privātuma politika

Nepieciešamās

Vienmēr ieslēgtas

Vajadzīgas, lai pieteiktos, saglabātu grozu un atcerētos Jūsu izvēles. Tās vienmēr ir ieslēgtas.

Kuras sīkdatnes?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsu sesija un pieteikšanās saglabāšana
  • weboke_basket: Jūsu grozs
  • wkBtwIncl: cenu rādīšana ar PVN vai bez PVN
  • wok_cookies: Jūsu sīkdatņu izvēle, 12 mēneši

Mēra, kura reklāma noved pie apmeklējuma vai pasūtījuma, lai mēs nemaksātu par reklāmām, kas neko nedod.

Kuras sīkdatnes?
  • Google Ads ar Google Tag Manager (_gcl_au, _gcl_aw), līdz 90 dienām
  • OpenAI Ads, reklāmas ChatGPT
  • wok_aff: caur kuru partneri nonācāt pie mums (partneru programma), 60 dienas

4,6

Valsts un valoda

Katrai valstij ir sava vietne ar attiecīgās valsts cenām un PVN.

Skatīt

Izpratne par konteineriem

9. modulis: Docker un docker compose · Lasīšanas laiks: 10 min.

Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet izskaidrot, kas ir konteiners, kā tas atšķiras no virtuālās mašīnas, kur paliek konteinera dati un kad Docker uz Jūsu servera ir lietderīgs.

Pamatjēdzieni: attēls (image), konteiners, slānis, reģistrs (Docker Hub), tags (tag), digest, namespaces, cgroups, koplietots kodols, gaistoša failu sistēma, sējums (volume), bind mount, porta publicēšana, oficiālais attēls

Kāpēc konteineri?

Iedomājieties: Jūs vēlaties savā VPS darbināt statusa lapu, kas parāda, vai Jūsu vietne darbojas. Programma ir uzrakstīta Node.js valodā, tai vajadzīga noteikta Node.js versija un vēl apmēram divi simti bibliotēku. Bez konteineriem Jūs to visu instalējat uz servera blakus tīmekļa serverim un datubāzei. Pēc gada Jums vajadzīga otra programma, kurai nepieciešama cita Node.js versija. Tad sākas galvassāpes.

Konteiners to atrisina. Programmas autors piegādā programmu kopā ar visu, kas tai vajadzīgs, vienā pakotnē: attēlā (image). Uz servera Jūs šo attēlu palaižat kā konteineru. Programma redz savus failus, savu Node.js, savas bibliotēkas un netraucē pārējam serverim. Vairs nav vajadzīga? Konteineru dzēšat, attēlu dzēšat, un mapēs /usr vai /etc nekas nepaliek pāri.

Docker ir pazīstamākais rīks attēlu lejupielādei un konteineru darbināšanai. Ir arī alternatīvas (Podman, pats containerd), taču jēdzieni visur ir vienādi.

Attēls, konteiners un reģistrs

Trīs vārdi, ar kuriem Jūs saskarsieties visu laiku:

  • Attēls: tikai lasāma veidne ar failu sistēmu (programma, bibliotēkas, iestatījumi) un komandu, kurai jāpalaižas. Attēls sastāv no slāņiem: pamata slānis (piemēram, tukšs Debian), virs tā slānis ar Node.js, virs tā pati programma. Divi attēli ar vienādu pamata slāni koplieto šo slāni Jūsu diskā.
  • Konteiners: darbojošs (vai apturēts) attēla eksemplārs. Virs tikai lasāmajiem slāņiem konteiners saņem savu plānu rakstīšanas slāni. No viena attēla Jūs varat palaist desmit konteinerus.
  • Reģistrs: vieta, kur glabājas attēli, piemēram, Docker Hub (docker.io) vai GitHub reģistrs (ghcr.io). Docker lejupielādē attēlu ar docker pull.

Attēla nosaukums izskatās šādi:

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

Daļa aiz kola ir tags: versijas apzīmējums. Tags var mainīties: caddy:2 šodien norāda uz citu būvējumu nekā pēc trim mēnešiem, tiklīdz iznāk jauna 2.x versija. Ja vēlaties precīzi fiksēt, kuru attēlu darbināt, izmantojiet digest: satura pirkstu nospiedumu, piemēram, caddy@sha256:.... Tas nekad nemainās. Tags latest ir vienkārši nosaukums, ko izvēlas autors; tas automātiski nenozīmē "jaunākā stabilā versija", tāpēc tā ir slikta izvēle, ja vēlaties zināt, kas darbojas.

Nav virtuālā mašīna

Konteiners atgādina mazu virtuālo mašīnu, taču tā nav. Šī atšķirība ir svarīga drošībai.

Virtuālā mašīna (piemēram, Jūsu VPS)Konteiners
KodolsSavs kodolsKoplieto resursdatora kodolu
PalaišanaNo sekundēm līdz minūtēm, vesela operētājsistēmaParasti sekundes laikā, tikai programma
NošķiršanaAr hipervizoru, aparatūras līmenīAr kodolu: namespaces un cgroups
IzmērsGigabaitiBieži no desmitiem līdz simtiem megabaitu

Konteiners būtībā ir parasts process uz Jūsu servera, ko kodols ievieto norobežotā vidē:

  • namespaces nodrošina, ka procesam ir savs skatījums uz failiem, procesiem, tīklu un lietotājiem. Konteinerā programma šķiet esam process numur 1 un neredz pārējo serveri;
  • cgroups ierobežo, cik daudz procesora un atmiņas tā drīkst izmantot.

Tā kā visi konteineri koplieto vienu kodolu, nošķiršana ir mazāk stingra nekā starp diviem VPS. Ievainojamība kodolā vai konteiners ar pārāk plašām tiesībām var skart resursdatoru. Tāpēc šī moduļa noteikumi: darbiniet tikai attēlus, kuriem uzticaties, nedodiet konteineriem vairāk tiesību, nekā nepieciešams, un nekad nepievienojiet (mount) konteinerā /var/run/docker.sock vai / (nodarbība 9.3 un 10.2).

Kur paliek Jūsu dati?

Šis ir klasisks iesācēju slazds. Konteinera rakstīšanas slānis ir gaistošs: ja dzēšat konteineru (piemēram, atjaunināšanas laikā, nodarbība 9.4), viss, ko programma tajā ierakstīja, pazūd. Tāpēc datiem, kuriem jāsaglabājas, jāatrodas ārpus konteinera:

  • Sējums (volume): glabātuve, ko pārvalda pats Docker (zem /var/lib/docker/volumes/). Jūs piešķirat tam nosaukumu, piemēram, uptime-kuma, un piesaistāt to mapei konteinerā: -v uptime-kuma:/app/data.
  • Bind mount: parasta mape uz Jūsu servera, ko pievienojat konteinerā: -v /srv/vaultwarden:/data. Ērti, jo failus redzat tieši un tos viegli iekļaut rezerves kopijā (modulis 8).

Konteineru ar labi iestatītiem sējumiem Jūs varat izmest un izveidot no jauna, neko nezaudējot. Tieši tā darbojas atjaunināšana: lejupielādēt jaunu attēlu, dzēst veco konteineru, palaist jaunu konteineru ar tiem pašiem sējumiem. Tāpēc iekļaujiet sējumus savā rezerves kopiju plānā (nodarbība 8.1).

Portu publicēšana

Konteineram ir savs tīkls. Tīmekļa programma, kas konteinerā klausās portā 3001, no ārpuses nav sasniedzama, kamēr Jūs šo portu nepublicējat: -p 3001:3001 (resursdatora ports:konteinera ports). Uzmanību: ja adrese nav norādīta, Docker publicē portu visās servera adresēs, tātad 0.0.0.0 un [::]. Tas nozīmē: sasniedzams no visa interneta, un Docker to nokārto, apejot ufw (nodarbība 9.3). Droši ir pieradināt sevi publicēt uz loopback, -p 127.0.0.1:3001:3001, un priekšā likt reverso starpniekserveri ar https (nodarbība 9.4).

Kas veido attēlu?

Attēls ir kāda cita programmatūra, kas uz Jūsu servera var darboties kā root. Tāpēc pārbaudiet, kas ir autors:

  • Docker Official Images (piemēram, caddy, nginx, postgres) uztur Docker kopā ar autoriem;
  • paša autora attēli (piemēram, louislam/uptime-kuma un vaultwarden/server), atpazīstami pēc nosaukuma, ko norāda projekta vietne;
  • nezināmu personu attēli ar līdzīgiem nosaukumiem: neizmantojiet.

Vienmēr izmantojiet nosaukumu, kas norādīts projekta oficiālajā vietnē, nevis pirmo, ko atrod meklēšana.

Kad jā, kad nē?

Docker ir ērts programmām, kuras autors piegādā kā attēlu, pakalpojumiem, kurus vēlaties ātri izmest vai pārvietot, un vairāku programmu ar atšķirīgām prasībām darbināšanai blakus. Servera pamatiem (SSH, ugunsmūris, atjauninājumi) konteinerus neizmantojiet. Arī viena vietne ar nginx un PHP no pakotņu avota (nodarbība 7.2) lieliski darbojas bez Docker. Konteiners pievieno slāni, kas Jums jāsaprot un jāatjaunina; izmantojiet to, ja tas sniedz labumu.

Kopsavilkums

  • Attēls ir tikai lasāma veidne slāņos; konteiners ir darbojošs eksemplārs ar savu rakstīšanas slāni.
  • Konteineri koplieto resursdatora kodolu un ir norobežoti ar namespaces un cgroups: vieglāki par VM, taču mazāk stingri nošķirti.
  • Rakstīšanas slānis ir gaistošs: pastāvīgiem datiem jāatrodas sējumā vai bind mount, un tiem jābūt Jūsu rezerves kopijā.
  • Tags var mainīties, digest ne; latest pasaka maz.
  • Publicējiet portus uz 127.0.0.1 un izmantojiet tikai autora vai oficiālos attēlus.

Tests (quiz)

1. Kāda ir galvenā atšķirība starp konteineru un virtuālo mašīnu?



2. Jūs darbināt konteineru bez sējuma. Programma glabā savus iestatījumus /app/data. Jūs dzēšat konteineru, lai palaistu jaunu versiju. Kas notiek ar iestatījumiem?



3. Kāpēc image:latest ražošanas vidē nav laba izvēle?



4. Jūs palaižat docker run -d -p 8080:80 nginx. No kurām adresēm ports 8080 ir sasniedzams?



5. Meklēšana atrod attēlu vaultwarden-server-official/vaultwarden. Ko Jūs darāt?



Uzdevums

Uzdevums O9.1: Konteiners vai nē? Izvēlieties divas programmas, kuras vēlaties darbināt uz sava servera (vai izmantojiet kā piemēru Uptime Kuma un WordPress vietni). Katrai programmai noskaidrojiet, vai autors piedāvā oficiālu attēlu un ar kādu nosaukumu, kuru tagu Jūs izvēlētos, kurā mapē atrodas pastāvīgie dati un kurā portā programma klausās. Pēc tam paskaidrojiet, vai Jūs to darbinātu konteinerā vai no pakotņu avota, un kāpēc.

Uzdevums O9.1: Konteiners vai nē?

Šo uzdevumu veicat paši; neviens to nepārbauda. Atzīmējiet, ko esat izdarījuši, un atzīmējiet uzdevumu kā paveiktu.




Jūsu atzīmes un piezīmes paliek tikai šajā pārlūkprogrammā; mēs tās nekur nesūtām. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums ir paveikts.

Vairāk lasīt

Lūdzu, uzgaidiet…

Iestatiet savus domēnus

Katram domēnam norādiet vārdu serverus, piesaisti hostingam un to, kurš būs turētājs.

Ielādē Jūsu domēnus…