Docker nedir?

Resul Rzayev
4 min readMay 30, 2020

Bune gelmezden evvel yaxsi olar ki evvelce virtualization ve containerization arasinda ferqlere baxaq:

Dockerin bize verdiyi ustunluklerden biri tanis bir ssenari vardi hansiki biz bir programi google ede ede, problemleri fix ede ede install edirdik ve daha sonra onu diger bir adamin kompyuterine install etdikde islemeye bilirdi app-imiz. Sebebler muxtelif ola bilerdi RAM, jdk version, 3rd party hansisa lib versiya ferqi ve.s nese catismazliqlar ola bilerse bizim app islemirdi. Bunlardan xilas edir bizi docker. Hem de siz adi bir kompyutere ferz edek ki, yeni app elave etmelisiz ancaq bu tutaqki evvelki app-in nodejs bir veriysasini istifade edirse diger app diger versiya istifade etmelidirse bunun ucun belke elave konfigurasyalarla ede bielrsiz config fayllarda ancaq sabah 3, 4 ve.s daha cox app elave olunduqda ferqli konfiqurasyalarda bunun icinden cixmaq bas acmaq cetin olurdu hem de docker bundan da bizi xilas edir.

Virtualization metodunu da biz eslinde evveller istifade etmisik.Virtualizationda biz ne edirdik? hypervisor-lardan biri vasitesile kobud desek kompyuterimizin uzerine sanki ikinci bir ozunun ram, emeliyyat sistemi ve.s olan kompyuter yazirdiq. Meselem VMWare , VirtualBox ve.s istifade edirdik.

Ancaq bilirik ki, o hem bizim ram-dan cox yeyirdi, dona dona isleyirdi loru dilde desek, up olmasi cox gec vaxta cekirdi ve.s yeni ele de rahat deyildi bunu vaxti ile isledenler tesdiqleyer.

Containerization mentiqindide ise dockerde ise mesele ferqlidir burada docker engine istifade edilir ve burada esas ana kompyuterimizin emeliyyat sistemi uzerine qurulur.

Container kodu, fayllarimizi , konfiqurasiyalari ve.s butun dependencyleri bir paket halinda isole edib tutmaqdir eslinde. Saydiqlarimiz ozu image-lerde tutulur lakin hemin image-in run olmus instance-i container adlanir.

Burada start olma daha suretlidir daha az yer tutur, meqabayt hecminde tutur , vm-deki kimi GB data yox. Bir nece container rahat isleye bilir.

Mikroservis arxitekturasinin papulyarlasmasi ile birge hazirda daha da docker, docker compose populyarlasmisdir.

Javada neceki write once run anywhere idi docker ucun de package once deploy anywhere deye bilerik.

Bes docker nece isleyir ? Normalda siz oz kompyuterinizde docker install etdikde backgroundda texniki olaraq linux virtual machine de install edirsiz. Ve containerler eslinde burada create edilir. Hetta terminalda docker version command run etdikde goreceksiniz ki siyahida OS-da var ve linux yazilib.

Docker run etdikde backgorundda neler bas verir ?

“docker run image_name” run etdikde eslinde hard diskde tutulan image file system snapshot axtarilir image name-e uygun ve comtainerde process hard drive segmente elave edilir. Bu merhele create containerdir merhelesidir. Daha sonra biz start etdikde artiq process run ise dusur bu ise container start merhelesidir.

Docker file nedir ?

Containerimizin nece davranmasinin ssenarisini bu faylda configure edirik. Ssenaride 3 esas merhele var:

  • base image teyin etme
  • elave programlarin yuklenmesi ve istifadesi ucun mueyyen actionlar
  • run command

Eslinde biz bir docker container yaradrken asagidaki stepleri kecirik:

Docker file example:

Docker file parametrleri :

FROM — base image secilir ( Alpine ola biler )

COPY — bir fayli harasa kopyalamaq ucun

RUN — hansisa verilen commandi run etmek ucun

WORKDIR — directory set edirik ondan sorna gelen run,copy,cmd ve.s hemin directoryde run olur

CMD — container run olanda ise dusur , bir nece dene yazsaz ancaq sonuncu ise dusur yalniz cunki biri ise duse biler.

ENV — kenardan uygun enviroment faylimizdan parametrleri cekmek ucun

Build docker file and create image:

Build prosessinin step by step history-sine baxmaq istesez:

Get image list :

Run docker container:

Containers list :

Docker image silmek

Her hansi container stop et :

Restart container:

Stop and remove container : ( removedan evvel mutleq stop edilmelidir )

Containerimizin run zamani loguna baxmaq :

Docker comtainerimizi publish etmek, bunun ucun evvelce docker cloud accountunuz olmalidir:

Eger hub.docker.com- a girsek orada verdiyimiz tag ile repository-de imageimizi tapa, pull ede ve run ede bilerik.

--

--