Kas ir Docker Container? - Konteinerizējiet savu lietojumprogrammu, izmantojot Docker



Docker Container ir viegls alternatīvs risinājums virtuālajai mašīnai, lai izveidotu, izvietotu un palaistu lietojumprogrammas konteinerā.

Es ceru, ka esat izlasījis manus iepriekšējos emuārus vietnē Dokers kur esmu apskatījis Dokera pamatus. Šeit, šajā Docker Container emuārā, es apspriedīšu par to, kas ir Docker Containers un kā tas darbojas. Galvenokārt mēs pievērsīsimies Docker praktiskajiem un lietošanas gadījumiem.

Esmu uzskaitījis šī Docker Container emuāra tēmas:





  • Kāpēc mums ir nepieciešami dokeru konteineri?
  • Kā darbojas Docker Containers?
  • Docker konteinera lietošanas gadījumi

Kāpēc mums ir nepieciešami dokeru konteineri?

Es to joprojām pareizi atceros, strādāju pie projekta. Tajā projektā mēs sekojām mikropakalpojumu arhitektūrai. Tiem no jums, kuri nezina, kas ir mikropakalpojums, neuztraucieties, es jums to ievadīšu.

Mikropakalpojumu ideja ir tāda, ka noteiktus lietojumprogrammu veidus ir vieglāk izveidot un uzturēt, tos sadalot mazākos, saliekamos gabalos, kas darbojas kopā. Katrs komponents tiek izstrādāts atsevišķi, un pēc tam pieteikums ir vienkārši tā sastāvdaļu summa.



Apsveriet tālāk sniegto piemēru:

Tiešsaistes iepirkšanās lietotne - Docker Container - Edureka

Iepriekš redzamajā diagrammā ir tiešsaistes veikals ar atsevišķiem mikropakalpojumiem lietotāja kontam, preču katalogam, pasūtījumu apstrādei un iepirkumu groziem.



Nu, šai arhitektūrai ir daudz priekšrocību:

  • Pat ja kāds no jūsu mikropakalpojumiem neizdodas, viss jūsu lietojumprogramma lielākoties netiek ietekmēta.
  • To ir vieglāk vadīt

Ir arī daudzas citas priekšrocības, es šajā ziņojumā neiedziļināšos daudz par mikropakalpojumiem. Bet drīz es nāks klajā ar pāris emuāriem arī par mikropakalpojumiem.

Šajā arhitektūrā mēs izmantojām CentOS Virtual Machines. Šīs virtuālās mašīnas tika konfigurētas, rakstot garus skriptus. Nu, šo VM konfigurēšana nebija vienīgā problēma.

Lai izstrādātu šādas lietojumprogrammas, vienā mašīnā ir jāuzsāk vairāki mikropakalpojumi. Tātad, ja sākat piecus no šiem pakalpojumiem, šai mašīnai ir nepieciešami pieci VM. Apsveriet šo diagrammu:

Otra problēma ir diezgan izplatīta, es zinu, ka daudzi no jums to var saistīt. Lietojumprogramma darbojas izstrādātāja klēpjdatorā, bet ne testēšanā vai ražošanā. Tas var notikt tāpēc, ka netiek uzturēta konsekventa skaitļošanas vide. Apsveriet šo diagrammu:

Bez šī bija arī daudzas citas problēmas, taču es uzskatu, ka šīs problēmas man ir pietiekamas, lai izskaidrotu jums Docker Containers vajadzību.

Uzziniet, kā dokeru konteineri ir labāki par virtuālajām mašīnām

Tātad, iedomājieties, vai es piešķiru 8 GB RAM visām savām virtuālajām mašīnām, un man ir 5 mikropakalpojumi, kas darbojas dažādās virtuālajās mašīnās. Tādā gadījumā šiem VM būs nepieciešama 40 GB RAM. Nu, tagad es pieprasu, lai manas resursdatora konfigurācijas būtu ļoti augstas, manā resursdatorā vajadzētu būt gandrīz 44 GB RAM. Acīmredzot tas nav ilgtspējīgs risinājums šādai arhitektūrai, jo es šeit tērēju daudz resursu.

android studijas konsultācijas iesācējiem

Lieliski, man ir daudz resursu, ko izšķērdēt, taču man joprojām ir programmatūras piegādes dzīves cikla (SDLC) neatbilstības problēma. Man šie VM jākonfigurē gan testā, gan prod vidē. Kaut kur šajā procesā daļa programmatūras netika atjaunināta testa serverī, un Dev komanda izmanto atjaunināto programmatūras versiju. Tas noved pie konfliktiem.

Ko darīt, ja es izmantoju 100 VM, tad katra VM konfigurēšana prasīs daudz laika, un tajā pašā laikā tā ir pakļauta arī kļūdām.

Ļaujiet mums saprast, kas ir Docker Container un kā tas darbojas, un kā tas atrisināja manu problēmu.

Kas ir Docker konteiners?

Docker ir rīks, kas paredzēts, lai atvieglotu lietojumprogrammu izveidi, izvietošanu un palaišanu, izmantojot konteinerus.

Jūs varat izveidot Docker Containers, šajos konteineros būs visas binārās un bibliotēkas, kas manā gadījumā nepieciešamas jūsu lietojumprogrammai vai mikropakalpojumam. Tātad jūsu lietojumprogramma atrodas konteinerā vai arī esat to ievietojis konteinerā. Tagad to pašu konteineru var izmantot vidē Test and Prod.

Docker Containers ir viegls virtuālo mašīnu risinājums, un tajā tiek izmantota saimniekdatora OS. Labākais ir tas, ka jums nav iepriekš jāpiešķir RAM Docker konteineram, tas to ņems pēc vajadzības. Tātad, izmantojot Docker Container, man nav jāuztraucas par resursu izšķērdēšanu.

Tagad sapratīsim, kā darbojas Docker Container.

Kā darbojas dokeru konteiners?

Zemāk redzamā diagramma ir veids, kā izmantot Docker. Es pieņemu, ka jums ir ideja par Docker Image un Dockerfile.

Puiši, es zinu, ka diagramma izskatās mazliet sarežģīta, bet ticiet man, ka tā nav tik sarežģīta. Zemāk ir diagrammas skaidrojums, pat pēc tam, kad jums šķiet, ka to ir grūti saprast, jūs varat komentēt savas šaubas, es šos jautājumus pievērsīšos pēc iespējas ātrāk.

  • Izstrādātājs vispirms ierakstīs projekta kodu Docker failā un pēc tam izveidos attēlu no šī faila.
  • Šajā attēlā būs viss projekta kods.
  • Tagad varat palaist šo Docker Image, lai izveidotu tik daudz konteineru, cik vēlaties.
  • Šo Docker attēlu var augšupielādēt Docker centrmezglā (tas būtībā ir jūsu Docker Images mākoņkrātuve, kuru varat saglabāt publiski vai privāti).
  • Šo Docker attēlu Docker centrmezglā var izvilkt citas komandas, piemēram, QA vai Prod.

Tas ne tikai novērš resursu izšķērdēšanu, bet arī nodrošina, ka skaitļošanas vide, kas atrodas izstrādātāja klēpjdatorā, tiek atkārtota arī citās komandās. Tagad jūtos, man nav jāpasaka, kāpēc mums vajadzīgs Dokers.

Tas bija viens no veidiem, kā to izmantot, es domāju, ka jums, puiši, ir jābūt ziņkārīgam, lai uzzinātu, kā es izmantoju Docker, lai atrisinātu savu mikropakalpojumu problēmu. Ļaujiet man sniegt pārskatu par to pašu.

Zemāk ir diagrammas skaidrojums:

  • Pirmkārt, mēs uzrakstījām sarežģītās prasības Dockerfile.
  • Tad mēs to nospiedām GitHub.
  • Pēc tam mēs izmantojām CI serveri (Jenkins).
  • Šis Jenkins serveris to izvilks no Git un izveidos precīzu vidi. Tas tiks izmantots ražošanas serveros, kā arī testa serveros.
  • Mēs to izvietojām testēšanas vidēs (tas attiecas uz jūsu programmatūras izvietošanu serveros testēšanas nolūkos, pirms pilnībā to ievietojat ražošanā.).
  • Būtībā mēs ražošanā izmantojām tieši to, kas mums bija izstrādē, testēšanā un iestudēšanā.

Būs taisnīgi teikt, ka Dokers padarīja manu dzīvi vieglu.

Nu, tas bija stāsts par manu uzņēmumu, apskatīsim Indianas Universitātes gadījumu izpēti. Kā Dokers atrisināja viņu problēmas.

Indianas Universitātes gadījumu izpēte:

Indiānas universitāte ir vairāku pilsētiņu publisko universitāšu sistēma Indiānas štatā, Amerikas Savienotajās Valstīs.

Problēmas izklāsts

Viņi izmantoja pielāgotus skriptus, lai izvietotu lietojumprogrammas VM.

Viņu vide tika optimizēta viņu mantotajām Java bāzes lietojumprogrammām. Viņu augšanas vide ietver jaunus produktus, kuru pamatā nav tikai Java. Lai sniegtu saviem studentiem pēc iespējas labāku pieredzi, universitātei bija jāsāk modernizēt lietojumprogrammas.

Universitāte vēlējās uzlabot lietojumprogrammu veidošanas veidu, pārejot uz mikropakalpojumiem balstītu viņu lietojumprogrammu arhitektūru.

Drošība bija nepieciešama studentu datiem, piemēram, SSN un studentu veselības datiem.

Risinājums:

Visas problēmas ir risinājis Docker Data Center (DDC), apsveriet šo diagrammu:

Docker uzticams reģistrs - Tas saglabā Docker Images.

UCP (universālā vadības plakne) tīmekļa lietotāja saskarne - Palīdz pārvaldīt visu kopu no vienas vietas. Pakalpojumi tiek izvietoti, izmantojot UCP tīmekļa lietotāja saskarni, izmantojot Docker attēlus, kas tiek glabāti DTR (Docker Trusted Registry).

IT ops komandas izmanto Universal Control Plane, lai nodrošinātu Docker instalētu programmatūru resursdatoros un pēc tam izvietotu savas lietojumprogrammas, neveicot vairākas manuālas darbības, lai izveidotu visu savu infrastruktūru.

UCP un DTR integrējas ar LDAP serveri, lai ātri nodrošinātu piekļuvi viņu lietojumprogrammām.

Es ceru, ka jūs, puiši, esat izlasījuši iepriekšējos emuārus, lai uzzinātu Docker pamatus.

Tagad es jums paskaidrošu, kā mēs varam izmantot Docker Compose vairāku konteineru lietošanai.

Docker Hands-On:

Es pieņemu, ka esat instalējis Docker.Šajā ziņojumā es izmantošu Docker Compose, zemāk es esmu sniedzis nelielu ievadu Docker Compose.

Dokera sacerēšana: Tas ir rīks vairāku konteineru Docker lietojumprogrammu definēšanai un palaišanai. Izmantojot Docker Compose, varat izmantot Compose failu, lai konfigurētu lietojumprogrammas pakalpojumus. Pēc tam, izmantojot vienu komandu, jūs varat izveidot un sākt visus pakalpojumus no savas konfigurācijas.

Pieņemsim, ka jums ir vairākas lietojumprogrammas dažādos konteineros, un visi šie konteineri ir savienoti kopā. Tātad jūs nevēlaties izpildīt katru no šiem konteineriem pa vienam. Bet jūs vēlaties palaist šos konteinerus ar vienu komandu. Šeit Docker Compose nonāk attēlā. Ar to jūs varat palaist vairākas lietojumprogrammas dažādos konteineros ar vienu komandu. i., dokeris-sacerēt.

Piemērs: iedomājieties, ka YAML failā ir dažādi konteineri: viens darbojas ar tīmekļa lietotni, cits - ar postgres, bet otrs - ar atkārtotiem failiem. To sauc par docker compose failu, no turienes jūs varat palaist šos konteinerus ar vienu komandu.

Ņemsim vēl vienu piemēru:

Pieņemsim, ka vēlaties publicēt emuāru, tāpēc izmantosiet CMS (satura pārvaldības sistēmu), un WordPress ir visplašāk izmantotā CMS. Būtībā jums ir nepieciešams viens konteiners WordPress un jums ir nepieciešams vēl viens konteiners kā MySQL aizmugurē, MySQL konteineram jābūt saistītam ar WordPress konteineru. Mums ir nepieciešams arī vēl viens konteiners Php Myadmin, kas būs saistīts ar MySQL datu bāzi, būtībā tas tiek izmantots, lai piekļūtu MySQL datu bāzei.

ng-change vs onchange

Kā būtu, es praktiski izpildu iepriekš minēto piemēru.

Iesaistītie soļi:

  1. Instalējiet Docker Compose :
  2. Instalējiet WordPress: Mēs izmantosim ierēdni WordPress un MariaDB Dokera attēli.
  3. Instalējiet MariaDB: Tas ir viens no populārākajiem datu bāzu serveriem pasaulē. To ir veidojuši sākotnējie MySQL izstrādātāji. MariaDB ir izstrādāta kā atvērtā pirmkoda programmatūra un kā relāciju datu bāze nodrošina SQL saskarni piekļuvei datiem.
  4. Instalējiet PhpMyAdmin: Tas ir bezmaksas programmatūras rīks, kas rakstīts PHP, un paredzēts MySQL administrēšanai tīmeklī.
  5. Izveidojiet vietni WordPress:

Sāksim!

Instalējiet Docker Compose:

Vispirms instalējiet Python Pip:

sudo apt-get instalēt python-pip

Tagad jūs varat instalēt Docker Compose:

sudo pip instalējiet docker-compose

Instalējiet WordPress:

Izveidojiet WordPress direktoriju:

mkdir wordpress

Ievadiet šo WordPress direktoriju:

CD WordPress /

kā iziet ar atsauci uz java

Šajā direktorijā izveidojiet Docker Compose YAML failu, pēc tam rediģējiet to, izmantojot gedit:

sudo gedit docker-compose.yml

Ielīmējiet šīs koda rindas tajā yaml failā:

wordpress: image: wordpress links: - wordpress_db: mysql porti: - 8080: 80 wordpress_db: image: mariadb vide: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 vide: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Es zinu, ka jūs vēlaties, lai es izskaidroju šo kodu, tāpēc, ko es darīšu, es ņemšu nelielas šī koda sadaļas un paskaidrošu, kas notiek.

wordpress_db: ... vide: MYSQL_ROOT_PASSWORD: edureka ...

Tas iestatīs vides mainīgo Wordpress_db konteinerā ar nosaukumu MYSQL_ROOT_PASSWORD ar vēlamo paroli. MariaDB Docker attēls ir konfigurēts, lai pārbaudītu šo vides mainīgo, kad tas tiek palaists, un rūpēsies par DB iestatīšanu ar saknes kontu ar paroli, kas definēta kā MYSQL_ROOT_PASSWORD.

wordpress: ... porti: - 8080: 80 ...

Pirmais porta numurs ir resursdatora porta numurs, un otrais porta numurs ir ports konteinera iekšpusē. Tātad šī konfigurācija pārsūta pieprasījumus resursdatora 8080 ostā uz noklusējuma tīmekļa servera 80 portu konteinera iekšpusē.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 vide: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Tas satver kopienas locekļa corbinu docker-phpmyadmin, sasaista to ar mūsu wordpress_db konteineru ar nosaukumu mysql (tas nozīmē, ka no phpmyadmin konteinera iekšienes atsauces uz resursdatora nosaukumu mysql tiks pārsūtītas uz mūsu wordpress_db konteineru), atklāj 80. portu 8181. portā resursdatora sistēmu un visbeidzot ar mūsu MariaDB lietotājvārdu un paroli iestata pāris vides mainīgos. Šis attēls automātiski neuztver vides mainīgo MYSQL_ROOT_PASSWORD no WordPress_dbcontainer vides, kā to dara WordPress attēls. Mums faktiski ir jākopē rinda MYSQL_ROOT_PASSWORD: edureka no konteinera wordpress_db un jāiestata lietotājvārds saknei.

Tagad sāciet lietojumprogrammu grupu:

docker-sacerēt -d

Tas ir viss, kas jums jādara. Jūs varat pievienot tik daudz konteineru, cik vēlaties šādā veidā, un sasaistīt tos visus, kā vien vēlaties.

Tagad pārlūkprogrammā dodieties uz 8080 portu, izmantojot savu publisko IP vai resursdatora nosaukumu, kā parādīts zemāk:

vietējais saimnieks: 8080

Aizpildiet šo veidlapu un noklikšķiniet uz instalēt WordPress.

Kad tas ir pabeigts, vēlreiz apmeklējiet sava servera IP adresi (šoreiz izmantojot portu 8181, piemēram, localhost: 8181). Jūs sagaidīs phpMyAdmin pieteikšanās ekrāns:

Iet uz priekšu un piesakieties, izmantojot YAML failā iestatīto lietotājvārda sakni un paroli, un jūs varēsiet pārlūkot savu datu bāzi. Jūs ievērosiet, ka serverī ir iekļauta WordPress datu bāze, kurā ir visi jūsu WordPress instalēšanas dati.

Šeit es beidzu savu Docker Container emuāru. Es ceru, ka jums ir paticis šis ieraksts. Jūs varat pārbaudīt citi emuāri arī sērijā, kas nodarbojas ar Dokera pamatiem.

Ja jums šķita, ka šis Docker Container emuārs ir svarīgs, skatiet vietni Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka DevOps sertifikācijas apmācības kurss palīdz izglītojamajiem iegūt zināšanas par dažādiem DevOps procesiem un rīkiem, piemēram, Leļļu, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack un GIT vairāku soļu automatizēšanai SDLC.

Vai man ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un es sazināšos ar jums.