JavaRush /Java Blog /Random-TK /Docker bilen ilkinji tanyşlyk
Viacheslav
Dereje

Docker bilen ilkinji tanyşlyk

Toparda çap edildi
Konteýnerizasiýa iş ýüzünde köplenç ulanylýan mehanizmdir. Mysal üçin, baş awçyny gözläniňizde, şu günki güne çenli Dokeri ýatladýan 477 boş iş taparsyňyz. Şonuň üçin onuň nämedigi bilen tanyşmak erbet pikir bolmaz. Bu gysga syn ilkinji pikiri döretmäge kömek eder diýip umyt edýärin. Garaz, Udemy kurslary ýaly goşmaça materiallar bilen ätiýaç eder. Docker bilen ilkinji tanyşlyk - 1

Giriş

Bu gysgaça synda konteýnerizasiýa ýaly mowzuga degmek isleýärin. Konteýnerizasiýanyň nämedigine düşünmekden başlamaly. Wikipediýa görä, “ Konteýnerizasiýa ” operasiýa ulgamy (ýagny apparat däl ) wirtuallaşdyrma bolup, operasiýa ulgamynyň ýadrosy diňe biriniň ýerine birnäçe ulanyjy giňişligini saklaýar. " Ulanyjy meýdançasy ", ulanyjy programmalary üçin niýetlenen operasiýa ulgamynyň wirtual ýat salgysydyr. Ulanyjy giňişlik mysallary (köplenç konteýnerler diýilýär) ulanyjynyň nukdaýnazaryndan ýekeje operasiýa ulgamy bilen doly meňzeýär. Ernadro konteýneriň doly izolýasiýasyny üpjün edýär, şonuň üçin dürli konteýnerlerden programmalar biri-birine täsir edip bilmez. Konteýnerizasiýa programma üpjünçiligini wirtuallaşdyrmak, ýagny operasiýa ulgamynyň ýadrosy jogapkär bolan operasiýa ulgamy derejesinde wirtuallaşdyrmak bolup durýar. Bu çemeleşmäniň häsiýetli aýratynlyklaryndan biri, ähli konteýnerleriň baş operasiýa ulgamy (ýagny konteýnerleriň ýerleşýän ýeri) ýaly umumy ýadrosy ulanmagydyr. Bu, wirtual enjamlary emulýasiýa etmekden we operasiýa ulgamynyň doly hukukly nusgasyny işe girizmekden dynmaga mümkinçilik berýär. Munuň “ýeňil” wirtuallaşdyryşdygyny aýdyp bileris. Ernadro, prosessoryň wagty, ýady, daşarky enjamlar we daşarky giriş we çykyş enjamlary ýaly kompýuter çeşmelerine utgaşdyrylan elýeterliligi üpjün edýän OS-nyň merkezi bölegidir. Ernadro, adatça, faýl ulgamy we tor protokol hyzmatlaryny üpjün edýär. Umuman aýdanyňda, bu tutuş ulgamyň ýüregidir. Goşmaça maglumat üçin " Konteýnerler barada umumy maglumat " materialyny gözden geçirmek peýdaly bolup biler . Girişiň tamamlanmagy üçin ýene birnäçe söz. Indi operasiýa ulgamynyň ýadrosynyň bardygyna düşündik. Ulanyjy giňişlik mysallary üçin izolýasiýa üpjün edýär. Bu kontekstde " toparlar " adalgasyna duş gelmek mümkin. Bu size ýetmäge mümkinçilik berýän Linux ýadrosynyň mehanizminiň ady. Şonuň üçin konteýnerizasiýa ýolunyň Linux ulgamlaryndan başlandygyny aýdyp bileris. Şeýle-de bolsa, Windows 10-dan başlap, konteýnerizasiýa goldawy hem peýda boldy. Wirtuallaşdyrma bilen işlemek üçin kompýuteriňiziň BIOS-da wirtuallaşdyrma goldawyny sazlamaly. Muny nädip etmeli kompýutere bagly. Mysal üçin, şeýle bolup biler:
Docker bilen ilkinji tanyşlyk - 2
Windows-da muny dürli usullar bilen barlap bilersiňiz. Mysal üçin, Microsoft web sahypasyndan ýörite enjamy göçürip alyp bilersiňiz: Apparat kömegi bilen wirtuallaşdyrmagy kesgitlemek guraly . Başga bir möhüm düşünjäni - Giperwizor barada bellemelidiris. Giperwizor, wirtual maşyn monitory, bir kompýuterde birnäçe operasiýa ulgamynyň paralel ýerine ýetirilmegini üpjün etmek üçin programma. Giperwizor operasiýa ulgamlarynyň biri-birinden üzňeleşmegini we işleýän OS-laryň arasynda çeşmeleri paýlaşmagyny üpjün edýär. Şeýle giperwizoryň biri Oracle VirtualBox .
Docker bilen ilkinji tanyşlyk - 3

