JavaRush /Blog Jawa /Random-JV /Kaping pisanan kenalan karo Docker
Viacheslav
tingkat

Kaping pisanan kenalan karo Docker

Diterbitake ing grup
Containerization minangka mekanisme sing asring digunakake ing praktik. Contone, nalika sampeyan nggoleki ing headhunter, sampeyan bakal nemokake 477 lowongan nganti saiki sing nyebutake Docker. Mulane, iku ora bakal dadi idea ala kanggo familiarize dhewe karo apa iku. Mugi review singkat iki bakal bantuan mbentuk idea pisanan. Ya, dheweke bakal nggawe serep karo bahan tambahan, kayata kursus ing Udemy. Pambuka pisanan kanggo Docker - 1

Pambuka

Ing review singkat iki aku pengin ndemek topik kayata containerization. Lan sampeyan kudu miwiti kanthi mangerteni apa containerization bener. Miturut Wikipedia, " Kontainerisasi " yaiku virtualisasi tingkat sistem operasi (yaiku dudu hardware) ing ngendi kernel sistem operasi njaga sawetara ruang pangguna sing terisolasi tinimbang mung siji. " Ruang pangguna " yaiku ruang alamat memori virtual sistem operasi sing dicadhangake kanggo program pangguna. Instance ruang pangguna (umume disebut wadhah) pancen identik karo conto sistem operasi siji saka sudut pandang pangguna. Kernel njamin isolasi wadhah lengkap, saengga program saka wadhah sing beda ora bisa mengaruhi siji liyane. Ternyata containerization minangka virtualisasi piranti lunak, yaiku, virtualisasi ing tingkat sistem operasi, sing tanggung jawab kernel sistem operasi. Salah sawijining fitur karakteristik pendekatan iki yaiku kabeh kontaner nggunakake kernel umum, padha karo sistem operasi host (yaiku, sing ana wadah). Iki ngidini sampeyan nyingkirake overhead saka emulating hardware virtual lan miwiti Kayata lengkap saka sistem operasi. Kita bisa ujar manawa iki minangka virtualisasi "entheng". Kernel minangka bagéan tengah saka OS sing nyedhiyakake aplikasi kanthi akses terkoordinasi menyang sumber daya komputer, kayata wektu prosesor, memori, hardware eksternal, lan piranti input lan output eksternal. Kernel uga biasane nyedhiyakake sistem file lan layanan protokol jaringan. Umumé, iki minangka jantung kabeh sistem. Kanggo informasi tambahan, bisa uga migunani kanggo mriksa materi " Informasi umum babagan wadhah ". Lan sawetara tembung liyane kanggo nggawe pambuka lengkap. Saiki kita ngerti manawa sistem operasi duwe kernel. Nyedhiyakake isolasi kanggo kedadeyan ruang pangguna. Ing konteks iki, sampeyan bisa nemokake istilah " cgroups ". Iki minangka jeneng mekanisme kernel Linux sing ngidini sampeyan entuk iki. Mulane, kita bisa ngomong yen path containerization diwiwiti karo sistem Linux. Nanging, diwiwiti karo Windows 10, dhukungan kanggo containerization uga muncul. Kanggo nggarap virtualisasi, sampeyan kudu ngatur dhukungan virtualisasi ing BIOS komputer. Carane nindakake iki gumantung ing komputer. Contone, bisa uga katon kaya iki:
Pambuka pisanan kanggo Docker - 2
Ing Windows sampeyan bisa mriksa iki kanthi cara sing beda-beda. Contone, sampeyan bisa ngundhuh sarana khusus saka situs web Microsoft: Alat Deteksi Virtualisasi sing Dibantu Hardware . Inggih, iku worth nyebutke konsep penting liyane - Hypervisor. Hypervisor minangka monitor mesin virtual, program kanggo njamin eksekusi paralel sawetara sistem operasi ing komputer sing padha. Hypervisor njamin yen sistem operasi diisolasi saka siji liyane lan nuduhake sumber daya ing antarane OS sing mlaku. Salah sawijining hypervisor kasebut yaiku Oracle VirtualBox .
Pambuka pisanan kanggo Docker - 3

Docker

