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.
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 .
Resminamalarda dokeriň aşakdakylardan ybaratdygy aýdylýar.
Geliň, täze enjam döredeliň. Munuň üçin döretmek buýrugyny işletmeli :
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
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 :
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.
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 :
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ň
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 ):
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
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.
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ň :
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
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:
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:
Elmydama buýruk bilen işleýän konteýneriň ýanyna baryp biljekdigimizi ýatdan çykarmaň:
Ş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:
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 .
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: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 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.
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-machine create -- driver virtualbox javarush
Doker maşynyny döretmek gündeligini göreris:
--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:
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 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:
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ň :
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ň:
- Gurmak skript build.gradle açalyň we " Gradle build faýly goşuň " bölümine görä düzedeliň.
- " Demo programmasyna JSP sahypalaryny goş " bölüminde görkezilişi ýaly src / main / webapp sahypalaryny goşalyň .
- Geliň, " Taslama serwlet we metadata goş
HelloServlet
" bölümindäki mazmunly synp 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
gradle war
Allhli 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 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:
# Базовый образ, "наследуемся" от него
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 .
.
-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
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ň:
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: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:- Dockerfiles ýazmak üçin iň oňat tejribe
- Docker Machine ulanyp, uzakdaky hostda konteýner
- Habré makalasy " Doker. Başlanýar "
- Habré " Docker şekillerini optimizirlemek " makalasy.
- Udemy: " Docker bilen başlamak "
- Youtube: " A-dan Z-a çenli doker sapaklary "
- Docker programma üpjünçiliginiň aýratynlyklary [GeekBrains]
GO TO FULL VERSION