„Docker“ vadovas pradedantiesiems
Šiame „Docker“ vadove supažindinsime jus su „Docker“ virtualizacijos platforma ir, remdamiesi lengvai suprantamais nurodymais, parodysime, kaip naudoti „Docker“ jūsų „Ubuntu 22.04“ sistemoje.
„Docker“ struktūra ir savybės
„Sukurk, išleisk ir paleisk bet kokią programą bet kur“ – toks yra „Docker“ šūkis. Ši atvirojo kodo konteinerių platforma siūlo lanksčią, mažai išteklių reikalaujančią alternatyvą aparatinės įrangos komponentų emuliacijai, grindžiamai virtualiosiomis mašinomis (VM).
Nors tradicinė aparatinės įrangos virtualizacija grindžiama kelių svečių sistemų paleidimu bendroje pagrindinėje sistemoje, „Docker“ programos naudojant konteinerius vykdomos kaip izoliuoti procesai toje pačioje sistemoje. Tai vadinama konteinerių pagrindu veikiančia virtualizacija, dar žinoma kaip operacinės sistemos lygio virtualizacija.

Vienas didžiausių konteinerių pagrindu veikiančios virtualizacijos privalumų yra tai, kad skirtingus reikalavimus keliančios programos gali veikti viena nuo kitos izoliuotai, be papildomų išlaidų, susijusių su atskira svečio sistema. Be to, naudojant konteinerius, programas galima diegti įvairiose platformose ir skirtingose infrastruktūrose, nereikalaujant jų pritaikyti prie priimančiosios sistemos aparatinės ar programinės įrangos konfigūracijų.
„Docker“ yra populiariausias programinės įrangos projektas, suteikiantis vartotojams konteinerių pagrindu veikiančią virtualizacijos technologiją. Ši atvirojo kodo platforma remiasi trimis pagrindiniais komponentais. Norėdami paleisti konteinerius, vartotojams reikia tik „Docker“ variklio bei specialių „Docker“ vaizdų, kuriuos galima atsisiųsti iš „Docker Hub“ arba sukurti patiems.
„Docker“ atvaizdai
Panašiai kaip ir virtualiosios mašinos, „Docker“ konteineriai yra pagrįsti „Docker“ atvaizdais. Atvaizdas – tai tik skaitymo režimu veikiantis šablonas, kuriame yra visos instrukcijos, reikalingos „Docker“ varikliui konteineriui sukurti. „Docker“ atvaizdas apibūdinamas kaip perkeliamas konteinerio atvaizdas tekstinio failo forma, dar vadinamas „Dockerfile“. Jei konteineris turi būti paleistas sistemoje, pirmiausia įkeliama pakuotė su atitinkamu atvaizdu, jei jo dar nėra vietiniame diske. Įkeltas atvaizdas suteikia reikiamą failų sistemą, įskaitant visus vykdymo parametrus. Konteinerį galima laikyti atvaizdo vykdomu procesu.
„Docker Hub“
„Docker Hub“ – tai debesų pagrindu veikiantis programinės įrangos saugyklų registras, t. y. „Docker“ vaizdų biblioteka. Ši internetinė paslauga suskirstyta į viešąją ir privačiąją sekcijas. Viešojoje sekcijoje vartotojai gali įkelti savo sukurtus vaizdus ir dalytis jais su bendruomene. Čia galima rasti daugybę oficialių vaizdų, kuriuos pateikia „Docker“ kūrėjų komanda ir pripažinti atvirojo kodo projektai. Į registro privačią sekciją įkelti atvaizdai nėra viešai prieinami, todėl jais galima dalytis, pavyzdžiui, įmonės viduje arba su draugais ar pažįstamais. „Docker Hub“ galima pasiekti adresu hub.docker.com.
„Docker“ variklis
Docker projekto šerdis – tai „Docker“ variklis. Tai atvirojo kodo klientų-serverių programa, kurios naujausią versiją gali naudoti visi vartotojai visose populiariose platformose.
Pagrindinė „Docker“ variklio architektūra susideda iš trijų komponentų: demono, atliekančio serverio funkcijas, programavimo sąsajos (API), pagrįstos programavimo paradigma REST (Representational State Transfer), ir operacinės sistemos terminalo (komandinės eilutės sąsajos, CLI), veikiančio kaip vartotojo sąsaja (klientas).
- „Docker“ demonas: „Docker“ variklio serverio vaidmenį atlieka demonas. „Docker“ demonas veikia pagrindinės sistemos fone ir yra naudojamas „Docker“ varikliui centralizuotai valdyti. Ši funkcija kuria ir tvarko visus atvaizdus, konteinerius bei tinklus.
- REST-API: REST-API apibrėžia sąsajų rinkinį, leidžiantį kitoms programoms bendrauti su Docker daemonu ir duoti jam nurodymus. Viena iš šių programų yra operacinės sistemos terminalas.
- Terminalas: Kaip kliento programą „Docker“ naudoja operacinės sistemos terminalą. Tai, integruota su „Docker“ demonu per REST-API, leidžia vartotojams jį valdyti per skriptus arba vartotojo įvestis.
2017 m. „Docker“ variklis buvo pervadintas į „Docker Community Edition“ (trumpinys – „Docker CE“), tačiau oficialioje dokumentacijoje ir „Docker“ saugyklose dažniausiai vis dar vartojamas senasis pavadinimas. Be „Docker CE“, yra ir „Docker Enterprise Edition“ (Docker EE), kuri turi keletą išskirtinių funkcijų. Tačiau ji nėra nemokama ir labiau tinka įmonėms.
Naudojant „Docker“ komandas, vartotojo programinės įrangos konteinerius galima paleisti, sustabdyti ir valdyti tiesiogiai iš terminalo. Su demonu susisiekama naudojant komandą docker ir tokias instrukcijas kaip build, pull ar run. Klientas ir serveris gali būti toje pačioje sistemoje. Vartotojams taip pat suteikiama galimybė prisijungti prie „Docker“ demono kitoje sistemoje. Priklausomai nuo nustatomo ryšio tipo, ryšys tarp kliento ir serverio vyksta per REST-API, per UNIX lizdus arba per tinklo sąsają.
Toliau pateiktame paveikslėlyje pavaizduota atskirų „Docker“ komponentų sąveika, naudojant pavyzdines komandas docker build, docker pull ir docker run:

Komanda docker build nurodo „Docker“ demonui sukurti atvaizdą (punktyrinė linija). Tam reikia turėti atitinkamą „Dockerfile“ failą. Jei atvaizdas neturi būti sukurtas, o įkeltas iš „Docker Hub“ saugyklos, tuomet naudojama komanda docker pull (brūkšninė linija). Jei „Docker“ demonas per docker run nurodoma paleisti konteinerį, foninė programa patikrina, ar atitinkamas konteinerio atvaizdas yra prieinamas lokaliai. Jei taip, tada konteineris paleidžiamas (ištisinė linija). Jei demonas negali rasti atvaizdo, jis automatiškai inicijuoja atsisiuntimą iš saugyklos.
Darbas su „Docker“
Dabar atėjo laikas susipažinti su konteinerių platformos programomis. Jei dar neįdiegėte „Docker“ variklio, tai galite padaryti per „Linux“ terminalą. Instrukcijas, kaip tai padaryti, rasite mūsų straipsnyje„Docker“ įdiegimas „Ubuntu 22.04“ sistemoje. Toliau sužinosite, kaip valdyti „Docker“ variklį iš terminalo, ką „Docker Hub“ gali jums pasiūlyti ir kodėl „Docker“ konteineriai gali iš esmės pakeisti jūsų darbo su programomis būdą.
Kaip valdyti „Docker“ variklį
Nuo 16.04 versijos „Ubuntu“ procesams valdyti naudoja foninę programą „systemd“(trumpinys nuo „system daemon“).„Systemd“ yrainicijavimo procesas, naudojamas ir kitose „Linux“ distribucijose, pavyzdžiui, „RHEL“, „CentOS“ ar „Fedora“. Paprastai*„systemd“ gaunaproceso ID 1. Kaip pirmasis sistemos procesas, šis demonas yra atsakingas už visų vėlesnių procesų paleidimą, stebėjimą ir užbaigimą. Ankstesnėse „Ubuntu“ versijose (14.10 ir senesnėse) šią funkciją atlieka foninėprograma „upstart* “.
„Docker“ demoną taip pat galima valdyti per „systemd“. Standartinėje instaliacijoje konteinerių platforma sukonfigūruota taip, kad demonas paleidžiamas automatiškai, kai įkeliama sistema. Šį numatytąjį nustatymą galima pritaikyti naudodami komandinės eilutės įrankį „systemctl“.
Naudodami „systemctl“, siunčiate komandas „systemd“, kad valdytumėte procesą arba sužinotumėte jo būseną. Tokios komandos sintaksė yra tokia:
systemctl [OPTION] [COMMAND]bashKai kurios komandos susijusios su konkrečiais ištekliais (pavyzdžiui, „Docker“). „systemd“ terminologijoje jie vadinami vienetais. Šiuo atveju komandą sudaro atitinkama instrukcija ir vieneto, kuriam ji skirta, pavadinimas.
Jei norite įjungti (įgalinti) arba išjungti (atjungti) „Docker“ demono automatinį paleidimą, naudokite komandinės eilutės įrankį „systemctl“ su šiomis komandomis:
sudo systemctl enable docker
sudo systemctl disable dockerbashKomandinės eilutės įrankis „systemctl“ leidžia patikrinti vieneto būseną:
sudo systemctl status dockerbashJei jūsų „Ubuntu“ sistemoje veikia „Docker“ variklis, terminalo ekrane turėtų būti rodomas vaizdas, panašus į šį ekrano kopiją:

Jei jūsų „Docker“ variklis šiuo metu yra išjungtas, gausite pranešimą apie būseną „inactive (dead)“. Tokiu atveju, norėdami paleisti konteinerius, turėsite rankiniu būdu paleisti „Docker“ demoną.

Jei norite rankiniu būdu paleisti, sustabdyti arba perkrauti „Docker“ variklį, naudokite vieną iš šių komandų, skirtų „systemd “.
Norėdami paleisti išjungtą demoną, naudokite komandą „systemctl“ kartu su komanda start:
sudo systemctl start dockerbashJei norite uždaryti „Docker“ demoną, vietoj to naudokite komandą stop:
sudo systemctl stop dockerbashVariklio paleidimas iš naujo inicijuojamas komanda restart:
sudo systemctl restart dockerbashKaip naudotis „Docker Hub“
Jei „Docker“ variklis yra konteinerių platformos širdis, tai „Docker Hub“ – atvirojo kodo projekto siela. Čia susirenka bendruomenė. Šiame debesų kompiuterijos registru vartotojai gali rasti viską, ko reikia, kad savo „Docker“ įdiegą paverstų veikiančia sistema.
Ši internetinė paslauga siūlo įvairius oficialius archyvus, kuriuose yra daugiau nei 100 000 nemokamų programėlių. Vartotojai gali kurti vaizdų archyvus ir jais naudotis kartu su darbo grupėmis. Be kūrėjų komandos teikiamos profesionalios pagalbos, čia pradedantieji gali rasti ryšių su vartotojų bendruomene. GitHub svetainėje veikia bendruomenės pagalbos forumas.

Registracija „Docker Hub“
Registracija „Docker Hub“ yra nemokama. Vartotojams reikia tik el. pašto adreso ir pasirinktos „Docker“ ID. Vėliau ji tarnauja kaip asmeninės saugyklos vardų erdvė ir suteikia vartotojams prieigą prie visų „Docker“ paslaugų. Šiuo metu šis pasiūlymas apima „Docker“ debesį, „Docker“ parduotuvę ir pasirinktas beta programas, be „Docker Hub“. Be to, „Docker“ ID galima naudoti prisijungimui prie „Docker“ pagalbos centro, taip pat „Docker“ sėkmės portalo ir „Docker“ forumo.
Registracijos procesą sudaro penki etapai:
- Pasirinkite savo „Docker“ ID: Pirmiausia pasirinkite vartotojo vardą, kuris vėliau bus naudojamas kaip jūsų asmeninis „Docker“ ID.
- Įveskite el. pašto adresą: Įveskite savo dabartinį el. pašto adresą. Atkreipkite dėmesį, kad turėsite patvirtinti savo registraciją „Docker Hub“ el. paštu.
- Pasirinkite slaptažodį: Pasirinkite slaptą slaptažodį.
- Pateikite registraciją: Spustelėkite „Sign up“ (Registruotis), kad pateiktumėte registraciją. Kai duomenys bus visiškai perduoti, „Docker“ į jūsų nurodytą pašto dėžutę išsiųs nuorodą, kuria galėsite patvirtinti savo el. pašto adresą.
- Patvirtinkite savo el. pašto adresą: Patvirtinkite savo el. pašto adresą spustelėdami patvirtinimo nuorodą.
Užsiregistravus naršyklėje, „Docker“ projekto internetinės paslaugos tampa iškart prieinamos. Čia galite kurti saugyklas ir darbo grupes arba naudodamiesi funkcija „Explore“ ieškoti viešų išteklių „Docker Hub“ platformoje.

Taip pat galite prisijungti tiesiogiai iš savo operacinės sistemos terminalo, naudodami komandą „docker login“. Išsamus komandos aprašymas pateiktas „Docker“ dokumentacijoje.
Iš esmės „Docker Hub“ prieinamas ir tiems, kurie neturi paskyros ar „Docker ID“. Tačiau tokiu atveju galima atsisiųsti tik vaizdus iš viešų saugyklų. Be „Docker ID“ neįmanoma įkelti (push) savo vaizdų.
Sukurti saugyklas „Docker Hub“
Nemokama „Docker Hub“ paskyra apima vieną privatų repozitorijų ir suteikia galimybę kurti neribotą skaičių viešų repozitorijų. Jei jums prireiktų daugiau privačių repozitorijų, juos galite atrakinti atlikdami mokamą atnaujinimą.
Norėdami sukurti saugyklą, atlikite šiuos veiksmus:
- Pasirinkite vardų erdvę: naujai sukurti repozitorijai automatiškai priskiriami jūsų „Docker“ ID vardų erdvei. Taip pat galite įvesti organizacijos, kuriai priklausote, ID.
- Pavadinkite saugyklą: įveskite naujai sukurto saugyklos pavadinimą.
- Pridėkite aprašymą: Pridėkite trumpą savo saugyklos aprašymą.
- Nustatykite matomumą: nuspręskite, ar saugykla turėtų būti viešai matoma (vieša), ar prieinama tik jums ar jūsų organizacijai (privati).
Patvirtinkite įvestus duomenis spustelėdami „Sukurti“.

Kurti komandas ir organizacijas
Naudodamasis „Hub“, „Docker“ siūlo debesų platformą, kurioje vartotojo sukurti atvaizdai yra centralizuotai valdomi ir patogiai dalijami su darbo grupėmis. „Docker“ terminologijoje jos vadinamos organizacijomis. Kaip ir vartotojų paskyros, organizacijos gauna individualius identifikatorius, per kuriuos galima teikti ir atsisiųsti atvaizdus. Teisės ir vaidmenys organizacijoje gali būti priskiriami per komandas. Pavyzdžiui, vartotojai, priskirti „Savininkų“ komandai, turi teisę kurti privačius arba viešus saugyklas ir suteikti prieigos teises.
Darbo grupes taip pat galima kurti ir valdyti tiesiogiai per valdymo skydą. Daugiau informacijos apie organizacijas ir komandas rasite „Docker“ dokumentacijoje.
Darbas su vaizdais ir konteineriais
„Docker Hub“, kaip pagrindinis oficialių „Docker“ išteklių šaltinis, yra mūsų išeities taškas šioje įvadinėje pamokoje apie vaizdų ir konteinerių tvarkymą. Kūrėjų komanda pateikė demonstracinį vaizdą „whalesay“, kuris bus naudojamas kaip pagrindas tolesniam „Docker“ vadovui.
Atsisiųsti „Docker“ vaizdus
„Whalesay“ vaizdą galite rasti apsilankę „Docker Hub“ svetainėje ir įvedę žodį „whalesay“ paieškos juostoje šalia „Docker“ logotipo.

Paieškos rezultatuose spustelėkite išteklių su pavadinimu „docker/whalesay“, kad patektumėte į šio atvaizdo viešąjį repozitoriumą.
„Docker“ saugyklos visada sudaromos pagal tą patį modelį. Puslapio antraštėje vartotojai mato atvaizdo pavadinimą, saugyklos kategoriją ir paskutinio įkėlimo laiką (last pushed).

Kiekvienoje „Docker“ saugykloje taip pat pateikiami šie informaciniai langeliai:
- Aprašymas: Išsamus aprašymas, paprastai apimantis naudojimo instrukcijas
- Komanda „Docker pull“: Komandinės eilutės komanda, naudojama vaizdui atsisiųsti iš saugyklos (
pull) - Savininkas: Informacija apie saugyklos kūrėją
- Komentarai: Komentarų skiltis puslapio pabaigoje
Iš saugyklos informacinių langelių matyti, kad „whalesay“ yra atvirojo kodo Perl skripto „cowsay“ modifikacija. Ši programa, kurią 1999 m. sukūrė Tony Monroe, generuoja ASCII grafiką, vaizduojančią karvę, kuri vartotojo terminale pasirodo kartu su pranešimu.
Norėddocker pull atsisiųsti „docker/whalesay“, naudokite šią komandą:
docker pull [OPTIONS] NAME [:TAG|@DIGEST]bashKomanda docker pull nurodo demonui įkelti atvaizdą iš saugyklos. Atvaizdą nurodote įvedę jo pavadinimą (NAME). Taip pat galite nurodyti „Docker“ programai, kaip turi būti vykdoma norima komanda (OPTIONS). Papildomai galima nurodyti žymes (:TAG) ir individualius identifikavimo numerius (@DIGEST), kurie leidžia atsisiųsti konkrečią atvaizdo versiją.
Vietinę „docker/whalesay“ atvaizdo kopiją galima atsisiųsti šia komanda:
docker pull docker/whalesaybashPaprastai šį žingsnį galite praleisti. Jei norite paleisti konteinerių, „Docker“ demonas automatiškai atsisiųs vaizdus iš saugyklos, kurių neranda vietinėje sistemoje.
Paleisti „Docker“ vaizdus kaip konteinerius
Norėdami paleisti „Docker“ atvaizdą, naudokite komandą docker run:
docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]bashVienintelė privaloma komandos docker run dalis yra norimo „Docker“ atvaizdo pavadinimas. Tačiau paleidžiant konteinerį taip pat galima nustatyti papildomas parinktis, žymes (TAG) ir santraukas (DIGEST). Be to, komandą docker run galima derinti su kitomis komandomis, kurios paleidžiamos iškart, kai tik paleidžiamas konteineris. Tokiu atveju CMD (COMMAND, apibrėžta atvaizdo kūrėjo ir vykdoma automatiškai paleidus konteinerį) yra perrašoma. Kitos neprivalomos konfigūracijos gali būti nustatytos naudojant papildomus argumentus (ARG…). Tai leidžia, pavyzdžiui, pridėti vartotojus arba perkelti aplinkos kintamuosius.
Naudokite komandinės eilutės nurodymą
docker run docker/whalesay cowsay boobashatsisiųsti esamą Perl skriptą kaip vaizdą ir paleisti jį konteineryje. Pastebėsite, kad „whalesay“ gerokai skiriasi nuo pirminio skripto.

Jei paleidžiamas vaizdas „docker/whalesay“, scenarijus išveda ASCII grafiką, vaizduojančią banginį, bei tekstinį pranešimą „boo“, perduotą terminale naudojant komandą „cowsay “.
Kaip ir bandomojo paleidimo metu, demonas pirmiausia ieško reikiamo atvaizdo vietiniame failų kataloge. Kadangi tokio paties pavadinimo paketo nėra, pradedamas atsisiuntimas iš „Docker“ saugyklos. Tada demonas paleidžia modifikuotą „cowsay“ programą. Jei programa sėkmingai baigė veikti, konteineris automatiškai uždaromas.
Kaip ir „cowsay“, taip ir „Docker“ komanda „whalesay“ suteikia galimybę įsikišti į programos eigą ir paveikti terminale rodomą tekstą. Išbandykite šią funkciją, pakeisdami komandos išvestyje esantį žodį „boo“ bet kokia eilute arba, pavyzdžiui, nevykusiu juokeliu apie banginius.
sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?bash
Rodyti visus „Docker“ atvaizdus vietinėje sistemoje
Jei nesate tikri, ar jau atsisiuntėte konkretų vaizdą, galite peržiūrėti visų vaizdų, esančių jūsų kompiuteryje, sąrašą. Naudokite šią komandinės eilutės komandą:
sudo docker imagebashKomanda docker images (arba docker image ls) rodo visus vietinius vaizdus, įskaitant failo dydį, žymę ir vaizdo ID.

Jei paleidžiate konteinerių, pagrindinis atvaizdas atsisiunčiamas kaip kopija iš saugyklos ir visam laikui išsaugomas jūsų kompiuteryje. Tai padeda sutaupyti laiko, jei vėliau norėsite pasinaudoti tuo atvaizdu. Naujas atsisiuntimas pradedamas tik tuo atveju, jei pasikeičia atvaizdo šaltinis, pavyzdžiui, jei saugykloje pasirodo nauja versija.
Rodyti visus vietinės sistemos konteinerius
Jei norite peržiūrėti visų konteinerių, kurie šiuo metu veikia jūsų sistemoje arba veikė anksčiau, sąrašą, naudokite komandinės eilutės nurodymą docker ps kartu su parinktimi --all (trumpai: -a):
sudo docker ps -abash
Terminalo išvestyje pateikiama tokia informacija kaip atitinkamo konteinerio ID, bazinis atvaizdas, komanda, paleista paleidžiant konteinerį, konteinerio paleidimo laikas ir būsena.
Jei norite rodyti tik tuos konteinerius, kurie šiuo metu veikia jūsų sistemoje, naudokite komandos eilutės nurodymą docker ps be jokių kitų parametrų:
sudo docker psbashTačiau šiuo metu jūsų sistemoje neturėtų būti jokių veikiančių konteinerių.
Sukurti „Docker“ vaizdus
Mūsų „Docker“ pamoka jau parodė, kaip rasti vaizdus „Docker Hub“ platformoje, juos atsisiųsti ir paleisti bet kurioje sistemoje, kurioje įdiegtas „Docker“ variklis. Tačiau naudodamiesi „Docker“ galėsite ne tik pasinaudoti didžiuliu registruose esančių programų pasirinkimu. Ši platforma taip pat siūlo daugybę galimybių kurti savo vaizdus ir dalytis jais su kitais programuotojais.
Šio „Docker“ vadovo įvadiniuose skyriuose jau sužinojote, kad kiekvienas „Docker“ atvaizdas yra sukurtas remiantis „Dockerfile“ failu. „Dockerfile“ failus galite įsivaizduoti kaip savotiškus atvaizdų kūrimo šablonus. Tai paprasti tekstiniai failai, kuriuose yra visos instrukcijos, reikalingos „Docker“ atvaizdui sukurti. Toliau pateiktuose žingsniuose išmoksite, kaip parašyti tokį „Dockerfile“ failą ir nurodyti „Docker“ jį naudoti kaip pagrindą jūsų pačių atvaizdui sukurti.
- Sukurti naują katalogą: „Docker“ kūrėjų komanda rekomenduoja kiekvienam „Dockerfile“ failui sukurti atskirą katalogą. Linux sistemoje katalogus lengva sukurti terminale. Norėdami sukurti katalogą pavadinimu „mydockerbuild“, naudokite šią komandų eilutės komandą:
mkdir mydockerbuildbash
- Naršykite naujame kataloge: naudokite komandą
cd, kad pereitumėte į naujai sukurtą darbo katalogą.
cd mydockerbuildbash
- Sukurti naują tekstinį failą: Naudodami „Ubuntu“, tekstinius failus taip pat galite lengvai kurti per terminalą. Tam naudokite redaktorių, pavyzdžiui, „Nano“ arba „Vim“. Kataloge „mydockerbuild “ sukurkite tekstinį failą pavadinimu „Dockerfile “.
nano Dockerfilebash
- Parašykite „Dockerfile“: naujai sukurtas tekstinis failas bus jūsų pačių sukurto atvaizdo kūrimo planas. Vietoj to, kad kurti atvaizdą nuo nulio, šiame „Docker“ pamokų serijos straipsnyje kaip šabloną naudosime demonstracinį atvaizdą „docker/whalesay “. Jis įtraukiamas naudojant komandą „FROM“ jūsų „Dockerfile“ faile. Naudokite žymę „:latest“, kad nurodytumėte naujausią atvaizdo versiją.
FROM docker/whalesay:latestIki šiol „docker/whalesay“ veikė taip, kad jūs patys įrašydavote tekstą. Terminale rodomas būtent tas tekstas, kurį įvedėte, kartu su komanda, skirta paleisti konteinerį. Tačiau būtų įdomiau, jei scenarijus automatiškai generuotų naują tekstą. Tai galima padaryti, pavyzdžiui, naudojant programą „fortunes“, kuri yra kiekvienoje Linux sistemoje. Pagrindinė „fortunes“ funkcija – generuoti „fortune cookie“ posakius ir juokingus aforizmus. Naudokite šią komandą, kad atnaujintumėte esamą vietinį paketų indeksą ir įdiegtumėte „fortunes“:
RUN apt-get -y update && apt-get install -y fortunesTada apibrėžkite CMD komandą. Ji bus vykdoma po komandos RUN, nebent ją pakeistų komanda call (docker run image CMD). Naudokite šią komandą, kad paleistumėte programą „fortunes“ su parinktimi -a („Pasirinkti iš visų duomenų bazių“) ir terminale per programą „cowsay“ parodytumėte rezultatą:
CMD /usr/games/fortune -a | cowsayJūsų „Dockerfile“ turėtų atrodyti taip:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsayPastaba: „Dockerfile“ failo komandos visada rašomos vienu tarpeliu ir visada prasideda raktiniu žodžiu. Sintaksė neatsižvelgia į didžiųjų ir mažųjų raidžių skirtumą, todėl nesvarbu, ar rašote didžiosiomis, ar mažosiomis raidėmis. Tačiau raktiniams žodžiams nustatyta vienoda rašybos tvarka.

- Išsaugokite tekstinį failą: išsaugokite įrašą. Jei naudojate „Nano“ redaktorių, išsaugokite naudodami klavišų kombinaciją [CTRL] + [O] ir patvirtinkite spausdami [ENTER]. „Nano“ parodys pranešimą, kad į pasirinktą failą buvo įrašytos trys eilutės. Uždarykite tekstinį redaktorių naudodami klavišų kombinaciją [CTRL] + [X].
- Sukurti atvaizdą kaip „Dockerfile“: Norėdami sukurti atvaizdą iš „Dockerfile“, pirmiausia pereikite į katalogą, kuriame yra tekstinis failas. Pradėkite atvaizdo kūrimą komandos eilutės nurodymu
docker build. Jei norite atskirai pavadinti atvaizdą arba suteikti jam žymę, naudokite parinktį-t, po kurios nurodykite norimą pavadinimo ir žymės derinį. Standartinis formatas yraname:tag.
Šiame pavyzdyje turėtų būti sukurtas paveikslėlis, pavadintas „docker-whale “:
docker build -t docker-whale .bashPaskutinė eilutė reiškia, kad pagrindinis „Dockerfile“ failas yra pasirinktame kataloge. Taip pat galite nurodyti šaltinio failų kelią arba URL adresą.
Kompiliavimo procesas prasideda, vos tik komanda patvirtinama paspaudus [ENTER]. Pirmiausia „Docker“ demonas patikrina, ar turi visus failus, reikalingus atvaizdui sukurti. „Docker“ terminologijoje tai apibendrinama terminu „kontekstas“.
Tuomet „docker/whalesay“ atvaizdas su žyma :latest yra šioje vietoje:
Jei visos vaizdo sukūrimui reikalingos sąlygos jau yra įvykdytos, „Docker“ demonas paleidžia vaizdo šabloną, nurodytą naudojant „FROM“, laikinajame konteineriuje ir pereina prie kitos komandos „Dockerfile“ faile. Šiame pavyzdyje tai yra komanda „RUN“, kuri įdiegia programą „fortunes “.
Kiekvieno vaizdo kūrimo proceso etapo pabaigoje „Docker“ suteikia atitinkamo sluoksnio, sukurto per tą etapą , identifikatorių. Tai reiškia, kad kiekviena pagrindinio „Dockerfile“ eilutė atitinka vaizdo sluoksnį, sukurtą pagal ją.
Kai komanda „RUN“ įvykdoma, „Docker“ demonas sustabdo jai sukurtą konteinerį, jį pašalina ir paleidžia naują laikiną konteinerį, skirtą „CMD“ nurodymo sluoksniui. Pasibaigus kūrimo procesui, šis laikinasis konteineris taip pat uždaromas ir pašalinamas. „Docker“ pateikia naujojo atvaizdo ID:
Successfully built a8f2048c9ab8
Jūsų naujai sukurtą atvaizdą galite rasti pavadinimu „docker-whale“ vietiniame išsaugotų atvaizdų sąraše.
sudo docker imagesbash
Norėdami paleisti konteinerių iš naujai sukurto atvaizdo, naudokite komandinės eilutės komandą sudo docker run kartu su atvaizdo pavadinimu:
sudo docker run docker-whalebashJei vaizdas buvo sėkmingai sukurtas pagal „Dockerfile“, jūsų banginis dabar turėtų įkvėpti jus daugiau ar mažiau išmintingais žodžiais. Pastaba: kiekvieną kartą, kai perkraunate konteinerį, sugeneruojama nauja frazė.

Pažymėkite „Docker“ vaizdus ir įkelkite juos į „Docker Hub“
Jei norite įkelti savo sukurtą „docker-whale“ atvaizdą į centrą ir padaryti jį prieinamą bendruomenei arba darbo grupei, pirmiausia turite jį susieti su to paties pavadinimo saugykla savo asmeninėje vardų erdvėje. „Docker“ terminologijoje šis veiksmas vadinamas žymėjimu.
Norėdami paskelbti vaizdą „Docker Hub“ platformoje, atlikite šiuos veiksmus:
- Sukurkite saugyklą: prisijunkite prie „Docker Hub“ naudodami savo „Docker“ ID ir asmeninį slaptažodį, tada sukurkite viešą saugyklą pavadinimu „docker-whale“.

- Nustatykite vaizdo identifikatorių: Nustatykite savo pasirinktinio vaizdo „docker-whale“ identifikatorių naudodami komandinės eilutės nurodymą
docker images.

Mūsų atveju vaizdo identifikatorius yra a8f2048c9ab8. Jis mums reikalingas žymėjimui kitame žingsnyje.
- Priskirkite žymę atvaizdui: Priskirkite žymę „docker-whale“ atvaizdui naudodami komandinės eilutės programą
docker tagtaip, kaip nurodyta toliau:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]bashŠiame pavyzdyje žymėjimo komandinės eilutės nurodymas yra toks:
sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latestbashNaudodamiesi docker images apžvalga galite patikrinti, ar teisingai pažymėjote savo vaizdą. Dabar saugyklos pavadinime turėtų būti nurodytas jūsų „Docker“ ID.

- Įkelkite vaizdą: Norėdami įkelti vaizdą, pirmiausia turite prisijungti prie „Docker Hub“. Tai galima padaryti naudojant komandą
docker login.
sudo docker loginbashTada terminale bus paprašyta įvesti vartotojo vardą (Docker ID) ir slaptažodį.

Jei prisijungimas pavyko, naudokite komandinės eilutės komandą docker push, kad įkeltumėte savo vaizdą į naujai sukurtą saugyklą.
sudo docker push [Namespace]/docker-whalebashĮkėlimo procesas turėtų užtrukti tik kelias sekundes. Dabartinė būsena rodoma terminale.

Prisijunkite prie „Docker Hub“ per naršyklę, kad galėtumėte peržiūrėti įkeltą vaizdą.
![Docker hub: The repository [Namespace]/docker-whale in the detailed view Image: Docker hub: The repository [Namespace]/docker-whale in the detailed view](https://www.ionos.com/lt-lt/digitalguide/fileadmin/_processed_/5/e/csm_docker-hub-push-result_56530d8ebc.webp)
Jei norite įkelti daugiau nei vieną paveikslėlį į vieną saugyklą, naudokite skirtingas žymes, kad pateiktumėte paveikslėlius skirtingomis versijomis. Pavyzdžiui:
[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2Įvairių vaizdo versijų apžvalgą galima rasti „Docker Hub“ saugykloje, skiltyje „Žymės“.

Tačiau skirtingų projektų vaizdai turėtų būti pateikiami atskiruose saugyklose.
Jei įkėlimas pavyko, jūsų pasirinktas vaizdas dabar bus prieinamas viešame repozitoriume visiems „Docker“ naudotojams visame pasaulyje.
- Bandomasis paleidimas: Patikrinkite, ar failo įkėlimas pavyko, pabandydami atsisiųsti paveikslėlį.
Atkreipkite dėmesį, kad norint atsisiųsti naują kopiją su ta pačia žyma, pirmiausia reikia ištrinti vietinę vaizdo kopiją. Priešingu atveju „Docker“ praneš, kad norimas vaizdas jau egzistuoja dabartinėje versijoje.

Norėdami ištrinti vietinį „Docker“ atvaizdą, naudokite komandinės eilutės nurodymą docker rmi kartu su atitinkamu atvaizdo ID. Jis, kaip įprasta, nustatomas naudojant docker images. Jei „Docker“ užregistruoja konfliktą, pvz., dėl to, kad atvaizdo ID naudojamas keliuose saugyklose arba yra naudojamas konteineriuje, pakartokite komandą su parinktimi --force (trumpai – -f ), kad priverstinai ištrintumėte atvaizdą.
sudo docker rmi -f a8f2048c9ab8bash
Vėl parodyti visų vietinių vaizdų sąrašą:
sudo docker ImagesbashIštrinti elementai turėtų nebeatsirasti terminalo išvestyje. Dabar naudokite repozitorijoje pateiktą komandą „pull“, kad atsisiųstumėte naują atvaizdo kopiją iš „Docker Hub“.
sudo docker pull [Namespace]/docker-whalebash
Kitos temos ir pamokos apie „Docker“
„Docker“ pasaulis yra platus, ir laikui bėgant iš „Docker“ įrankių susiformavo gyva ekosistema. „Docker“ ypač naudingas administratoriams, ypač jei jie valdo sudėtingas programas, kuriose daugybė konteinerių veikia lygiagrečiai skirtingose sistemose. „Docker“ siūlo įvairias funkcijas, skirtas tokių klasterių koordinavimui. Daugiau informacijos apie tai rasite mūsų straipsnyje apie „Docker“ koordinavimą naudojant „Swarm“ ir „Compose“.
„Digital Guide“ pateikiama papildomų pamokų apie darbą su „Docker“:
- „Docker“ saugyklos konfigūravimas
- „Docker“ konteinerių tomai
- „Docker“: atsarginės kopijos kūrimas ir atkūrimas
- „Docker“ įdiegimas ir paleidimas „Linux“ serveryje
- „Docker Compose“ pamoka
„Docker“ tinka įvairiems naudojimo atvejams. „Digital Guide“ rasite šiuos mokomuosius vadovus:
- „WordPress“ diegimas „Docker“ konteineriuose
- VPN veikimas „Docker“ konteineriuose naudojant „SoftEther“
- „Nextcloud“ diegimas naudojant „Docker“
- „Portainer“ įdiegimas „Docker“
- „Redis“ „Docker“ konteineriuose
- „Valheim“ „Docker“ serveris
„Docker“ ne visada yra geriausias pasirinkimas kiekvienai programai. Viename iš mūsų straipsnių aptariamos populiariausios „Docker“ alternatyvos. Be to, turime daug straipsnių, kuriuose „Docker“ lyginamas su kitomis platformomis:
- „Kubernetes“ ir „Docker“
- „Openshift“ ir „Docker“
- Podman prieš Docker