Dadi, apa virtualisasi sing jelas. Nanging carane nggunakake? Lan ing kene Docker nulungi kita. Docker minangka piranti lunak kanggo ngotomatisasi panyebaran lan manajemen aplikasi ing lingkungan kontainer. Iku worth miwiti karo kasunyatan sing Docker diwakili dening konsep kayata Docker Enginge. Lan sampeyan kudu miwiti situs web Docker resmi lan bagean " Ringkesan Docker ".
Pambuka pisanan kanggo Docker - 4
Dokumentasi kasebut ujar manawa docker kalebu:
  • Server Docker disebut proses Docker Daemon (dockerd).
  • Antarmuka baris perintah, uga dikenal minangka CLI (docker).
  • A REST API sing njlèntrèhaké carane program bisa "ngomong" deamon lan ngomong apa apa.
Sadurunge kita nyilem luwih, ayo nginstal docker, yaiku, nginstal daemon docker. Situs web Docker duwe instruksi kanggo nginstal " Docker kanggo Windows ". Sing nggumunake, Docker duwe syarat sistem dhewe. Lan yen sampeyan, kaya aku, duwe Windows lawas, contone Windows 7, sampeyan kudu nggunakake Docker Toolbox.
Pambuka pisanan kanggo Docker - 5

Kothak piranti Docker

Kanggo nginstal Docker ing mesin lawas sing ora nyukupi syarat sistem. Situs web kasebut ujar, "Solusi Desktop Warisan". Ayo menyang kaca " Docker Toolbox " lan download. Set iki bobote kira-kira 211 megabyte. Kita bakal nginstal minangka standar, yaiku, kita mung bakal setuju karo kabeh tanpa ngatur maneh panji. Sawise instalasi, kita bakal mriksa yen kabeh apik. Ing mangsa ngarep, medan perang kita bakal dadi komando. Aku nyaranake ora nggunakake baris printah Windows, amarga bisa uga ana masalah unobvious karo. Iku luwih apik kanggo nggunakake bash shell. Ing Windows, cara sing paling disaranake yaiku nginstal sistem kontrol versi git , isih bakal migunani. Amarga "dibundel" bakal dadi bash sing kita butuhake. Kanggo review iki aku bakal nggunakake git bash. Sampeyan uga bisa nginstal bash karo CYGWIN . Ayo miwiti bash utawa git bash. Priksa manawa kita wis nginstal Mesin Docker, uga dikenal minangka Mesin Docker: docker-machine -version Apa Mesin Docker iki? Docker Machine minangka sarana kanggo ngatur host dockerized (iki minangka host sing diinstal Docker Engine). Yen kita langsung nginstal Docket Toolbox ndeleng mesin docker nggunakake printah docker-machine ls, kita bakal weruh dhaptar kosong:
Pambuka pisanan kanggo Docker - 6
Ayo nggawe mesin anyar. Kanggo nindakake iki, kita kudu mbukak printah nggawe : docker-machine create -- driver virtualbox javarush: Kita bakal weruh log nggawe mesin docker:
Pambuka pisanan kanggo Docker - 7
Sing narik kawigaten kita ing kene yaiku ing ngisor iki. Apa Boot2Docker? Iki minangka distribusi Linux minimalis kanggo nglakokake Docker Engine (kita ngerti manawa Docker bisa digunakake kanthi alat virtualisasi Linux, lan ing Windows mekanisme sing dibutuhake mung diwiwiti karo Windows 10). Distribusi iki adhedhasar distribusi " Tiny Core Linux ". Uga kasebut babagan VirtualBox VM. Iki amarga kita nemtokake --driver virtualbox. Mesin virtual anyar digawe ing VirtualBox saka gambar Boot2Docker. Sawise nggawe, kita bisa miwiti VirtualBox (amarga VirtualBox wis diinstal karo Docker Toolbox) lan ndeleng mesin virtual sing digawe kanggo mesin docker:
Pambuka pisanan kanggo Docker - 8
Sawise nggawe, kita bakal dijaluk mbukak printah " docker-machine env " kanggo entuk variabel lingkungan sing kudu dikonfigurasi kanggo nyambung menyang mesin docker:
Pambuka pisanan kanggo Docker - 9
Sawise nglakokake printah iki nggunakake docker-machine, kita nyambung menyang host dockerized remot (ing kasus iki, virtual sing di-host ing Virtual Box) lan bisa nglakokake perintah docker sacara lokal kaya-kaya kita ngeksekusi ing host remot. Kanggo mriksa, kita bisa mbukak printah " info docker ". Yen sambungan menyang mesin docker ora ditetepake, kita bakal nampa kesalahan. Lan yen kabeh iku uga, informasi bab docker ing mesin docker. Saiki iki wektu kanggo ngerti cara kerja Docker umume lan cara nggunakake.
Pambuka pisanan kanggo Docker - 10

Wadhah Docker

Dadi kita duwe docker. Iki docker opo toh? Dokumentasi Docker lan bagean " Miwiti " bakal mbantu kita ngerti iki . Bagean pambuka bagean iki ngenalake Konsep Docker . Iki nyatakake yen Docker minangka platform kanggo ngembangake, debugging lan mbukak aplikasi ing wadhah. Mulane, sing utama kanggo Docker yaiku kontaner. Malah yen katon ing logo docker, iku paus sing nyekeli wadhah ing mburi. Nanging apa wadhah? Sabanjure ing bagean " Gambar lan Wadah " ujar manawa wadhah minangka conto gambar sing mlaku. Lan Gambar minangka "paket" sing ngemot kabeh sing dibutuhake kanggo aplikasi kasebut (kode, lingkungan, perpustakaan, setelan, lsp). Saiki ayo nyoba dhewe. Situs web Docker duwe bagean sing diarani " Contoh Docker " sing kalebu " Docker for Beginners ". Conto saka kene katon luwih menarik kanggo kula. Dadi, dumadakan kita pengin kenalan karo Alpine Linux lan kita bisa nindakake iki nggunakake wadhah Docker. Kanggo njupuk gambar, kita kudu "narik" utawa "narik" metu. Mulane, kita nglakokake perintah docker pull :docker pull apline
Pambuka pisanan kanggo Docker - 11
Minangka kita bisa ndeleng, kita ngundhuh saka ngendi wae. Kanthi gawan, Docker katon ing repositori ing jaringan https://hub.docker.com . Sawise kasil njupuk gambar kasebut, kita bisa mriksa dhaptar gambar sing kasedhiya kanthi mbukak printah gambar docker :
Pambuka pisanan kanggo Docker - 12
Saiki kita duwe gambar apline. Amarga wadhah kasebut minangka conto gambar sing mlaku, ayo miwiti gambar iki. Ayo miwiti wadhah nggunakake printah docker run alpine. Kaya sing kita deleng, ora ana sing kedadeyan. Yen kita nglakokake printah docker pskanggo nampilake kabeh kontaner aktif, kita uga bakal entuk apa-apa. Nanging yen kita nindakake, docker ps -akita bakal weruh kabeh kontaner:
Kenal pisanan karo Docker - 13
Masalahe yaiku kita ora ngluncurake Docker ing mode interaktif. Mulane, dheweke nindakake perintah kasebut lan mandheg. Prentah kasebut mbukak terminal. Ayo padha nglakoni, nanging ing mode interaktif (karo -it flag ):
Pambuka pisanan kanggo Docker - 14
Nalika sampeyan bisa ndeleng, wis ngalahake siji kesalahan lan nggunakake Petunjuk, kita entuk wadhah lan bisa ing! Kanggo metu saka wadhah tanpa mandheg operasi, sampeyan bisa mencet Ctrl + p + q. Yen kita mbukak saiki docker ps, kita bakal weruh siji wadhah aktif. Kanggo ngetik wadhah sing wis mlaku, jalanake perintah docker exec :
Kenal pisanan karo Docker - 15
Aku nyaranake maca katrangan saka sampel Docker kanggo katrangan sing apik babagan kabeh kedadeyan: " 1.0 Mlaku wadhah pisanan sampeyan ". Aku seneng amarga kabeh ditulis ing kono kanthi cara sing gampang diakses lan bisa dingerteni. Kanggo rephrase sedhela, kita disambungake nggunakake docker-mesin menyang mesin virtual sing nganggo Docker Daemon. Nggunakake CLI liwat REST API, kita takon kanggo miwiti gambar alpine. Docker nemokake lan mulane ora ndownload. Docker nggawe wadhah anyar lan nglakokake perintah sing wis ditemtokake ing wadhah iki. Lan kabeh iki, mesthi, apik. Nanging kenapa kita butuh kabeh iki? Lan ing kene kita kudu ngerti carane docker nggawe gambar. Lan dheweke nggawe dheweke adhedhasar dockerfile.
Pambuka pisanan kanggo Docker - 16

