Programmēšana

Docker apmācība: sāciet darbu ar Docker

Konteineri nodrošina vieglu veidu, kā pārnēsāt lietojumprogrammu darba slodzes, piemēram, virtuālo mašīnu, bet bez pieskaitāmās daļas un lielapjoma, kas parasti saistīts ar VM. Izmantojot konteinerus, lietotnes un pakalpojumus var iepakot un brīvi pārvietot starp fizisko, virtuālo vai mākoņdatu vidi.

Docker, konteineru izveides un pārvaldības sistēma, ko izveidojusi Docker Inc., pārņem Linux atrodamo konteineru funkcionalitāti un padara to pieejamu galalietotājiem, izmantojot komandrindas saskarni un API kopu.

Daudzi izplatīti lietojumprogrammu komponenti tagad ir pieejami kā fasēti Docker konteineri, kas atvieglo programmatūras kaudzīšu izvietošanu kā atsaistītus komponentus (mikroservisu modelis). Tas nozīmē, ka tas palīdz uzzināt, kā gabali sader kopā no iekšpuses un ārpuses.

Tādējādi šajā rokasgrāmatā es instalēju Apache tīmekļa serveri Docker konteinerā un izpētīju, kā Docker darbojas pa ceļam.

Instalējiet Docker

Es izmantoju Ubuntu kā Docker būves pamatu. Ubuntu nav tikai populārs un plaši izmantots izplatījums, bet pati Docker komanda izmanto Ubuntu izstrādei, un Docker tiek atbalstīts Ubuntu Server no 12.04 un jaunākām versijām. Vienkāršības labad es sāku ar instrukcijām, izmantojot jaunu Ubuntu 16.04 instalēšanu.

Sagatavojiet Ubuntu Linux Docker

Vispirms ir jāiegūst pareizā kodola un tā galvenes versija:

$ sudo apt-get install --install-iesaka linux-generic-hwe-16.04

Šis process var aizņemt kādu laiku, un, kad esat pabeidzis, tas būs jāpārstartē:

$ sudo atsāknēšana

Pēc tam, iespējams, būs jāatjaunina arī citas sistēmas pakotnes:

$ sudo apt-get atjauninājums

$ sudo apt-get jauninājums

Instalējiet Docker uz Ubuntu

Docker instalēšana CentOS, Fedora, Debian, Ubuntu un Raspbian Linux izplatījumos ir vienkārša, izmantojot čaulas skriptu, kuru varat lejupielādēt vietnē //get.docker.com/. Tam jums būs nepieciešams čokurošanās komandu. Lai iegūtu jaunāko versiju čokurošanās:

sudo apt-get install čokurošanās

Kad esat to izdarījis čokurošanās instalējiet, ienesiet instalēšanas skriptu un iestatiet to darboties:

čokurošanās -s //get.docker.com | sudo sh

Kad skripts ir pabeidzis instalēšanu, tiek parādīta šāda piezīme ar instalēšanas informāciju par Docker versiju, gan klientu, gan servera komponentiem:

Ievērojiet apakšā esošo informāciju par lietotāju bez saknēm pievienošanu Docker. Tas ir ērti to izdarīt, taču, ja jūs to darāt, ieteicams izveidot lietotāju, kas nav saknes, īpaši darbam ar Docker un nevienai citai funkcijai. Šīs apmācības labad es tomēr paliku pie lietošanas sudo palaist Docker kā priviliģētu lietotāju.

Tagad jūs varat izmēģināt pamata Docker konteineru:

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

Šī komanda lejupielādē vispārējo Docker Ubuntu attēlu (kā norādīts ubuntu parametrs) un palaidiet / bin / bash komandu tajā konteinerā. The -i un -t opcijas atver attiecīgi standarta ievadi un pseido TTY.

Ja tas ir veiksmīgs, jums vajadzētu redzēt resursdatora nosaukumu komandu uzvednē mainīt uz kaut ko līdzīgu root @ 216b04387924: / #, kas norāda jūsu jaunā darbojošā konteinera ID numuru (un resursdatora nosaukumu). Lai aizietu, ierakstiet Izeja, tāpat kā jūs pamestu jebkuru čaulas sesiju.

Tagad serverī vajadzētu būt funkcionālai Docker instalācijai. Jūs varat to pārbaudīt un iegūt pamatinformāciju, izmantojot dokstacijas informācija komanda:

$ sudo dokstacijas informācija

