Kaj je docker - vse kar morate vedeti vvidmar

Zadnja leta je postala zelo popularna tehnologija Docker in Kubernetes. Tudi jaz sem že slišala za njo, ampak se nikakor nisem mogla odločiti, da bi jo uporabljala. Zagotovo je bil en minus, da zahteva kar nekaj ur učenja in preizkušanja. Pa razumevanje CI / CD poti ter še kaj drugega, ampak o tem bomo drugič.

Če vas zanima, kaj je Docker, potem je tale članek pravi za vas 🙂

Kaj je Docker

Docker je ena izmed najbolj popularnih ‘open source’ platform, ki omogočajo za izdelavo vsebnikov. 

Če ga želite uporabljati, si ga morate naložiti na svoj računalnik: https://www.docker.com/products/docker-desktop 

Vam pa lahko povem iz osebnih izkušenj, da je inštalacija v Linux okolja mnogo lažja kot na Windows. Za MacOS ne vem – mogoče nam zaupa kdo v komentarjih.

Kaj je razlika med Dockerjem in vsebnikom

Na kratko, Docker je ena izmed platform, ki omogoča, da programsko kodo zapakiramo v zabojnik ali vsebnik. Vsebnik je lahka programska oprema,ki omogoča virtualizacijo operacijskega sistema za izvajanje aplikacij in odvisnotsti v procesih, ki so izolirani od virov.  

Vsebniki so aplikacije, ki so pripravljene za uporabo in so izgrajene iz Dockerfile slik.Ali drugače povedano, vsebnik je delujoča instanca, ki je zgrajena na podlagi Docker slike.

Zakaj uporabljamo Docker

To je eno izmed vprašanj, na katerega sem si želela dobiti odgovor – zakaj je Docker toliko boljši? Kaj pridobimo, če ga implementiramo v naš delovni proces?

Izkaže se, da Docker omogoča, da se razvita aplikacija lažje prenaša med posameznimi informacijskimi sistemi in to tudi olajša optimizacijo aplikacije znotraj oblaka. Učinkovita uporaba tega orodja olajša delo razvijalcu in omogoča hitrejše testiranje s strani uporabnikov, kar posledično vodi v hitrejši razvoj aplikacije.

Prednosti:

– izoliranje programske kode od okolje na računalniku

– testiranje večih različic programske kode v različnih vsebnikih

– enostavnost

– preprostotst  – vsak vsebnik vsebuje vse, kar je potrebno za njegov uspešen zagon

– Hiter razvoj aplikacij

Slabosti:

– zahteva nadgradnjo znanja ljudi, ki so v vključeni v ta delovni proces

– Docker lahko upravlja z enim vsebnikom naenkrat

Če želite izvedeti še več, si lahko preberete v njihovi uradni dokumentaciji, ki je na voljo na strani: https://docs.docker.com/

Zakaj potrebujemo Dockerfile

Dockerfile je izvorna koda, na podlagi katere je zgrajena slika. Vsebuje vse sloje, ki so potrebni za zagon in delovanje ‘kapsulirane’ aplikacije.

Primer datoteke Dockerfile

“`

FROM python:3.8

COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt

# command to run on container start
CMD [ “python”, “app.py” ]

“`

FROM – tukaj pridobimo iz Docker Huba osnovno sliko, v bistvu srce, na katerem sem bo izvajala naša aplikacija (npr. ubuntu, python ipd.)

COPY – v vsebnik noter skopiramo mapo, ki vsebuje našo aplikacijo.

WORKDIR – tukaj določimo pot za naš delovni direktorij.

EXPOSE – ta ukaz odpre port s točno določeno številko

RUN – vsak ukaz, ki ga želite zagnati, se začne z besedico RUN

CMD – v Dockerfile datoteki je lahko samo ena CMD vrstica. Ta vrstica vsebuje ukaz, katere datoeke so potrebne za zagon vsebnika.

Če želite izvedeti še več o sami zgradbi Docker datoteke, vam priporočam, da vtipkate v vaš najljubši iskalnik ‘Anatomy of a Dockerfile’.

Zakaj potrebujemo sliko

Najprej odgovorimo na vprašanje, kaj je slika. Slika je v bistvu načrt vsebnika oziroma drugače povedano,slika vsebuje navodila, kako naj se zgradi vsebnik.

Pomembno je, da se zavedate, da je slika zgrajena iz večih slojev. Prvi sloj je vaš osnovni izbrani operacijski sistem, v drugem sloju dodate vašo programsko opremo ali aplikacijo, v naslednjem sloju dodate še naslednjo stvar, ki jo potrebujete za izgradnjo vašega vsebnika. 

Torej, zakaj potrebujemo sliko? Zato, ker slika vsebuje VSE sloje, ki so potrebni za uspešen zagon vašega vsebnika.

Razlika med Docker sliko in Docker vsebnikom

Docker slika nima stanja, medtem ko je Docker zabojnik delujoča instanca. Na podlagi ene Docker slike imamo lahko delujočih več različnih instanc oziroma eno sliko lahko uporablja več različnih vsebnikov hkrati.

Kako začeti z Dockerjem?

Če sem vas navdušila nad dockerji in se sprašujete, kje začeti, vam predlagam, da si pogledate stran Katakoda:  https://www.katacoda.com/courses/container-runtimes . 

Če jo želite uporabljati, registracija je obvezna (vzame 1 minutko, da se registrirate), ampka je pa dobra novica, da lahko uporabite poleg emaila tudi Github, Linkedin, Google ali Twitter račun.