Dockerfile

Kaya sing kasebut ing referensi Dockerfile , dockerfile minangka file teks sing ngemot kabeh perintah kanggo njupuk gambar. Nyatane, kabeh gambar sing ditampa (malah Alpine, saka conto ing ndhuwur) digawe saka dockerfile. Ayo gawe gambar nganggo aplikasi Java. Lan pisanan kita kudu aplikasi Java iki. Aku saranake nggunakake sistem mbangun Gradle, sing bisa diwaca luwih lengkap babagan review singkat iki: " Pambuka Brief kanggo Gradle ". Bakal mbantu kita nggawe proyek " Gradle Build init plugin ". Ayo nggawe aplikasi Java anyar nggunakake Gradle: gradle init --type java-application Printah iki nggawe proyek Java cithakan. Iki minangka aplikasi mandiri, nanging kita pengin nggawe aplikasi web. Ayo mbusak kelas App lan AppTest (padha digawe kanthi otomatis dening Gradle Build Init Plugin). Kanggo nggawe aplikasi web kanthi cepet, kita bakal nggunakake tutorial saka Gradle: " Mbangun Aplikasi Web Java ". Miturut tutorial, ayo nglakoni: Sampeyan kudu ati-ati ing kene. Kaya biasane, bisa uga ana kesalahan ing conto. Punika:
Pambuka pisanan kanggo Docker - 17
Saiki, kanggo nyoba, ayo nambah plugin gretty menyang build.gradle, kaya sing dituduhake ing bagean " Tambahake plugin gretty lan mbukak aplikasi ":
plugins {
    id 'war'
    id 'org.gretty' version '2.2.0'
}
Iku menarik sing Gretty ora weruh kesalahan ing HelloServlet, kang diterangake ing ndhuwur. Iki mbuktekake manawa aplikasi bisa tumindak kanthi beda ing lingkungan sing beda. Gretty bisa kerja ing ngendi server mandiri biasa bakal nggawe kesalahan. Kabeh sing isih ana yaiku mriksa manawa aplikasi kasebut bisa digunakake kanthi bener. Ayo nglakoni:gradle appRun
Kenal pisanan karo Docker - 18
Yen kabeh apik, banjur gunakake printah gradle warkanggo ngumpulake arsip kanthi perang ekstensi (arsip web). Kanthi gawan, gradle mbangun ing \build\libs. Saiki, kita siyap nulis file docker kita. Nggunakake " Referensi Dockerfile " kita bakal nggawe Dockerfile. Ayo nggawe file sing diarani "Dockerfile" ing oyod proyek Java (ing panggonan sing padha karo skrip mbangun). Ayo mbukak kanggo nyunting. Berkas iki nduweni format dhewe, diterangake ing bagean " Referensi Dockerfile: Format ". Sembarang file docker diwiwiti kanthi pratelan FROM, nuduhake "gambar dasar". Kita bisa ngomong yen iki minangka gambar induk kanthi basis sing nggawe gambar kita. Gampang banget kanggo kita milih gambar wong tuwa. Aplikasi web mbutuhake server web. Contone, kita bisa nggunakake server web Tomcat. Kita menyang repositori Docker resmi, sing diarani hub docker . Kita katon ing kono kanggo ndeleng manawa gambar sing dibutuhake ana:
Kenal pisanan karo Docker - 19
Sampeyan uga kudu ngerti yen gambar tomcat diarani. Nanging saliyane jeneng duwe tag. Tag kaya versi. Gambar Tomcat saka versi sing beda-beda beda karo versi Tomcat sing digunakake, versi jre lan gambar dhasar. Contone, kita bisa njaluk gambar docker pull tomcat:9-jre8-alpine Iku nggunakake versi 9 saka Tomcat, jre versi 8 lan gambar alpine minangka basa. Iki bisa dadi penting kanggo nyuda ukuran gambar:
Pambuka pisanan kanggo Docker - 20
Minangka kita bisa ndeleng, prabédan ageng. Yen kita mbangun gambar adhedhasar tomcata alpine, kita bakal miwiti mung 100 megabyte, lan ora karo 600. Dadi, kita bakal nambah konten ing ngisor iki menyang file docker sing digawe sadurunge:
# Базовый образ, "наследуемся" от него
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
Lan saiki ayo nglakoni perintah kanggo mbangun gambar: docker build -t jrdocker ..
Kenal pisanan karo Docker - 21
-t- iki minangka tag, yaiku, apa sing diarani gambar sing dirakit. Titik ing pungkasan tegese kita nambah direktori saiki (direktori ing ngendi dockerfile dumunung lan ing ngendi kita mbukak perintah kasebut) menyang Build context. Build context- iki konteks file sing kasedhiya nalika nggawe dockerfile. Kaya sing sampeyan ngerteni, amarga iki, kita bisa nyalin file perang sing dirakit menyang gambar kita, menyang direktori server web. Saiki ayo mbukak gambar kita:docker run -d --rm -p 8888:8080 jrdocker
Kenal pisanan karo Docker - 22
Kanggo ngerti apa server wis diwiwiti, sampeyan bisa ndeleng log saka wadhah. Log bisa dipikolehi nggunakake perintah docker logs, nemtokake wadhah kanthi ID utawa jeneng. Tuladhane:
Kenal pisanan karo Docker - 23
Inggih, aja lali manawa kita bisa pindhah menyang wadhah sing mlaku kanthi jeneng kanthi prentah: winpty docker exec -it NameКонтейнера sh Saiki sing isih ana yaiku nyambungake. Sadurunge, kita nemtokake EXPOSE , yaiku, kita ngidini akses menyang port 8080 saka njero wadhah. Nalika kita mbukak wadhah kasebut, kita nemtokake tag -p ( port mlebu ), saéngga ngubungake port 8080 ing wadhah kasebut (server web Tomcat nunggu sambungan ana) karo port 8888 ing mesin karo daemon docker. Nalika kita ngelingi, kita ngluncurake daemon docker ora langsung, nanging liwat mesin docker. Mula, ayo takon maneh data babagan mesin docker nggunakake perintah docker-machine ls lan hubungi server ing wadhah kasebut:
Pambuka pisanan kanggo Docker - 24
Mangkono, sampeyan lan aku bubar ngluncurake aplikasi web ing wadhah Docker! ) Aku uga pengin Wigati ing ngisor iki. Yen ana masalah akses, sampeyan kudu ngelingi yen mesin Docker minangka mesin virtual Virtual Box. Bisa uga ana masalah karo setelan jaringan mesin virtual. Konfigurasi VMBox sing bisa digunakake bisa uga katon kaya iki:
Kenal pisanan karo Docker - 25
Kenal pisanan karo Docker - 26

Lapisan

Kita wis ngerti manawa gambar digawe saka dockerfiles lan dockerfiles minangka set perintah. Kita uga ngerteni manawa dockerfile duwe wong tuwa. Lan ukuran gambar beda-beda. Sing nggumunake, sampeyan bisa ndeleng sejarah babagan carane gambar kasebut dibangun kanthi nggunakake perintah sejarah docker . Tuladhane:
Kenal pisanan karo Docker - 27
Penting kanggo ngomong iki kanggo mangerteni yen, ing intine, saben gambar minangka sakumpulan gambar. Saben pangowahan gambar (saben printah anyar ing dockerfile) nggawe lapisan anyar sing duwe ID dhewe. Sampeyan bisa maca liyane babagan lapisan ing dokumentasi " Docker: Gambar lan Lapisan ". Aku uga nyaranake maca artikel babagan Habré: " Gambar lan wadhah ing gambar Docker ."

Kesimpulan

Muga-muga ringkesan singkat iki cukup kanggo nggawe sampeyan kasengsem ing containerization. Ing ngisor iki ana pranala menyang materi tambahan sing bisa migunani: #Viacheslav
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION