Ngerti Docker

Aku wis nggunakake Docker kanggo sawetara sasi saiki kanggo struktur pembangunan / proses pangiriman proyek web. Aku nawakake pembaca Habrakhabr terjemahan artikel pambuka babagan docker - "Ngerti doker".

Apa iku docker?

Docker minangka platform mbukak kanggo ngembangake, ngirim, lan ngoperasikake aplikasi. Docker dirancang kanggo ngirim aplikasi luwih cepet. Kanthi docker, sampeyan bisa ngilangi aplikasi saka infrastruktur sampeyan lan nganggep infrastruktur kasebut minangka aplikasi sing dikelola. Docker mbantu ngirim kode luwih cepet, nyoba luwih cepet, ngirim aplikasi luwih cepet, lan nyuda wektu antarane nulis kode lan kode mlaku. Docker nindakake iki liwat platform virtualisasi wadhah sing entheng, nggunakake proses lan utilitas sing mbantu sampeyan ngatur lan dadi tuan rumah aplikasi sampeyan.

Ing inti, docker ngidini sampeyan mbukak meh kabeh aplikasi, kanthi aman diisolasi ing wadhah. Isolasi sing aman ngidini sampeyan mbukak akeh kontaner ing host sing padha bebarengan. Sifat entheng saka wadhah, sing mlaku tanpa beban tambahan saka hypervisor, ngidini sampeyan entuk luwih akeh saka hardware.

Platform lan alat virtualisasi wadah bisa migunani ing kasus ing ngisor iki:

  • ngemas aplikasi sampeyan (lan komponen sing sampeyan gunakake) menyang wadhah docker;
  • distribusi lan pangiriman wadhah kasebut menyang tim sampeyan kanggo pangembangan lan uji coba;
  • nyelehake wadhah kasebut ing situs produksi sampeyan, ing pusat data lan ing awan.

Apa sing bisa digunakake docker?

Cepet nerbitake aplikasi sampeyan

Docker apik kanggo ngatur siklus pangembangan. Docker ngidini pangembang mbukak wadhah lokal kanthi aplikasi lan layanan. Sing sabanjure ngidini sampeyan nggabungake karo proses integrasi terus-terusan lan alur kerja penyebaran.

Contone, pangembang sampeyan nulis kode sacara lokal lan nuduhake tumpukan pangembangan (sakumpulan gambar Docker) karo kolega. Yen wis siyap, dheweke nyurung kode lan wadhah menyang situs tes lan nindakake tes sing dibutuhake. Saka situs tes, dheweke bisa ngirim kode lan gambar menyang produksi.

Luwih gampang laying metu lan unfolding

Platform basis wadah docker nggampangake port muatan sampeyan. Wadah Docker bisa mbukak ing mesin lokal, nyata utawa ing mesin virtual ing pusat data, utawa ing mΓ©ga.

Sifat portabilitas lan entheng saka docker nggawe gampang ngatur beban kerja kanthi dinamis. Sampeyan bisa nggunakake docker kanggo nyebarake utawa mateni aplikasi utawa layanan sampeyan. Kacepetan docker ngidini iki rampung ing wektu nyata.

Beban sing luwih dhuwur lan luwih akeh muatan

Docker entheng lan cepet. Nyedhiyakake alternatif sing tahan banting, biaya-efektif kanggo mesin virtual adhedhasar hypervisor. Iku utamanΓ© migunani ing lingkungan mbukak dhuwur, contone, nalika nggawe maya utawa platform-minangka-layanan dhewe. Nanging uga migunani kanggo aplikasi cilik lan medium nalika sampeyan pengin entuk luwih akeh saka sumber daya sing sampeyan duwe.

Komponen Docker Utama

Docker kasusun saka rong komponen utama:

  • Docker: platform virtualisasi sumber terbuka;
  • Docker Hub: Platform-as-a-service kita kanggo nyebarake lan ngatur wadhah Docker.

Wigati! Docker disebarake miturut lisensi Apache 2.0.

arsitektur Docker

Docker nggunakake arsitektur klien-server. Klien Docker komunikasi karo daemon Docker, sing njupuk beban nggawe, mbukak, lan nyebarake wadhah sampeyan. Loro klien lan server bisa mlaku ing sistem sing padha, sampeyan bisa nyambungake klien menyang daemon docker remot. Klien lan server komunikasi liwat soket utawa API RESTful.

Ngerti Docker

Docker daemon

Minangka ditampilake ing diagram, daemon mlaku ing mesin inang. Pangguna ora sesambungan karo server langsung, nanging nggunakake klien kanggo iki.

Klien Docker

Klien Docker, program docker, minangka antarmuka utama kanggo Docker. Nampa printah saka pangguna lan sesambungan karo daemon docker.

Docker ing njero

Kanggo ngerti apa docker kalebu, sampeyan kudu ngerti babagan telung komponen:

  • gambar
  • pendaptaran
  • kontaner