Izvade dokstacijas informācija komanda parāda konteineru un attēlu skaitu, kā arī citu būtisku informāciju. Ņemiet vērā, ka tas var būt diezgan garš; šis piemērs parāda tikai pēdējo no divām lappusēm.

Ja izmantojat Ubuntu UFW ugunsmūri, jums būs jāveic pēdējās izmaiņas, lai atļautu pakešu pārsūtīšanu. Jūs varat pārbaudīt, vai UFW darbojas, ievadot:

$ sudo ufw statuss

Ja komanda atgriež neaktīva statusu, varat izlaist šo nākamo darbību. Pretējā gadījumā jums būs jārediģē UFW konfigurācijas fails / etc / default / ufw un jāmaina politika pārsūtīšanai no PILĒT uz PIEŅEMT. Lai to izdarītu, izmantojot Nano redaktoru, ievadiet šo:

$ sudo nano / etc / default / ufw

Un mainiet šo rindu:

DEFAULT_FORWARD_POLICY = "PILES"

Uz šo:

DEFAULT_FORWARD_POLICY = "PIEŅEMT"

Saglabājiet failu un pēc tam palaidiet:

$ sudo ufw pārlādēt

Darbs ar Docker attēliem un Docker konteineriem

Docker konteineri ir daudz efektīvāki nekā virtuālās mašīnas. Ja konteiners nedarbojas, tas ir pilnīgi neaktīvs. Jūs varētu domāt, ka Docker konteineri ir patstāvīgi procesi - ja tie aktīvi nedarbojas, tie, izņemot krātuvi, patērē tikai resursus.

Aktīvos un neaktīvos konteinerus varat apskatīt, izmantojot dokers ps komanda:

# Šī komanda parādīs VISUS sistēmas konteinerus

$ sudo docker ps -a

# Tas parādīs tikai RUNNING konteinerus

$ sudo docker ps

Jūs varat apskatīt visas pieejamās komandas, vienkārši ievadot dokeris. Lai atjauninātu visu komandu, to opciju un pilnīgu aprakstu, skatiet oficiālo komandrindas klienta dokumentāciju.

Kad es skrēju dokeru skrējiens agrāk šī komanda automātiski velk Ubuntu konteinera attēls no Docker Hub reģistra pakalpojuma. Tomēr lielāko daļu laika konteinera attēlus vēlaties savlaicīgi ievilkt vietējā kešatmiņā, nevis darīt pēc pieprasījuma. Lai to izdarītu, izmantojiet dokera vilkšana, kā šis:

$ sudo docker pull ubuntu

Pilns meklējamo attēlu un krātuvju saraksts ir pieejams Docker centrmezglā.

Docker attēli pret konteineriem

Šajā brīdī ir vērts izskaidrot, kā visi attēli, konteineri un izvilkšanas / virzīšanas process darbojas kopā.

Docker konteineri ir būvēti no attēlus, kas būtībā ir operētājsistēmu čaulas, kas satur nepieciešamos bināros failus un bibliotēkas lietojumprogrammu darbināšanai konteinerā.

Attēli ir apzīmēti artagusbūtībā metadatus, kas atvieglo dažādu attēla versiju saglabāšanu un izvilkšanu. Protams, vienu attēlu var saistīt ar vairākiem tagiem: ubuntu: 16.04, ubuntu: xenial-20171201, ubuntu: xenial, ubuntu: jaunākais.

Kad es rakstīju docker pull ubuntu iepriekš es izvilku noklusēto Ubuntu attēlu no Ubuntu repozitorija, kas ir attēls ar tagu vēlākais. Citiem vārdiem sakot, komanda docker pull ubuntu ir ekvivalents docker pull ubuntu: jaunākais un (šīs rakstīšanas laikā) docker pull ubuntu: kseniāls

Ņemiet vērā, ka, ja es būtu ierakstījis:

$ sudo docker pull -a ubuntu

Es būtu puledl visi attēli ( -a karodziņš) Ubuntu krātuvē manā vietējā sistēmā. Tomēr lielāko daļu laika jūs vēlaties vai nu noklusējuma attēlu, vai noteiktu versiju. Piemēram, ja vēlaties attēlu Ubuntu Saucy Salamander, izmantojiet docker pull -a ubuntu: niecīgs lai no šīs repo ielādētu attēlu ar konkrēto tagu.

Tāda pati loģika, kāda ir repos un tagos, attiecas arī uz citām manipulācijām ar attēliem. Ja jūs vilktu niecīgs kā norādīts iepriekš minētajā piemērā, jūs to palaistu, ierakstot sudo docker palaist -i -t ubuntu: saucy / bin / bash. Ja rakstātsudo docker attēls rm ubuntu, lai noņemtu ubuntu attēlu, tas noņems tikai atzīmēto attēlu vēlākais . Lai noņemtu attēlus, kas nav noklusējuma iestatījumi, piemēram, Ubuntu Saucy, jāiekļauj atbilstošā atzīme:

sudo docker attēls rm ubuntu: bezkaunīgs

Docker attēla un konteinera darbplūsma

Atpakaļ pie darba ar attēliem. Kad esat izvilcis attēlu, lai kāds tas būtu, jūs izveidojat no tā aktīvu konteineru (kā es parādīju), izpildot dokeru skrējiens komandu. Kad esat pievienojis programmatūru un mainījis visus konteinera iekšējos iestatījumus, no šīm izmaiņām varat izveidot jaunu attēlu, izmantojot dokers apņemties komandu.

Ir svarīgi atzīmēt, ka Docker glabā deltas vai izmaiņas tikai attēlos, kas veidoti no citiem attēliem. Veidojot savus attēlus, jaunajā attēlā tiek saglabātas tikai izmaiņas, kuras veicat bāzes attēlā, kas saista visu pamatatbildi ar visām tās atkarībām. Tādējādi šīs efektivitātes dēļ varat izveidot attēlus, kuru virtuālais izmērs ir 266 MB, bet diskā aizņem tikai dažus megabaitus.

Pēc tam pilnībā konfigurētus konteinerus var pārvietot uz centrālo krātuvi, lai tos izmantotu citur organizācijā vai pat kopīgotu publiski. Tādā veidā lietojumprogrammu izstrādātājs var publicēt lietotnes publisko konteineru vai arī izveidot privātus krātuves, lai glabātu visus konteinerus, kurus jūsu organizācija izmanto iekšēji.

Izveidojiet jaunu Docker attēlu no konteinera

Tagad, kad jums ir labāka izpratne par attēlu un konteineru darbību, iestatīsim Apache tīmekļa servera konteineru un padarīsim to pastāvīgu.

Sāciet ar jaunu Docker konteineru

Pirmkārt, jums jāveido jauns konteiners. Ir daži veidi, kā to izdarīt, taču, tā kā ir palaistas dažas komandas, sāciet saknes apvalku jaunā konteinerā:

$ sudo docker palaist -i -t --name apache_web ubuntu / bin / bash

Tādējādi tiek izveidots jauns konteiners ar unikālu ID un nosaukumu apache_web. Tas arī dod jums saknes apvalku, jo jūs norādījāt / bin / bash kā komandu palaist. Tagad instalējiet Apache tīmekļa serveri, izmantojot apt-get:

root @ d7c8f02c3c8c: / # apt-get atjauninājums

root @ d7c8f02c3c8c: / # apt-get install apache2

Ņemiet vērā, ka jums tas nav jāizmanto sudo, jo jūs darbojaties kā root konteinera iekšpusē. Ņemiet vērā, ka jūs darīt vajag skriet apt-get atjauninājums, jo atkal paku saraksts konteinera iekšpusē nav tas pats, kas ārpus tā.

Normāli apt-get parādās izeja, un Apache2 pakotne ir instalēta jaunajā konteinerā. Kad instalēšana ir pabeigta, palaidiet Apache, instalējiet čokurošanos un pārbaudiet instalēšanu no konteinera:

root @ d7c8f02c3c8c: / # service apache2 start

root @ d7c8f02c3c8c: / # apt-get install čokurošanās

root @ d7c8f02c3c8c: / # čokurošanās // localhost

Pēc pēdējās komandas konsolē ir redzams noklusējuma Apache lapas neapstrādātais HTML. Tas nozīmē, ka mūsu Apache serveris ir instalēts un darbojas jūsu konteinerā.

Ja jūs to darījāt ražošanas vidē, pēc tam konfigurējiet Apache atbilstoši savām prasībām un instalējiet lietojumprogrammu, lai tā darbotos. Docker letd direktoriji ārpus konteinera tiek kartēti ar ceļiem tā iekšpusē, tāpēc viena pieeja ir glabāt jūsu tīmekļa lietotni resursdatora direktorijā un padarīt to redzamu konteineram, izmantojot kartēšanu.

Izveidojiet Docker konteinera startēšanas skriptu

Atcerieties, ka Docker konteiners darbojas tikai tik ilgi, kamēr tā process vai procesi ir aktīvi. Tātad, ja process, kuru palaižat, pirmo reizi palaižot konteineru, pāriet uz fonu, piemēram, sistēmas dēmons, Docker pārtrauks konteineru. Tāpēc, palaižot konteineru, priekšplānā ir jāpalaiž Apache, lai konteiners netiktu iziet, tiklīdz tas tiek palaists.

Izveidojiet skriptu startapache.sh mapē / usr / local / sbin:

# Iespējams, vispirms konteinerā būs jāinstalē Nano

root @ d7c8f02c3c8c: / # apt-get install nano

root @ d7c8f02c3c8c: / # nano /usr/local/sbin/startapache.sh

Failā startapache.sh pievienojiet šīs rindas:

#! / bin / bash

. / etc / apache2 / envvars

/ usr / sbin / apache2 -D Priekšplāns

Uzrakstiet izmaiņas un saglabājiet failu. Tad padariet to izpildāmu:

root @ d7c8f02c3c8c: / # chmod + x /usr/local/sbin/startapache.sh

Viss, ko šis mazais skripts veic, ir Apache atbilstošo vides mainīgo ievešana un Apache procesa sākšana priekšplānā.

Jūs esat pabeidzis konteinera satura modificēšanu, tāpēc varat atstāt konteineru, ierakstot Izeja. Izejot no konteinera, konteiners apstāsies.

Saistiet konteineru, lai izveidotu jaunu Docker attēlu

Tagad jums ir nepieciešams apņemties konteinerā, lai saglabātu veiktās izmaiņas:

$ sudo docker apache_web local: apache_web

Apņemšanās saglabās jūsu konteineru kā jaunu attēlu un atgriezīs unikālu ID. Arguments vietējais: apache_web izraisīs saistību ievietošanu vietējā repozitorijā ar nosaukumu vietējais ar atzīmi apache_web.

To var redzēt, palaižot komandu sudo docker attēli:

REZERVES TAGA ATTĒLA ID, KAS IZVEIDOTS VIRTUĀLS IZMĒRS

local apache_web d95238078ab0 pirms 4 minūtēm 284,1 MB

Ņemiet vērā, ka jūsu attēla precīzā informācija - attēla ID, konteinera izmērs - atšķirsies no mana piemēra.

Docker konteineri ir paredzētinemainīgs. Ikreiz, kad veicat izmaiņas konteinerā, rezultāti tiek ierakstīti pilnīgi jaunā konteinerā, nevis oriģinālajā. Ja jūs vēlaties apmainīt Apache ar, teiksim, Nginx, jūs sāktu ar oriģinālu ubuntu: jaunākais konteineru, pievienojiet tam Nginx un saglabājiet rezultātus kā pilnīgi jaunu konteineru ar nosaukumu kaut kas līdzīgs vietējais: nginx.

Izprot Docker tīkla veidošanas pamatus

Tagad, kad jums ir mūsu attēls, varat sākt mūsu konteineru un sākt apkalpot lapas. Pirms jūs to darāt, ļaujiet man mazliet paskaidrot, kā Docker rīkojas ar tīklu.

Kad Docker ir instalēts, tas izveido trīs virtuālos tīklus, kurus var izmantot Docker konteineros:

  • tilts: Šis ir tīkls, ar kuru konteineri izveido savienojumu pēc noklusējuma. Tilta tīkls ļauj konteineriem tieši sarunāties savā starpā, bet ne ar resursdatora sistēmu.
  • saimnieks: Šis tīkls ļauj konteinerus tieši redzēt resursdatoram, it kā jebkura tajos esoša lietotne darbotos kā vietējā tīkla pakalpojumi.
  • neviena: Tas būtībā ir nulles vai atgriezeniskās saites tīkls. Tvertne, kas savienota ar nevienu, nevar redzēt neko citu kā tikai sevi.

Ja vēlaties palaist konteineru un panākt, lai tas sazinātos gan ar citiem konteineriem, gan ar ārpasauli, jums ir manuāli jāpiesaka ostas no šī konteinera uz resursdatoru. Mana piemēra labā to varat izdarīt komandrindā, palaižot jaunizveidoto konteineru:

$ sudo docker palaist -d -p 8080: 80 --name apache local: apache_web /usr/local/sbin/startapache.sh

Copyright lv.verticalshadows.com 2024

$config[zx-auto] not found$config[zx-overlay] not found