Doker

Şeýlelik bilen, haýsy wirtuallaşdyrma düşnüklidir. Emma ony nädip ulanmaly? Ine, doker bize kömek edýär. Docker, konteýnerleşdirilen şertlerde programmalary ýerleşdirmegi we dolandyrmagy awtomatlaşdyrmak üçin programma üpjünçiligi. Docker-iň Docker Enginge ýaly düşünje bilen görkezilendigi bilen başlamaly. Resmi Docker web sahypasyndan we “ Docker Overview ” bölüminden başlamaly .
Docker bilen ilkinji tanyşlyk - 4
Resminamalarda dokeriň aşakdakylardan ybaratdygy aýdylýar.
  • Docker Daemon prosesi (dokerd) atly doker serweri.
  • Buýruk setiri interfeýsi, CLI (doker) hem diýilýär.
  • Programmalaryň deamon bilen "gürleşip" we näme etmelidigini aýdyp biljek REST API.
Has çuňňur öwrenmezden ozal, dokeri guralyň, ýagny doker daemonyny guralyň. Docker web sahypasynda " Windows üçin Docker " gurmak boýunça görkezmeler bar. Gyzykly tarapy, Dockeriň öz ulgam talaplary bar. Şeýle-de, meniň ýaly köne Windows bar bolsa, mysal üçin Windows 7 bolsa, Docker Toolbox ulanmaly.
Docker bilen ilkinji tanyşlyk - 5

Docker Toolbox