Gambar

Gambar Docker minangka cithakan mung diwaca. Contone, gambar bisa ngemot sistem operasi Ubuntu karo Apache lan aplikasi ing. Gambar digunakake kanggo nggawe wadhah. Docker nggampangake nggawe gambar anyar, nganyari sing wis ana, utawa sampeyan bisa ndownload gambar sing digawe wong liya. Gambar minangka komponen saka bangunan docker.

Registry

Registry Docker nyimpen gambar. Ana registri umum lan pribadi sing sampeyan bisa ngundhuh utawa ngunggah gambar. Registri Docker umum yaiku Hub Docker. Ana akeh koleksi gambar sing disimpen ing kana. Kaya sing sampeyan ngerteni, gambar bisa digawe sampeyan utawa sampeyan bisa nggunakake gambar sing digawe wong liya. Registri minangka komponen distribusi.

Wadhah

Kontainer padha karo direktori. Wadah ngemot kabeh sing dibutuhake kanggo mbukak aplikasi. Saben wadhah digawe saka gambar. Wadah bisa digawe, diwiwiti, mandheg, migrasi utawa dibusak. Saben wadhah diisolasi lan nyedhiyakake platform sing aman kanggo aplikasi kasebut. Wadah minangka komponen saka karya.

Dadi kepiye carane Docker bisa digunakake?

Nganti saiki kita ngerti yen:

  • kita bisa nggawe gambar ing ngendi aplikasi kita dumunung;
  • kita bisa nggawe wadhah saka gambar kanggo mbukak aplikasi;
  • Kita bisa nyebarake gambar liwat Docker Hub utawa registri gambar liyane.

Ayo ndeleng carane komponen iki pas bebarengan.

Kepiye cara kerjane gambar?

Kita wis ngerti manawa gambar minangka cithakan mung diwaca saka wadhah digawe. Saben gambar kasusun saka sakumpulan tingkat. Docker nggunakake sistem file union kanggo nggabungake level kasebut dadi siji gambar. Sistem file Union ngidini file lan direktori saka sistem file beda (cabang beda) tumpang tindih kanthi transparan, nggawe sistem file sing koheren.

Salah sawijining sebab kenapa docker entheng amarga nggunakake lapisan kaya iki. Nalika sampeyan ngganti gambar, kayata nganyari aplikasi, lapisan anyar digawe. Dadi, tanpa ngganti kabeh gambar utawa mbangun maneh, kaya sing kudu dilakoni karo mesin virtual, mung lapisan sing ditambahake utawa dianyari. Lan sampeyan ora kudu nyebarake kabeh gambar anyar, mung nganyari sing disebarake, dadi luwih gampang lan luwih cepet kanggo nyebarake gambar.

Ing jantung saben gambar ana gambar dhasar. Contone, ubuntu, gambar dhasar Ubuntu, utawa fedora, gambar dhasar distribusi Fedora. Sampeyan uga bisa nggunakake gambar minangka basis kanggo nggawe gambar anyar. Contone, yen sampeyan duwe gambar apache, sampeyan bisa nggunakake minangka gambar dhasar kanggo aplikasi web.

Wigati! Docker biasane narik gambar saka registri Docker Hub.

Gambar Docker bisa digawe saka gambar dhasar iki; kita nelpon langkah-langkah kanggo nggawe instruksi gambar kasebut. Saben instruksi nggawe gambar utawa level anyar. Pandhuan bakal kaya ing ngisor iki:

  • mbukak printah
  • nambah file utawa direktori
  • nggawe variabel lingkungan
  • instruksi apa kanggo mbukak nalika wadhah gambar iki dibukak

Pandhuan iki disimpen ing file Dockerfile. Docker maca iki Dockerfile, nalika sampeyan mbangun gambar, nglakokake instruksi kasebut lan ngasilake gambar pungkasan.

Kepiye cara kerja registri docker?

Registri minangka gudang kanggo gambar docker. Sawise gambar digawe, sampeyan bisa nerbitake menyang registri Docker Hub umum utawa menyang registri pribadhi.

Kanthi klien docker, sampeyan bisa nelusuri gambar sing wis diterbitake lan download menyang mesin docker kanggo nggawe wadhah.

Docker Hub nyedhiyakake repositori gambar umum lan pribadi. Nggoleki lan ngundhuh gambar saka repositori umum kasedhiya kanggo kabeh wong. Isi panyimpenan pribadi ora kalebu ing asil panelusuran. Lan mung sampeyan lan pangguna sing bisa nampa gambar kasebut lan nggawe wadhah kasebut.

Carane wadhah bisa?

Wadah kalebu sistem operasi, file pangguna, lan metadata. Kaya sing dingerteni, saben wadhah digawe saka gambar. Gambar iki ngandhani docker apa sing ana ing wadhah, proses apa sing kudu diwiwiti, nalika wadhah diwiwiti, lan data konfigurasi liyane. Gambar Docker mung diwaca. Nalika docker miwiti wadhah, nggawe lapisan diwaca / nulis ing ndhuwur gambar (nggunakake sistem file union minangka kasebut sadurunge) ing ngendi aplikasi kasebut bisa ditindakake.

Apa sing kedadeyan nalika wadhah diwiwiti?

Utawa nggunakake program docker, utawa nggunakake API RESTful, klien docker ngandhani daemon docker kanggo miwiti wadhah kasebut.

$ sudo docker run -i -t ubuntu /bin/bash

Ayo padha ndeleng printah iki. Klien dibukak nggunakake printah docker, kanthi pilihan run, sing ujar manawa wadhah anyar bakal diluncurake. Syarat minimal kanggo mbukak wadhah yaiku atribut ing ngisor iki:

  • gambar kang digunakake kanggo nggawe wadhah. Ing kasus kita ubuntu
  • printah sing pengin mbukak nalika wadhah diwiwiti. Ing kasus kita /bin/bash

Apa sing kedadeyan ing hood nalika kita nindakake printah iki?

Docker, kanthi urutan, nindakake ing ngisor iki:

  • download gambar ubuntu: docker mriksa kasedhiyan gambar ubuntu ing mesin lokal, lan yen ora ana, banjur download saka Hub Docker. Yen ana gambar, digunakake kanggo nggawe wadhah;
  • nggawe wadah: nalika gambar ditampa, docker digunakake kanggo nggawe wadhah;
  • miwiti sistem file lan masang level mung diwaca: wadhah digawe ing sistem file lan gambar ditambahake menyang level mung diwaca;
  • miwiti jaringan/jembatan: nggawe antarmuka jaringan sing ngidini docker kanggo komunikasi karo mesin inang;
  • Setelan alamat IP: nemokake lan nyetel alamat;
  • Miwiti proses sing ditemtokake: mbukak aplikasi sampeyan;
  • Proses lan ngasilake output saka aplikasi sampeyan: nyambungake lan nyathet input standar, output, lan stream kesalahan aplikasi sampeyan supaya sampeyan bisa nglacak kinerja aplikasi sampeyan.

Sampeyan saiki duwe wadhah sing bisa digunakake. Sampeyan bisa ngatur wadhah, sesambungan karo aplikasi sampeyan. Nalika sampeyan mutusake kanggo mungkasi aplikasi kasebut, mbusak wadhah kasebut.

Teknologi sing digunakake

Docker ditulis ing Go lan nggunakake sawetara fitur kernel Linux kanggo ngetrapake fungsi ing ndhuwur.

Spasi jeneng

Docker nggunakake teknologi namespaces kanggo ngatur ruang kerja sing terisolasi, sing diarani wadhah. Nalika kita miwiti wadhah, docker nggawe sakumpulan namespaces kanggo wadhah kasebut.

Iki nggawe lapisan terisolasi, karo saben aspek saka wadhah mlaku ing namespace dhewe lan ora duwe akses menyang sistem njaba.

Dhaptar sawetara ruang jeneng sing digunakake dening docker:

  • pid: kanggo ngisolasi proses;
  • net: kanggo ngatur antarmuka jaringan;
  • ipc: kanggo ngatur sumber daya IPC. (ICP: InterProccess Communication);
  • mnt: kanggo ngatur titik gunung;
  • utc: kanggo ngisolasi kernel lan generasi versi kontrol (UTC: Unix timesharing system).

Kelompok kontrol

Docker uga nggunakake teknologi cgroups utawa kelompok kontrol. Tombol kanggo mbukak aplikasi ing isolasi yaiku nyedhiyakake aplikasi mung sumber daya sing pengin diwenehake. Iki mesthekake yen kontaner bakal dadi tetanggan sing apik. Grup kontrol ngidini sampeyan nuduhake sumber daya hardware sing kasedhiya lan, yen perlu, nyetel watesan lan watesan. Contone, matesi jumlah bisa memori kanggo wadhah.

Sistem File Union

Union File Sysem utawa UnionFS minangka sistem file sing bisa digunakake kanthi nggawe lapisan, dadi entheng lan cepet banget. Docker nggunakake UnionFS kanggo nggawe blok saka wadhah kasebut. Docker bisa nggunakake sawetara varian saka UnionFS kalebu: AUFS, btrfs, vfs lan DeviceMapper.

Format wadhah

Docker nggabungake komponen kasebut dadi bungkus sing diarani format wadah. Format standar diarani libcontainer. Docker uga ndhukung format wadah tradisional ing Linux nggunakake LXC. Ing mangsa ngarep, Docker bisa uga ndhukung format wadah liyane. Contone, nggabungake karo BSD Jails utawa Zona Solaris.

Source: www.habr.com

Add a comment