Ngartos Docker

Kuring parantos nganggo Docker sababaraha bulan ayeuna pikeun nyusun prosés pangembangan / pangiriman proyék wéb. Kuring nawiskeun pamiarsa Habrakhabr tarjamahan tina tulisan bubuka ngeunaan docker - "Ngarti docker".

Naon ari docker?

Docker mangrupikeun platform kabuka pikeun ngembangkeun, ngirimkeun, sareng ngoperasikeun aplikasi. Docker dirancang pikeun nganteurkeun aplikasi anjeun langkung gancang. Kalayan docker, anjeun tiasa misahkeun aplikasi anjeun tina infrastruktur anjeun sareng ngubaran infrastrukturna salaku aplikasi anu diurus. Docker ngabantosan anjeun ngirim kode anjeun langkung gancang, nguji langkung gancang, ngirim aplikasi langkung gancang, sareng ngirangan waktos antara nyerat kode sareng kode jalan. Docker ngalakukeun ieu ngaliwatan platform virtualisasi wadahna anu hampang, ngagunakeun prosés sareng utilitas anu ngabantosan anjeun ngatur sareng host aplikasi anjeun.

Dina inti na, docker ngidinan Anjeun pikeun ngajalankeun ampir sagala aplikasi, aman diisolasi dina wadah. Isolasi aman ngamungkinkeun anjeun ngajalankeun seueur wadah dina host anu sami dina waktos anu sami. Sifat lightweight tina wadahna, nu ngalir tanpa beungbeurat tambahan tina hypervisor a, ngidinan Anjeun pikeun meunangkeun leuwih kaluar hardware Anjeun.

Platform sareng alat virtualisasi wadahna tiasa mangpaat dina kasus ieu:

  • bungkusan aplikasi anjeun (sareng komponén anu anjeun anggo) kana wadah docker;
  • distribusi sareng pangiriman wadah ieu ka tim anjeun pikeun pangwangunan sareng uji;
  • nempatkeun wadah ieu dina situs produksi anjeun, boh di pusat data sareng di awan.

Naon anu kuring tiasa nganggo docker?

Publikasikeun aplikasi anjeun gancang

Docker saé pikeun ngatur siklus pangwangunan. Docker ngamungkinkeun pamekar ngajalankeun peti lokal sareng aplikasi sareng jasa. Anu salajengna ngamungkinkeun anjeun ngahijikeun sareng prosés integrasi kontinyu sareng alur kerja penyebaran.

Salaku conto, pamekar anjeun nyerat kode sacara lokal sareng ngabagi tumpukan pangembanganana (sakumpulan gambar Docker) sareng kolega. Nalika aranjeunna siap, aranjeunna nyorong kode sareng wadahna ka situs tés sareng ngajalankeun tés anu diperyogikeun. Tina situs uji, aranjeunna tiasa ngirim kode sareng gambar ka produksi.

Leuwih gampang peletakan kaluar jeung unfolding

Platform basis wadah docker ngagampangkeun porting payload anjeun. Wadah Docker tiasa dijalankeun dina mesin lokal anjeun, boh nyata atanapi dina mesin virtual dina pusat data, atanapi dina awan.

Sifat portabilitas sareng hampang docker ngagampangkeun pikeun ngatur beban kerja anjeun sacara dinamis. Anjeun tiasa nganggo docker pikeun nyebarkeun atanapi mareuman aplikasi atanapi jasa anjeun. Laju docker ngamungkinkeun ieu dilakukeun dina waktos nyata.

Beban anu langkung luhur sareng langkung seueur beban

Docker hampang sareng gancang. Eta nyadiakeun tahan banting, alternatif ongkos-éféktif pikeun mesin virtual basis hypervisor. Ieu hususna kapaké dina lingkungan beban tinggi, contona, nalika nyiptakeun awan atanapi platform-as-service anjeun nyalira. Tapi éta ogé kapaké pikeun aplikasi leutik sareng sedeng nalika anjeun hoyong langkung seueur sumber daya anu anjeun gaduh.

Komponén Docker utama

Docker diwangun ku dua komponén utama:

  • Docker: platform virtualisasi open source;
  • Docker Hub: Platform-as-a-service kami pikeun nyebarkeun sareng ngatur wadah Docker.

Catetan! Docker disebarkeun dina lisénsi Apache 2.0.

Arsitéktur Docker

Docker ngagunakeun arsitektur klien-server. Klién Docker komunikasi sareng daemon Docker, anu nanggung beban nyiptakeun, ngajalankeun, sareng nyebarkeun wadah anjeun. Duanana klien tur server bisa ngajalankeun dina sistem anu sarua, anjeun tiasa nyambungkeun klien ka daemon docker jauh. Klién sareng server komunikasi via stop kontak atanapi RESTful API.

Ngartos Docker

Daémon Docker

Ditémbongkeun saperti dina diagram, daemon dijalankeun dina mesin host. Pamaké henteu langsung berinteraksi sareng server, tapi nganggo klien pikeun ieu.

Klién Docker

Klién Docker, program docker, mangrupikeun antarmuka utama pikeun Docker. Éta nampi paréntah ti pangguna sareng berinteraksi sareng daemon docker.

Docker jero

Pikeun ngartos naon docker diwangun, anjeun kedah terang ngeunaan tilu komponén:

  • gambar
  • pendaptaran
  • peti

Nu gambar

Gambar Docker mangrupikeun témplat anu dibaca wungkul. Salaku conto, gambar tiasa ngandung sistem operasi Ubuntu sareng Apache sareng aplikasi di dinya. Gambar dipaké pikeun nyieun wadah. Docker ngagampangkeun nyiptakeun gambar énggal, ngapdet anu tos aya, atanapi anjeun tiasa ngaunduh gambar anu diciptakeun ku jalma sanés. Gambar mangrupikeun komponén tina ngawangun docker.

Pendaptaran

Pendaptaran Docker nyimpen gambar. Aya pendaptaran umum sareng swasta dimana anjeun tiasa ngaunduh atanapi unggah gambar. Pendaptaran Docker umum nyaéta Hub Docker. Aya koleksi badag gambar disimpen di dinya. Sakumaha anjeun terang, gambar tiasa didamel ku anjeun atanapi anjeun tiasa nganggo gambar anu diciptakeun ku batur. Registries mangrupakeun komponén distribusi.

Wadahna

Wadahna sami sareng diréktori. Wadahna ngandung sadaya anu kedah dijalankeun ku aplikasi. Unggal wadahna dijieun tina hiji gambar. Wadah bisa dijieun, dimimitian, dieureunkeun, migrasi atawa dihapus. Unggal wadahna terasing sareng nyayogikeun platform anu aman pikeun aplikasi. Wadah mangrupakeun komponén tina karya.

Janten kumaha Docker damel?

Sajauh urang terang yén:

  • urang tiasa nyiptakeun gambar dimana aplikasi urang aya;
  • urang bisa nyieun wadah tina gambar pikeun ngajalankeun aplikasi;
  • Urang tiasa nyebarkeun gambar ngalangkungan Docker Hub atanapi pendaptaran gambar anu sanés.

Hayu urang tingali kumaha komponén ieu cocog babarengan.

Kumaha gambarna dianggo?

Kami parantos terang yén gambar mangrupikeun témplat ngan ukur dibaca dimana wadahna diciptakeun. Unggal gambar diwangun ku sakumpulan tingkat. Docker ngagunakeun sistem file union pikeun ngagabungkeun tingkat ieu kana hiji gambar. Sistem file Union ngamungkinkeun file sareng diréktori tina sistem file anu béda (cabang anu béda) tumpang tindih sacara transparan, nyiptakeun sistem file anu koheren.

Salah sahiji alesan kunaon docker hampang kusabab éta ngagunakeun lapisan sapertos kieu. Lamun anjeun ngarobah gambar, kayaning ngamutahirkeun hiji aplikasi, lapisan anyar dijieun. Janten, tanpa ngagentos sadayana gambar atanapi ngawangun deui, sapertos anu anjeun kedah laksanakeun sareng mesin virtual, ngan ukur lapisanna ditambah atanapi diropéa. Sareng anjeun henteu kedah ngadistribusikaeun gambar anyar sadayana, ngan ukur pembaruan anu disebarkeun, janten langkung gampang sareng gancang nyebarkeun gambar.

Dina manah unggal gambar aya gambar dasar. Contona, ubuntu, gambar dasar Ubuntu, atawa fedora, gambar dasar distribusi Fedora. Anjeun ogé tiasa nganggo gambar salaku dasar pikeun nyiptakeun gambar énggal. Contona, upami anjeun gaduh gambar Apache, anjeun tiasa nganggo éta salaku gambar dasar pikeun aplikasi wéb anjeun.

Catetan! Docker biasana narik gambar tina pendaptaran Docker Hub.

Gambar Docker tiasa didamel tina gambar dasar ieu; kami nyauran léngkah-léngkah pikeun nyiptakeun petunjuk gambar ieu. Unggal instruksi nyiptakeun gambar atanapi tingkat anyar. Parentah bakal kieu:

  • ngajalankeun paréntah
  • nambahkeun file atawa diréktori
  • nyiptakeun variabel lingkungan
  • parentah ngeunaan naon ngajalankeun nalika wadahna gambar ieu dibuka

Parentah ieu disimpen dina file Dockerfile. Docker maca ieu Dockerfile, mun anjeun ngawangun gambar, executes parentah ieu sarta mulih gambar final.

Kumaha pendaptaran docker jalan?

Pendaptaran mangrupikeun gudang pikeun gambar docker. Sakali gambarna didamel, anjeun tiasa nyebarkeun éta ka pendaptaran Docker Hub umum atanapi ka pendaptaran pribadi anjeun.

Kalayan klien docker, anjeun tiasa milarian gambar anu parantos diterbitkeun sareng unduh kana mesin docker anjeun pikeun nyiptakeun wadah.

Docker Hub nyayogikeun repositori gambar umum sareng swasta. Milarian sareng ngaunduh gambar tina gudang umum sayogi pikeun sadayana. Eusi gudang pribadi teu kaasup dina hasil teangan. Sareng ngan ukur anjeun sareng pangguna anjeun anu tiasa nampi gambar ieu sareng nyiptakeun wadahna.

Kumaha wadahna dianggo?

Wadahna diwangun ku sistem operasi, file pangguna, sareng metadata. Sakumaha urang terang, unggal wadahna diciptakeun tina gambar. Gambar ieu nyarioskeun docker naon anu aya dina wadahna, prosés naon anu badé ngamimitian, nalika wadahna dimimitian, sareng data konfigurasi anu sanés. Gambar Docker ngan ukur dibaca. Nalika docker ngamimitian wadahna, éta nyiptakeun lapisan baca / tulis dina luhureun gambar (nganggo sistem file union sakumaha anu dinyatakeun sateuacanna) dimana aplikasina tiasa dijalankeun.

Naon kajadian nalika wadahna dimimitian?

Atawa ngagunakeun program docker, atanapi nganggo API RESTful, klien docker nyarios ka daemon docker pikeun ngamimitian wadahna.

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

Hayu urang tingali paréntah ieu. Klién diluncurkeun nganggo paréntah docker, kalawan pilihan run, nu nyebutkeun yen wadah anyar bakal dibuka. Sarat minimum pikeun ngajalankeun wadah nyaéta atribut di handap ieu:

  • gambar nu dipaké pikeun nyieun wadahna. Dina hal urang ubuntu
  • paréntah anu anjeun hoyong jalankeun nalika wadahna dimimitian. Dina hal urang /bin/bash

Naon anu lumangsung dina tiung nalika urang ngajalankeun paréntah ieu?

Docker, dina urutan, ngalakukeun ieu:

  • unduh gambar ubuntu: docker mariksa kasadiaan gambar ubuntu dina mesin lokal, sarta lamun teu aya, lajeng ngundeur ti Hub Docker. Upami aya gambar, éta dianggo pikeun nyiptakeun wadah;
  • nyiptakeun wadah: lamun gambar ditampi, make docker ka nyieun wadahna;
  • initializes filesystem jeung mounts tingkat baca-hijina: wadahna dijieun dina sistem file jeung gambar ditambahkeun kana tingkat baca-hijina;
  • inisialisasi jaringan/sasak: nyiptakeun antarbeungeut jaringan anu ngamungkinkeun docker komunikasi sareng mesin host;
  • Nyetél alamat IP: manggihan tur nyetel alamat;
  • Ngamimitian prosés anu ditangtukeun: ngajalankeun aplikasi anjeun;
  • Prosés sareng ngahasilkeun kaluaran tina aplikasi anjeun: nyambungkeun sareng log asupan standar, kaluaran, sareng aliran kasalahan aplikasi anjeun supados anjeun tiasa ngalacak kumaha kinerja aplikasi anjeun.

Anjeun ayeuna gaduh wadah damel. Anjeun tiasa ngatur wadahna anjeun, berinteraksi sareng aplikasi anjeun. Nalika anjeun mutuskeun pikeun ngeureunkeun aplikasi, hapus wadahna.

Téknologi dipaké

Docker ditulis dina Go sareng nganggo sababaraha fitur tina kernel Linux pikeun nerapkeun fungsionalitas di luhur.

Ruang ngaran

Docker ngagunakeun téknologi namespaces pikeun ngatur workspaces terasing, nu urang nelepon wadahna. Nalika urang ngamimitian wadahna, docker nyiptakeun sakumpulan ruang ngaran pikeun wadah éta.

Ieu nyiptakeun lapisan terasing, kalayan unggal aspék wadahna dijalankeun dina rohangan ngaran sorangan sareng henteu gaduh aksés kana sistem éksternal.

Daptar sababaraha ngaranspasi anu dianggo docker:

  • pid: ngasingkeun prosés;
  • net: pikeun ngatur interfaces jaringan;
  • ipc: pikeun ngatur sumberdaya IPC. (ICP: Komunikasi InterProccess);
  • mnt: pikeun ngatur titik gunung;
  • UTC: pikeun ngasingkeun kernel jeung kontrol generasi versi (UTC: Unix timesharing system).

Grup kontrol

Docker ogé ngagunakeun téknologi cgroups atawa grup kontrol. Konci pikeun ngajalankeun aplikasi sacara mandiri nyaéta nyayogikeun aplikasi ngan ukur sumber daya anu anjeun hoyong nyayogikeun. Ieu ensures yén peti bakal tatanggana alus. Grup kontrol ngidinan Anjeun pikeun babagi sumberdaya hardware sadia tur, lamun perlu, set wates jeung larangan. Contona, ngawatesan jumlah mungkin memori pikeun wadahna.

Union File System

Union File Sysem atanapi UnionFS mangrupikeun sistem file anu tiasa dianggo ku nyiptakeun lapisan, ngajantenkeun énténg sareng gancang. Docker nganggo UnionFS pikeun nyiptakeun blok dimana wadahna diwangun. Docker tiasa nganggo sababaraha varian UnionFS kalebet: AUFS, btrfs, vfs sareng DeviceMapper.

format wadahna

Docker ngagabungkeun komponén ieu kana bungkus anu kami sebut format wadahna. Format standar disebut libcontainer. Docker ogé ngadukung format wadah tradisional dina Linux nganggo LXC. Di hareup, Docker tiasa ngadukung format wadah anu sanés. Contona, ngahijikeun sareng BSD Jails atanapi Solaris Zones.

sumber: www.habr.com

Tambahkeun komentar