Docker-i ulgamyň talaplaryna laýyk gelmeýän köne maşynlara gurmak. Web sahypasy şeýle diýýär: “Miras Desktop Solution”. Geliň, " Docker Toolbox " sahypasyna girip göreliň. Bu toplumyň agramy takmynan 211 megabaýt. Ony deslapky görnüşde gurarys, ýagny baýdaklary täzeden düzmezden hemme zat bilen mylaýymlyk bilen ylalaşarys. Gurlandan soň, hemme zadyň gowydygyny barlarys. Geljekde söweş meýdanymyz buýruk setiri bolar. Windows buýruk setirini ulanmazlygy maslahat berýärin, sebäbi munuň bilen baglanyşykly kynçylyklar bolup biler. Baş gabygyny ulanmak has gowudyr. Windows-da almagyň iň maslahat berilýän usuly, git wersiýasyna gözegçilik ulgamyny gurmak , henizem peýdaly bolar. Sebäbi onuň bilen “baglanan” bize gerek zat bolar. Bu gözden geçirmek üçin git bash ulanaryn. Şeýle hem CYGWIN bilen bash gurup bilersiňiz . Baş ýa-da git bash başlalyň. “Docker Machine” diýlip hem atlandyrylýan “Docker Machine” -ni gurnandygymyzy anyklalyň: docker-machine -version Bu Docker Machine näme? “Docker Machine” dokerleşdirilen hostlary dolandyrmak üçin peýdalydyr (bular “Docker Motor” gurnalan hostlardyr). Buýrugy ulanyp, “Docket Toolbox” görnüşli doker maşynlaryny guranymyzdan soň docker-machine ls, boş sanawy göreris:
Docker bilen ilkinji tanyşlyk - 6
Geliň, täze enjam döredeliň. Munuň üçin döretmek buýrugyny işletmeli : docker-machine create -- driver virtualbox javarushDoker maşynyny döretmek gündeligini göreris:
Docker bilen ilkinji tanyşlyk - 7
Bu ýerde bizi gyzyklandyrýan zat aşakdakylar. Boot2Docker näme? Bu Docker motoryny işletmek üçin minimalistik Linux paýlanyşydyr (Docker-iň Linux wirtuallaşdyrma gurallarynyň kömegi bilen işleýändigine düşünýäris we Windows-da zerur mehanizm diňe Windows 10-dan başlap ýüze çykýar). Bu paýlama " Kiçijik ýadro Linux " paýlanyşyna esaslanýar . Şeýle hem, VirtualBox VM hakda agzaldy. Munuň sebäbi kesgitledik --driver virtualbox. Boot2Docker şekilinden VirtualBox-da täze wirtual maşyn döredildi. Döredilenden soň, VirtualBox-y işledip bileris (VirtualBox Docker Toolbox bilen gurnalanlygy sebäpli) we doker enjamy üçin döredilen wirtual maşyny görüp bileris:
Docker bilen ilkinji tanyşlyk - 8
Döredilenden soň, dok enjamyna birikmek üçin düzülmeli daşky gurşaw üýtgeýjilerini almak üçin “ docker-machine env ” buýrugyny işletmegimiz soralar :
Docker bilen ilkinji tanyşlyk - 9
Doker-maşyn ulanyp, bu buýrugy ýerine ýetirenimizden soň, uzakdaky dokerleşdirilen hosta birikýäris (bu ýagdaýda wirtual gutuda ýerleşdirilen wirtual) we doker buýruklaryny uzakdaky hostda ýerine ýetirýän ýaly ýerine ýetirip bileris. Barlamak üçin " doker maglumaty " buýrugyny işledip bileris . Doker maşynyna birikme gurulmasa, ýalňyşlyk alarys. Hemmesi gowy bolsa, dok enjamynda doker hakda maglumat. Dockeriň umuman işleýşine we ony nädip ulanmalydygyna düşünmegiň wagty geldi.
Docker bilen ilkinji tanyşlyk - 10

Doker konteýnerleri