Osnove Docker ukazne vrstice

Najbolj osnovni ukazi, ki jih potrebujemo za zčetek so naslednji:

docker images   – izpiše vse slike, ki so na vašem računalniku
docker ps – izpiše vse trenutno delujoče vsebnike

docker build  . – ta ukaz zdragi sliko iz Dockerfile datoteke. Če dodate na koncu piko, bo slika izgrajena iz Dockerfile datoteke, ki se nahaja v vašem trenutnem direktoriju

docker build  . -t testapp  – dobra praksa je, da svojo sliko poimenujete. To storite tako, da dodate -t [ime_slike]

docker run – to je osnovni ukaz za zagon slike, ki bo izgradila delujočo instanco vsebnika.
Celoten seznam vseh možnih ukazov izpišemo z:

docker help

in v terminalu se nam bo izpisalo naslednje:

kaj je docker - osnovni ukazi  vvidmar

Zaženimo vaš prvi vsebnik

Predlagam, da začnemo tukaj – Katakoda

https://www.katacoda.com/courses/docker/deploying-first-container

Začetek: Klikneš na gumb ‘START SCENARIO’

kaj je docker step 1 vvidmar

Naloga je sestavljena iz 6 korakov.

Prvi korak – zagon vsebnika

Drugi korak – preverimo katere so trenutno delujoči vsebnike (ukaz: docker ps)

Tretji korak – dostop do Redis. 

Če želimo dostopati do aplikacije znotraj vsebnika, moramo odpreti vrata oz. port (ukaz: docker run -d –name [name]  -p : [imagename] )

Četri korak – Dostop do Redis

Velika težava je, kadar imamo fiksni port, da imamo lahko naenkrat samo eno delujočo instanco.

Če želimo zagnati Redis na različnih instancah, potem moramo uporabiti opcijo ” 

-p 6379

To deluje, ampak sedaj ne vemo, kateri port uporablja posamezna instanca. To lahko ugotovimo z ukazom 

docker port redisDynamic 6379

Če uporabimo ukaz docker ps , tudi lahko pridobimo informacijo o mapiranju posameznih portov glede na delujoče instance.

Peti korak – trajnost podatkov

Potem, ko nekaj časa uporabljamo vsebnike, ugotovimo, da se podatki ne shranjujejo. Vsi podatki se izbrišejo v trenutku, ko se vsebnik ugasne.

Obstaja možnost, da vsebnik povežemo na zunanji direktorij z ukazom 

-v :

S tem ukazom se mapa ‘pripne’ na vsebnik in aplikacija znotraj vsebnika lahko bere podatke, ki so shranjeni na zunanjem viru. Ta moćnost omogoča nadgradnjo ali spremembo vsebnika brez da bi izgubili podatke.

Korak 6 – zagon vsebnika v ospredju

če zaženemo vsebnik bre -d opcije, to pomeni, da sevsebnik zaganja v ospredju. Če želimo dostopati do aplikacije preko bash lupine, potem dodamo v ukaz še -it 

docker run -it ubuntu bash

Vmesni člen: Docker Hub

Docker hub potrebujemo, če želimo povezati med seboj docker in kubernetes. Docker lahko uporabljate tudi brez Docker hub repositorija, npr. potisnete sliko v svoj interni privat repository.

Če se šele učite uporabljati Docker tehnologijo, vam toplo priporočam Docker Hub. Tam je veliko že narejenih slik, ki jih lahko uporabite brezplačno in na njih razvijate svoje prve projekte.

Če želite uporabljati slike, ki so na voljo na Docker Hubu, se morate registrirati in ustvariti svoj profil. Link do Docker Hub strani: https://hub.docker.com/ 

Tečaji / Izobraževanja

Če iščete nove vire, kjer bi lahko nadgradili vaše znanje o Dockerjih, tukaj je nekaj predlogov:

– https://www.docker.com/play-with-docker 

– https://www.katacoda.com/ 

– https://www.redhat.com/en/services/training/do080-deploying-containerized-applications-technical-overview 

ČE imate vi še kak predlog, mi ga prosim, pustite v komentarjih 🙂

Odgovor na vprašanje kaj je Docker

Upam,da sem odgovorila na vaše vprašanje: “Kaj je Docker ?”. Če se nameravate resno ukvarjati z programiranjem v prihodnosti, se vam splača poznati splošni okvir, kje ima ta tehnologija prednosti nad tehnologijo, kjer so uporabljali monolite. Mogoče se jo boste prej dodali v vaš delovni proces kot pričakujete.

Če imate še kakšno dodatno vprašanje, mi ga pustite spodaj v komentarjih.

Vesna

Last modified: November 26, 2021

Author

Comments

Pozdravljeni. Zanima me, ali bi bilo razumevanje Dockerjeve poti CI/CD pretežko. Vendar ste me spodbudili, da poskusim.

Uporabljal bi ga v operacijskem sistemu Linux. Zato se vam zahvaljujem, da ste delili informacijo, da ga je lažje namestiti v okolja Linux kot v okolja Windows.

Vaša objava mi je bila v pomoč. Zahvaljujem se vam, da ste mi omogočili, da sem se lahko odločil na podlagi dobrih informacij.

    Author

    Ja, res je, Dockerji so zelo zanimiv. CI/CD poti so zelo zanimive in jih bom opisala v prihodnjem članku.

Write a Reply or Comment

Your email address will not be published.