Fahimtar Docker

Na kasance ina amfani da Docker tsawon watanni da yawa yanzu don tsara tsarin haɓakawa / isar da ayyukan yanar gizo. Ina ba wa masu karatun Habrakhabr fassarar labarin gabatarwa game da docker - "Fahimtar docker".

Menene docker?

Docker buɗaɗɗen dandali ne don haɓakawa, bayarwa, da aikace-aikacen aiki. An tsara Docker don isar da aikace-aikacen ku cikin sauri. Tare da docker, zaku iya raba aikace-aikacenku daga kayan aikin ku kuma ku ɗauki kayan aikin azaman aikace-aikacen sarrafawa. Docker yana taimaka muku jigilar lambar ku da sauri, gwada sauri, jigilar aikace-aikacen da sauri, da rage lokaci tsakanin lambar rubutu da lambar aiki. Docker yana yin wannan ta hanyar dandali mai ɗaukar nauyi mai nauyi, ta amfani da matakai da abubuwan amfani waɗanda ke taimaka muku sarrafa da ɗaukar nauyin aikace-aikacenku.

A ainihin sa, docker yana ba ku damar gudanar da kusan kowane aikace-aikacen, keɓe a cikin akwati lafiya. Amintaccen keɓewa yana ba ku damar gudanar da kwantena da yawa akan runduna ɗaya a lokaci guda. Halin nauyi mai nauyi na akwati, wanda ke gudana ba tare da ƙarin nauyin hypervisor ba, yana ba ku damar samun ƙarin kayan aikin ku.

Dandali da kayan aikin kwantena na iya zama da amfani a lokuta masu zuwa:

  • shirya aikace-aikacenku (da kuma abubuwan da kuke amfani da su) cikin kwantena na docker;
  • rarrabawa da isar da waɗannan kwantena ga ƙungiyoyin ku don haɓakawa da gwaji;
  • shimfida waɗannan kwantena a kan wuraren samar da ku, duka a cikin cibiyoyin bayanai da kuma cikin gajimare.

Me zan iya amfani da docker domin?

Buga aikace-aikacenku da sauri

Docker yana da kyau don tsara tsarin ci gaba. Docker yana ba masu haɓaka damar gudanar da kwantena na gida tare da aikace-aikace da ayyuka. Wanne daga baya yana ba ku damar haɗawa tare da aiwatar da ci gaba da haɗawa da jigilar aiki.

Misali, masu haɓaka ku suna rubuta lamba a cikin gida kuma suna raba tarin ci gaban su (saitin hotuna na Docker) tare da abokan aiki. Lokacin da suka shirya, suna tura lambar da kwantena zuwa wurin gwajin kuma su gudanar da duk wani gwajin da ya dace. Daga wurin gwajin, za su iya aika lamba da hotuna zuwa samarwa.

Mafi sauƙin shimfidawa da buɗewa

Dandali na tushen kwantena na docker yana sauƙaƙe jigilar kayan aikin ku. Kwantenan docker na iya aiki akan injin ku na gida, ko dai na gaske ko akan injin kama-da-wane a cibiyar bayanai, ko a cikin gajimare.

Ƙaƙwalwar ɗawainiya da yanayin nauyi na docker yana ba da sauƙi don sarrafa nauyin aikin ku. Kuna iya amfani da docker don tura ko rufe aikace-aikacenku ko ayyukanku. Gudun docker yana ba da damar yin hakan a kusa da ainihin lokaci.

Maɗaukakin kaya da ƙarin kayan biya

Docker yana da nauyi kuma mai sauri. Yana ba da juriya, mai tasiri mai tsada ga injunan kama-da-wane na tushen hypervisor. Yana da amfani musamman a cikin mahalli masu nauyi, misali, lokacin ƙirƙirar gajimare naku ko dandamali-as-sabis. Amma kuma yana da amfani ga ƙanana da matsakaitan aikace-aikace lokacin da kuke son samun ƙarin albarkatu da kuke da su.

Babban Abubuwan Docker

Docker ya ƙunshi manyan abubuwa guda biyu:

  • Docker: buɗaɗɗen dandamali na haɓakawa;
  • Docker Hub: Dandalin mu-as-sabis don rarrabawa da sarrafa kwantena Docker.

A kula! Ana rarraba Docker a ƙarƙashin lasisin Apache 2.0.

Docker gine

Docker yana amfani da ginin uwar garken abokin ciniki. Abokin ciniki na Docker yana sadarwa tare da Docker daemon, wanda ke ɗaukar nauyin ƙirƙira, gudana, da rarraba kwantena. Duk abokin ciniki da uwar garken suna iya aiki akan tsarin iri ɗaya, zaku iya haɗa abokin ciniki zuwa daemon docker mai nisa. Abokin ciniki da uwar garken suna sadarwa ta hanyar soket ko API RESTful.

Fahimtar Docker

Docker daemon

Kamar yadda aka nuna a cikin zane, daemon yana gudana akan na'ura mai watsa shiri. Mai amfani ba ya hulɗa da uwar garken kai tsaye, amma yana amfani da abokin ciniki don wannan.

Docker abokin ciniki

Abokin ciniki na Docker, shirin docker, shine babban haɗin gwiwa zuwa Docker. Yana karɓar umarni daga mai amfani kuma yana hulɗa tare da docker daemon.

Ciki docker

Don fahimtar abin da docker ya ƙunshi, kuna buƙatar sanin abubuwa guda uku:

  • hotuna
  • rajista
  • kwantena

Hotunan

Hoton Docker samfurin karatu ne kawai. Misali, hoton yana iya ƙunsar tsarin aiki na Ubuntu tare da Apache da aikace-aikace akansa. Ana amfani da hotuna don ƙirƙirar kwantena. Docker yana sauƙaƙa ƙirƙirar sabbin hotuna, sabunta waɗanda suke, ko kuna iya zazzage hotunan da wasu mutane suka ƙirƙira. Hotuna sassa ne na ginin docker.

Rijista

Rijistar Docker tana adana hotuna. Akwai wuraren rajista na jama'a da masu zaman kansu waɗanda za ku iya saukewa ko loda hotuna daga gare su. Yin rijistar Docker na jama'a shine Filin Docker. Akwai babban tarin hotuna da aka adana a wurin. Kamar yadda kuka sani, hotuna na iya ƙirƙirar ta ku ko kuna iya amfani da hotunan da wasu suka ƙirƙira. Rajistas bangaren rarraba ne.

Kwantena

Kwantena suna kama da kundayen adireshi. Kwantena sun ƙunshi duk abin da aikace-aikacen ke buƙatar gudanarwa. An ƙirƙiri kowane akwati daga hoto. Ana iya ƙirƙirar kwantena, farawa, dakatarwa, ƙaura ko sharewa. Kowane akwati ya keɓe kuma yana ba da ingantaccen dandamali don aikace-aikacen. Kwantena sune sassan aikin.

To ta yaya Docker ke aiki?

Ya zuwa yanzu mun san cewa:

  • za mu iya ƙirƙirar hotuna waɗanda aikace-aikacenmu suke a ciki;
  • za mu iya ƙirƙirar kwantena daga hotuna don gudanar da aikace-aikacen;
  • Za mu iya rarraba hotuna ta hanyar Docker Hub ko wani wurin yin rajistar hoto.

Bari mu ga yadda waɗannan sassan suka dace tare.

Ta yaya hoton yake aiki?

Mun riga mun san cewa hoto samfuri ne kawai na karantawa wanda daga ciki ake ƙirƙirar akwati. Kowane hoto ya ƙunshi saitin matakan. Docker yana amfani tsarin fayil ɗin ƙungiyar don haɗa waɗannan matakan zuwa hoto ɗaya. Tsarin fayil ɗin ƙungiyar yana ba da damar fayiloli da kundayen adireshi daga tsarin fayil daban-daban ( rassa daban-daban) su zo kan juna a sarari, ƙirƙirar tsarin fayil ɗin da ya dace.

Daya daga cikin dalilan da yasa docker ke da nauyi shine saboda yana amfani da yadudduka irin wannan. Lokacin da kuka canza hoton, kamar sabunta aikace-aikacen, an ƙirƙiri sabon Layer. Don haka, ba tare da maye gurbin gabaɗayan hoton ko sake gina shi ba, kamar yadda za ku iya yi da na'ura mai mahimmanci, Layer kawai ana ƙara ko sabunta shi. Kuma ba lallai ne ku rarraba sabon hoton gaba ɗaya ba, sabuntawa kawai ana rarrabawa, yana sauƙaƙa da sauri don rarraba hotuna.

A zuciyar kowane hoto shine hoton tushe. Misali, ubuntu, hoton tushe na Ubuntu, ko fedora, hoton tushe na rarraba Fedora. Hakanan zaka iya amfani da hotuna azaman tushe don ƙirƙirar sabbin hotuna. Misali, idan kuna da hoton apache, zaku iya amfani da shi azaman hoton tushe don aikace-aikacen yanar gizon ku.

A kula! Docker yawanci yana jan hotuna daga Docker Hub rajista.

Ana iya ƙirƙirar hotunan docker daga waɗannan hotunan tushe; muna kiran matakan don ƙirƙirar waɗannan umarnin hotuna. Kowane umarni yana ƙirƙirar sabon hoto ko matakin. Umarnin zai kasance kamar haka:

  • gudanar da umarni
  • ƙara fayil ko directory
  • ƙirƙirar canjin yanayi
  • umarnin kan abin da za a gudanar lokacin da aka ƙaddamar da akwati na wannan hoton

Ana adana waɗannan umarnin a cikin fayil Dockerfile. Docker ya karanta wannan Dockerfile, lokacin da kake gina hoton, aiwatar da waɗannan umarnin kuma mayar da hoton ƙarshe.

Ta yaya rajistar docker ke aiki?

Rajistan wurin ajiyar hotuna ne na docker. Da zarar an ƙirƙiri hoton, zaku iya buga shi zuwa wurin rajistar Docker Hub na jama'a ko kuma zuwa wurin yin rajistar ku.

Tare da abokin aikin docker, zaku iya nemo hotunan da aka buga da kuma zazzage su zuwa injin docker don ƙirƙirar kwantena.

Docker Hub yana ba da ma'ajiyar hotuna na jama'a da masu zaman kansu. Bincike da zazzage hotuna daga wuraren ajiyar jama'a yana samuwa ga kowa da kowa. Abubuwan da ke cikin ma'ajiyar sirri ba a haɗa su cikin sakamakon binciken ba. Kuma ku kawai da masu amfani da ku za ku iya karɓar waɗannan hotuna da ƙirƙirar kwantena daga gare su.

Yaya kwantena ke aiki?

Kwantena ya ƙunshi tsarin aiki, fayilolin mai amfani, da metadata. Kamar yadda muka sani, kowane akwati an halicce shi daga hoto. Wannan hoton yana gaya wa docker abin da ke cikin akwati, wane tsari zai fara, lokacin da akwati ya fara, da sauran bayanan daidaitawa. Hoton Docker karatu ne kawai. Lokacin da docker ya fara akwati, yana ƙirƙirar Layer karanta/rubutu a saman hoton (ta amfani da tsarin fayil ɗin ƙungiyar kamar yadda aka bayyana a baya) wanda za'a iya gudanar da aikace-aikacen.

Me zai faru idan kwandon ya fara?

Ko amfani da shirin docker, ko ta amfani da API RESTful, abokin aikin docker ya gaya wa docker daemon don fara akwati.

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

Bari mu kalli wannan umarni. An ƙaddamar da abokin ciniki ta amfani da umarnin docker, tare da zaɓi run, wanda ya ce za a kaddamar da wani sabon kwantena. Ƙananan buƙatun don gudanar da akwati sune halaye masu zuwa:

  • wane hoton da za a yi amfani da shi don ƙirƙirar akwati. A wajenmu ubuntu
  • umarnin da kake son aiwatarwa lokacin da aka fara kwantena. A wajenmu /bin/bash

Me ke faruwa a ƙarƙashin hular yayin da muke gudanar da wannan umarni?

Docker, don tsari, yana yin haka:

  • zazzage hoton ubuntu: docker yana duba samuwar hoto ubuntu a kan na'ura na gida, kuma idan babu shi, to zazzage shi daga Filin Docker. Idan akwai hoto, yana amfani da shi don ƙirƙirar akwati;
  • yana haifar da akwati: lokacin da aka karɓi hoton, docker yana amfani da shi don ƙirƙirar akwati;
  • yana fara tsarin fayil kuma ya ɗaga matakin karanta-kawai: an halicci akwati a cikin tsarin fayil kuma an ƙara hoton zuwa matakin karanta kawai;
  • yana fara cibiyar sadarwa/gada: ƙirƙirar hanyar sadarwa ta hanyar sadarwa wanda ke ba da damar docker don sadarwa tare da injin mai watsa shiri;
  • Saita adireshin IP: nemo kuma saita adireshin;
  • Fara ƙayyadadden tsari: ya ƙaddamar da aikace-aikacen ku;
  • Yana aiwatarwa kuma yana samar da fitarwa daga aikace-aikacenku: yana haɗawa da yin rajistar daidaitattun shigarwar aikace-aikacenku, fitarwa, da rafin kuskure don ku iya bin yadda aikace-aikacenku ke gudana.

Yanzu kuna da kwandon aiki. Kuna iya sarrafa kwandon ku, yi hulɗa tare da aikace-aikacenku. Lokacin da kuka yanke shawarar dakatar da aikace-aikacen, share akwati.

Ana amfani da fasaha

An rubuta Docker a cikin Go kuma yana amfani da wasu fasalulluka na kernel Linux don aiwatar da ayyukan da ke sama.

Wuraren suna

Docker yana amfani da fasaha namespaces don tsara keɓaɓɓen wuraren aiki, waɗanda muke kira kwantena. Lokacin da muka fara akwati, docker yana ƙirƙirar saitin wuraren suna don wannan akwati.

Wannan yana haifar da keɓantaccen Layer, tare da kowane bangare na akwati yana gudana a cikin sunan kansa kuma ba shi da damar yin amfani da tsarin waje.

Jerin wasu wuraren suna da docker ke amfani da su:

  • pid: don ware tsarin;
  • net: don sarrafa hanyoyin sadarwa;
  • ipc: don sarrafa albarkatun IPC. (ICP: Sadarwar InterProccess);
  • mnt: don sarrafa wuraren tsaunuka;
  • utc: don ware kernel da tsara sigar sarrafawa (UTC: Tsarin lokaci na Unix).

Ƙungiyoyin sarrafawa

Docker kuma yana amfani da fasaha cgroups ko ƙungiyoyin sarrafawa. Makullin gudanar da aikace-aikacen a keɓe shi ne samar da aikace-aikacen tare da albarkatun da kuke son samarwa kawai. Wannan yana tabbatar da cewa kwantena za su zama maƙwabta masu kyau. Ƙungiyoyin sarrafawa suna ba ku damar raba albarkatun kayan masarufi da ke akwai kuma, idan ya cancanta, saita iyaka da hani. Misali, iyakance yuwuwar adadin ƙwaƙwalwar ajiya don akwati.

Tsarin Fayil na Ƙungiyar

Union File Sysem ko UnionFS tsarin fayil ne wanda ke aiki ta hanyar ƙirƙirar yadudduka, yana mai da shi nauyi da sauri. Docker yana amfani da UnionFS don ƙirƙirar tubalan da aka gina kwantena. Docker na iya amfani da bambance-bambancen UnionFS da yawa da suka haɗa da: AUFS, btrfs, vfs da DeviceMapper.

Tsarin kwantena

Docker yana haɗa waɗannan abubuwan zuwa cikin abin da muke kira tsarin kwantena. Ana kiran tsarin tsoho libcontainer. Docker kuma yana goyan bayan tsarin kwantena na gargajiya akan Linux ta amfani da shi LXC. A nan gaba, Docker na iya goyan bayan sauran tsarin kwantena. Misali, hadewa da BSD Jails ko Yankunan Solaris.

source: www.habr.com

Add a comment