Şeýlelik bilen bizde doker bar. Her niçigem bolsa bu doker näme? Docker resminamalary we “ Başla ” bölümi muňa düşünmäge kömek eder . Bu bölümiň giriş bölüminde Docker düşünjeleri bar . Docker-iň konteýnerlerde programmalary işläp düzmek, düzeltmek we işletmek üçin platforma bolandygyny aýdýar. Şonuň üçin Docker üçin esasy zat gaplardyr. Doker nyşanyna seretseňizem, arkasynda gap-gaç saklaýan kit. Konteýner näme? Ondan soň " Suratlar we konteýnerler " bölüminde bir konteýneriň "Image" -iň işleýän mysalydygy aýdylýar. Surat, programma üçin zerur zatlary (kod, daşky gurşaw, kitaphanalar, sazlamalar we ş.m.) öz içine alýan “paket”. Indi özümiz synap göreliň. Docker web sahypasynda " Täze başlanýanlar üçin doker" atly " Docker nusgalary " atly bölüm bar . Bu ýerdäki mysallar maňa has gyzykly görünýär. Şeýlelik bilen, birden “Alpine Linux” bilen tanyşmak isledik we muny “Docker” konteýnerleri arkaly edip bileris. Surat almak üçin ony "çekmeli" ýa-da "çekmeli". Şonuň üçin dokeri çekmek buýrugyny ýerine ýetirýäris :docker pull apline
Docker bilen ilkinji tanyşlyk - 11
Görşümiz ýaly, bir ýerden göçürip alýarys. Docker, https://hub.docker.com setindäki ammaryna seredýär . Suraty üstünlikli alanymyzdan soň, doker şekilleri buýrugyny işledip, bar bolan suratlaryň sanawyny barlap bileris :
Docker bilen ilkinji tanyşlyk - 12
Indi bizde aplin şekili bar. Konteýner şekiliň işleýän mysaly bolansoň, geliň şu suraty goýalyň. Buýrugy ulanyp konteýner işe başlalyň docker run alpine. Görşümiz ýaly hiç zat bolmady. Activehli işjeň konteýnerleri görkezmek buýrugyny ýerine ýetirsek docker ps, hiç zat almarys. Emma ýerine ýetirsek, docker ps -aähli konteýnerleri göreris:
Docker bilen ilkinji tanyşlyk - 13
Esasy zat, Docker-i interaktiw re inimde işe girizmedik. Şonuň üçinem buýrugy ýerine ýetirdi we saklandy. Buýruk terminaly açmakdy. Geliň, şol bir zady edeliň, ýöne interaktiw ( -it baýdagy bilen ):
Docker bilen ilkinji tanyşlyk - 14
Görşüňiz ýaly, bir ýalňyşlygy ýeňip geçip, maslahaty ulanyp, konteýneriň içine girdik we onda işläp bileris! Konteýneriň işini togtatman çykmak üçin basyp bilersiňiz Ctrl + p + q. Indi işlesek docker ps, bir işjeň konteýner göreris. Eýýäm işleýän konteýner girizmek üçin docker exec buýrugyny işlediň :
Docker bilen ilkinji tanyşlyk - 15
Bularyň nähili bolýandygyny ajaýyp düşündirmek üçin Docker nusgasynyň düşündirişini okamagy maslahat berýärin: “ 1.0 Ilkinji konteýneriňizi işletmek ”. Haladym, sebäbi hemme zat ol ýerde gaty elýeterli we düşnükli görnüşde ýazylýar. Gysgaça gaýtalamak üçin, doker-maşyny ulanyp, Docker Daemon-y işleýän wirtual maşyna birikdirdik. REST API-den CLI ulanyp, alp şekilini açmagy haýyş edýäris. Docker ony tapýar we şonuň üçin göçürip almaýar. Docker täze konteýner döredýär we bu konteýnerde görkezen buýrugymyzy işledýär. Elbetde, bularyň hemmesi gowy. Emma näme üçin bularyň hemmesi gerek? Ine, bu ýerde dokeriň şekil döredýändigini anyklamaly. Olary dokerfile esaslanýar.
Docker bilen ilkinji tanyşlyk - 16

Dockerfile

Dockerfile salgylanmasynda aýdylyşy ýaly , dokerfile şekil almak üçin ähli buýruklary öz içine alýan tekst faýlydyr. Aslynda, alýan ähli suratlarymyz (hatda Alp, ýokardaky mysaldan) dokerfile döredildi. Geliň, suratymyzy Java programmasy bilen guralyň. Ilki bilen bu Java programmasy gerek. “Gradle” gurmak ulgamyny ulanmagy maslahat berýärin, bu gysga synda has giňişleýin okap bilersiňiz: “ Gradle bilen gysgaça tanyşlyk ”. " Gradle Build init plugin " taslamasyny döretmäge kömek eder . Gradle ulanyp, täze Java programmasyny döredeliň: gradle init --type java-application Bu buýruk şablon Java taslamasyny döredýär. Bu özbaşdak programma, ýöne web programmasy döretmek isleýäris. Programma we AppTest synplaryny aýyralyň (olar Gradle Build Init Plugin tarapyndan awtomatiki usulda döredildi). Web programmasyny çalt döretmek üçin Gradle: “ Java Web Programmalary gurmak ” gollanmasyny ulanarys . Gollanma laýyklykda, geliň: Bu ýerde seresap bolmaly. Hemişe bolşy ýaly, mysallarda ýalňyşlyklar bolup biler. Ine:
Docker bilen ilkinji tanyşlyk - 17
Indi synap görmek üçin, " Gretty plugin goşuň we programmany işlediň " bölüminde görkezilişi ýaly, build.gradle üçin gretty plugin goşalyň :
plugins {
    id 'war'
    id 'org.gretty' version '2.2.0'
}
Gretiniň ýokarda beýan edilen ýalňyşlygy görmeýändigi gyzykly HelloServlet. Bu, programmanyň dürli gurşawda başgaça hereket edip biljekdigini subut edýär. Gretty adaty özbaşdak serweriň ýalňyşlyk goýberýän ýerinde işläp biler. Galan zat, programmanyň dogry işleýändigini barlamak. Geliň:gradle appRun
Docker bilen ilkinji tanyşlyk - 18
gradle warAllhli zat gowy bolsa, uzaldyş söweşi (web arhiwi) bilen arhiw ýygnamak buýrugyny ulanyň . Düzgüne görä, gradle ony \build\libs. Indi dokerfaýlymyzy ýazmaga taýyn. " Dockerfile salgylanmasy " ulanyp, Dockerfile dörederis. Java taslamamyzyň kökünde (gurluşyk skripti bilen bir ýerde) "Dockerfile" atly bir faýl döredeliň. Redaktirlemek üçin açalyň. Bu faýlyň " Dockerfile salgylanmasy: Format " bölüminde beýan edilen öz formaty bar . Islendik dokerfile, "esasy şekili" görkezýän FROM beýany bilen başlaýar. Munuň esasynda öz keşbimizi ýasaýan esasy keşbimiz diýip bileris. Ene-atanyň keşbini saýlamak biziň üçin gaty aňsat. Web programmasy web serwerine mätäç. Mysal üçin, Tomcat web serwerini ulanyp bileris. Doker merkezi diýilýän resmi Docker ammaryna barýarys . Gerekli şekiliň bardygyny ýa-da ýokdugyny görmek üçin şol ýere seredýäris:
Docker bilen ilkinji tanyşlyk - 19
Tomkat şekiliniň atlandyrylýandygyna hem düşünmelidiris. Emma adyndan başga-da belligi bar. Bellik wersiýa meňzeýär. Dürli wersiýadaky Tomkat şekilleri, Tomkatyň haýsy wersiýasynyň ulanylandygy, jre haýsy wersiýasy we haýsy esasy şekil bilen tapawutlanýar. Mysal üçin, şekil alyp bileris docker pull tomcat:9-jre8-alpine Tomkatyň 9-njy wersiýasyny, jre 8-nji wersiýasyny we alp şekilini esas hökmünde ulanýar. Bu, keşbimiziň göwrümini azaltmak üçin möhüm bolup biler:
Docker bilen ilkinji tanyşlyk - 20
Görşümiz ýaly, tapawut gaty uludyr. Tomkata alpine esaslanýan şekilimizi gursak, 600 bilen däl-de, diňe 100 megabaýt bilen başlarys. Şoňa görä-de, ozal döredilen dokerfile aşakdaky mazmuny goşarys:
# Базовый образ, "наследуемся" от него
FROM tomcat:9-jre8-alpine
# Копируем из Build Context'а собранный web archive в каталог томката
COPY build/libs/docker.war /usr/local/tomcat/webapps/docker.war
# Меняем рабочий каталог на томкатовский
WORKDIR /usr/local/tomcat
# Открываем порт 8080 для контейнера, т.к. его слушает томкат
EXPOSE 8080
Indi bolsa şekili gurmak buýrugyny ýerine ýetireliň : docker build -t jrdocker ..
Docker bilen ilkinji tanyşlyk - 21
-t- bu bellik, ýagny ýygnalan şekile näme diýmeli. Ahyryndaky nokat, häzirki katalogy (dokerfile ýerleşýän we buýrugy ýerine ýetiren katalogymyzy) goşýandygymyzy aňladýar Build context. Build context- dokerfile döredilende elýeterli şol faýllaryň mazmuny. Görşüňiz ýaly, munuň netijesinde ýygnanan söweş faýlyny öz suratymyza, web serwer katalogyna göçürip bildik. Indi öz keşbimizi işledeliň:docker run -d --rm -p 8888:8080 jrdocker
Docker bilen ilkinji tanyşlyk - 22
Serweriň işe başlandygyna ýa-da ýokdugyna düşünmek üçin konteýnerden gündelige seredip bilersiňiz. Konteýneriň şahsyýetini ýa-da adyny görkezip, ýazgy gündeligi buýrugy bilen alyp bilersiňiz. Mysal üçin:
Docker bilen ilkinji tanyşlyk - 23
Elmydama buýruk bilen işleýän konteýneriň ýanyna baryp biljekdigimizi ýatdan çykarmaň: winpty docker exec -it NameКонтейнера sh Indi diňe birikmek galdy. Ozal EXPOSE kesgitledik , ýagny konteýneriň içinden 8080-nji porta girmäge rugsat berdik. Konteýneriň özüni işe girizenimizde, -p ( gelýän portlar ) belligini kesgitledik, şeýlelik bilen konteýnerdäki 8080 porty (Tomcat web serweri) baglanyşdyrdyk. ol ýerde birikmelere garaşýar) doker daemonly enjamda 8888 porty bilen. .Adymyzda bolsa, doker daemonyny göni däl-de, doker-maşyn arkaly işe girizdik. Şonuň üçin, docker-machine ls buýrugyny ulanyp, doker maşynlarymyzdan ýene bir gezek maglumat soralyň we konteýnerdäki serwer bilen habarlaşalyň:
Docker bilen ilkinji tanyşlyk - 24
Şeýlelik bilen, siz we men ýaňy-ýakynda web programmamyzy Docker konteýnerinde açdyk! ) Aşakdakylary hem belläsim gelýär. Giriş meselesi ýüze çykan halatynda Docker maşynynyň ilkinji nobatda Wirtual BOx wirtual maşynydygyny ýadyňyzdan çykarmaly dälsiňiz. Wirtual maşynyň tor sazlamalarynda näsazlyklar bolup biler. Işleýän VMBox konfigurasiýasy şeýle bolup biler:
Docker bilen ilkinji tanyşlyk - 25
Docker bilen ilkinji tanyşlyk - 26

Gatlaklar

Suratlaryň dokerfaýllardan döredilendigine we dokerfaýllaryň buýruklar toplumydygyna eýýäm göz ýetirdik. Şeýle hem, dokfiliň ene-atasynyň bardygyny bildik. Suratlaryň ululygy başga. Gyzykly tarapy, dokeriň taryhy buýrugy bilen şekiliň nädip gurlandygyny görüp bilersiňiz . Mysal üçin:
Docker bilen ilkinji tanyşlyk - 27
Aslynda, her bir şekiliň şekiller toplumydygyna düşünmek üçin muny aýtmak möhümdir. Her şekil üýtgemegi (dokerfaýldaky her täze buýruk) öz şahsyýeti bolan täze gatlak döredýär. Gatlaklar barada has giňişleýin " Docker: Suratlar we Layers " resminamalarynda okap bilersiňiz . Şeýle hem, Habre: " Suratlardaky doker şekilleri we gaplar " atly makalany okamagy maslahat berýärin .

Netije

Bu gysgaça syn, konteýnerizasiýa bilen gyzyklanmak üçin ýeterlikdir diýip umyt edýärin. Aşakda peýdaly bolup biljek goşmaça materiallara baglanyşyklar bar: # Wiaçeslaw
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION