1 00:00:00,620 --> 00:00:10,480 ‫În regulă, acum că am învățat totul despre scalarea Swarm cu rețeaua de plasare și rețeaua superioară, vreau să treceți 2 00:00:11,350 --> 00:00:18,910 ‫prin procesul de creare a bunurilor sau a obiectelor pe care trebuie să le implementați 3 00:00:18,910 --> 00:00:20,620 ‫într-un scenariu Swarm. 4 00:00:20,620 --> 00:00:26,110 ‫Deci, nu mai folosim comanda de rulare a docker-ului, dar rețeaua și volumele sunt 5 00:00:26,110 --> 00:00:28,640 ‫cam la fel, dar ușor diferite. 6 00:00:28,660 --> 00:00:36,030 ‫Vreau să vă dau un scenariu real al unei aplicații multi-tier și vom folosi aplicația distribuită de votare a 7 00:00:36,030 --> 00:00:36,820 ‫Docker. 8 00:00:36,840 --> 00:00:38,830 ‫Se numește de fapt aplicația Exemple de votare. 9 00:00:38,910 --> 00:00:43,980 ‫S-ar putea să fi văzut-o în notele-cheie Docker sau în alte laboratoare sau tutoriale. 10 00:00:43,980 --> 00:00:49,860 ‫Este destul de comună și cred că este o aplicație excelentă, deoarece are cel puțin cinci roluri sau mai multe containere 11 00:00:49,860 --> 00:00:51,540 ‫pe care trebuie să le folosiți. 12 00:00:51,720 --> 00:00:56,760 ‫Și toate servesc o funcție specială și de fapt fac lucruri care de fapt funcționează, de fapt, fac ceea ce 13 00:00:56,760 --> 00:00:57,740 ‫trebuie să facă. 14 00:00:57,750 --> 00:01:03,000 ‫Și astfel puteți juca cu el și are componente tipice, distribuite de arhitectură precum interfața 15 00:01:03,010 --> 00:01:04,870 ‫web și backend-ul lucrătorilor 16 00:01:04,870 --> 00:01:12,190 ‫și valoarea cheie într-o bază de date. Cred că este foarte util să o faceți. În acest caz, veți 17 00:01:12,370 --> 00:01:18,960 ‫folosi directorul swarm-app-1. Este de fapt în repo cursul nostru. Nu există 18 00:01:18,960 --> 00:01:26,590 ‫decât o citire și o imagine. De la acel readme, trebuie să creați volumul și câteva rețele și 19 00:01:26,590 --> 00:01:30,280 ‫cinci servicii necesare pentru ca această aplicație să funcționeze pe deplin. 20 00:01:30,370 --> 00:01:36,580 ‫Acesta vă poate ajuta să încercați unele dintre aceste comenzi la nivel local sau, de fapt, să le scrieți în editorul dvs. de text și să le 21 00:01:36,790 --> 00:01:40,290 ‫compuneți, deoarece acestea vor fi puțin complexe. Când faceți acest serviciu 22 00:01:40,300 --> 00:01:45,650 ‫de docare, trebuie să îl conectați la o anumită rețea și să deschideți porturile și să-l numiți 23 00:01:45,650 --> 00:01:51,490 ‫un nume specific și să utilizați o anumită imagine. Deci, ar putea fi mai ușor să o editați la nivel local și apoi 24 00:01:51,490 --> 00:01:54,400 ‫să vă tăiați și să vă lipiți în cochilia dvs., oriunde vă aflați. 25 00:01:54,520 --> 00:01:56,240 ‫Dar asta sunt doar eu. 26 00:01:56,260 --> 00:02:01,390 ‫Totul va folosi imaginile Docker Hub, deoarece în producția Swarm nu vrei să construiești. 27 00:02:01,450 --> 00:02:05,260 ‫Nu este un proces pe care îl vrei pe producția ta Swarm, de obicei. 28 00:02:05,290 --> 00:02:10,390 ‫De obicei, doriți să faceți clădirea dvs. fie printr-un serviciu online automatizat, cum ar fi 29 00:02:10,390 --> 00:02:17,280 ‫Docker Hub sau Docker Cloud, sau undeva în conducta dvs. CI / CD care nu mănâncă resurse pe producția dvs. Swarm. 30 00:02:17,290 --> 00:02:22,630 ‫În acest scenariu, ne putem imagina că imaginile noastre sunt construite în altă parte și stocate 31 00:02:22,630 --> 00:02:28,720 ‫pe Docker Hub și trebuie doar să le tragem în jos, indiferent de cele mai recente versiuni, în Swarm. 32 00:02:28,840 --> 00:02:34,720 ‫Și voi spune asta, la fel ca multe lucruri din Informatică, este o jumătate de știință, o jumătate de artă. 33 00:02:34,930 --> 00:02:40,650 ‫Comenzile dvs. ar putea fi în ordine total diferită sau au comenzi de opțiuni total diferite decât ale mele. 34 00:02:40,660 --> 00:02:43,200 ‫S-ar putea numi rețelele dvs. diferite lucruri. 35 00:02:43,270 --> 00:02:43,940 ‫E in regula. 36 00:02:43,950 --> 00:02:48,010 ‫În final, rezultatul este că aplicația funcționează, că este capabil să vorbească unul cu 37 00:02:48,010 --> 00:02:52,180 ‫celălalt în mod corespunzător, că aveți toate porturile publicate și că aveți datele protejate într-un volum. 38 00:02:52,180 --> 00:02:55,020 ‫Să aruncăm o privire rapidă asupra a ceea ce aveți de-a face. 39 00:02:55,030 --> 00:02:59,170 ‫Imaginați-vă că trebuie să proiectați comenzile și arhitectura pentru asta. 40 00:02:59,170 --> 00:03:01,970 ‫Și asta ți-ar da dezvoltatorul care ți-a scris această aplicație. 41 00:03:02,140 --> 00:03:05,280 ‫Ei bine, în acest caz, probabil că o mulțime de dezvoltatori au scris această aplicație, nu? 42 00:03:05,290 --> 00:03:10,120 ‫Deoarece avem de fapt un interfață web care este în Python, avem un backend Web care 43 00:03:10,120 --> 00:03:11,140 ‫rulează în Nod. 44 00:03:11,140 --> 00:03:17,170 ‫Avem un proces de muncitor care rulează. NET și apoi avem un magazin cu valoare cheie 45 00:03:17,180 --> 00:03:19,600 ‫Redis și o bază de date PostgreSQL. 46 00:03:19,630 --> 00:03:24,610 ‫Acesta este de fapt un lucru pe care îl văd tot mai des, în care echipe diferite scriu diferite părți 47 00:03:24,610 --> 00:03:29,510 ‫ale unei soluții și sunt capabili să aleagă limba pe care o consideră cea mai bună pentru scenariul respectiv. 48 00:03:29,660 --> 00:03:34,660 ‫Și în lumea containerelor, acest tip de aplicație strălucește cu adevărat. Deoarece aplicațiile noastre sunt toate segmentate, acestea pot 49 00:03:34,660 --> 00:03:35,750 ‫rula din punct 50 00:03:35,770 --> 00:03:40,630 ‫de vedere tehnic pe aceeași mașină, dar toate sunt protejate una de alta, astfel încât 51 00:03:40,630 --> 00:03:45,170 ‫să nu ajungeți în Nod în conflict cu dependențe de Python sau orice altceva. 52 00:03:45,190 --> 00:03:49,810 ‫De asemenea, veți observa fluxul de trafic, iar aplicația de votare nu o are, dar ar trebui să aibă o 53 00:03:49,810 --> 00:03:53,680 ‫săgeată care să vină prin faptul că acesta este locul în care utilizatorii vor veni în partea 54 00:03:53,710 --> 00:03:54,320 ‫de votare. 55 00:03:54,460 --> 00:03:59,530 ‫Și puteți vedea că aplicația de votare trebuie să vă împrăștie voturile pentru această aplicație, care, apropo, veți 56 00:03:59,530 --> 00:04:01,300 ‫vota pentru pisici și câini. 57 00:04:01,400 --> 00:04:07,780 ‫O să îl împingeți în Redis, iar apoi muncitorul va verifica sistemul Redis pentru 58 00:04:07,780 --> 00:04:15,060 ‫orice în coadă și apoi va împinge rezultatele în Postgres care vor fi apoi afișate pe 59 00:04:15,100 --> 00:04:19,960 ‫un backend WebSockets care actualizează actualmente în timp real vot. 60 00:04:19,990 --> 00:04:25,540 ‫Dacă intrăm rapid în Directoare, am pus niște note aici pentru a vă ajuta pe parcurs, deoarece există 61 00:04:25,540 --> 00:04:28,400 ‫câteva lucruri care sunt puțin diferite și noi. 62 00:04:28,510 --> 00:04:34,240 ‫Dar zona de servicii ar fi scrisă ca și cum ar fi fost de la cineva care știa cererea lor, dar nu știa 63 00:04:34,240 --> 00:04:38,390 ‫cum să implementeze acest lucru în Docker. Și acesta este un scenariu destul de comun. 64 00:04:38,530 --> 00:04:43,110 ‫Puteți vedea că în serviciile pe care le-am enumerat imaginea pe care trebuie să o implementați, numele 65 00:04:43,270 --> 00:04:46,310 ‫real pe care trebuie să-l dați, deoarece acestea sunt importante. 66 00:04:46,360 --> 00:04:51,130 ‫Acestea sunt imagini care, din păcate, codificate greu pentru numele pe care vor căuta în rețea. 67 00:04:51,130 --> 00:04:55,350 ‫În mod ideal, doriți ca aplicațiile pe care le puteți configura în regim de urgență pentru ceea ce trebuie să facă pentru nume, 68 00:04:55,360 --> 00:05:01,360 ‫dar, în acest caz, votul va căuta în mod special o înregistrare DNS numită redis. Puteți vedea că există două 69 00:05:01,360 --> 00:05:06,460 ‫rețele aici. Avem o rețea frontală și o rețea backend. Este destul de tipic, de asemenea, 70 00:05:06,460 --> 00:05:11,500 ‫o aplicație mai mare în cazul în care doriți să vă protejați baza de date într-o rețea de backend, astfel 71 00:05:11,500 --> 00:05:14,580 ‫încât aplicația de utilizator frontend să nu aibă acces direct la acesta. 72 00:05:14,680 --> 00:05:19,790 ‫Și asta am arătat aici și veți observa că lucrătorul este de fapt conectat la două rețele. 73 00:05:19,930 --> 00:05:25,830 ‫Deci, atunci când utilizați comanda dvs. de creare, amintiți-vă că utilizați serviciul de docare creare nu rulează docker. 74 00:05:25,840 --> 00:05:29,950 ‫Deci, atunci când folosiți comanda de creare a serviciului de andocare, va trebui să specificați -network 75 00:05:29,980 --> 00:05:33,460 ‫de două ori, o dată pentru interfață și o singură dată pentru backend. 76 00:05:33,490 --> 00:05:36,100 ‫Evident, știi să creezi mai întâi rețelele tale. 77 00:05:36,100 --> 00:05:41,290 ‫Deci, unele dintre acestea sunt specificate aici. Și dacă aveți nevoie de imaginea din nou, diagrama de arhitectură este 78 00:05:41,290 --> 00:05:45,350 ‫de asemenea aici, doar în cazul în care vă ajută în mod conceptual cu modul în care veți implementa acest lucru. 79 00:05:45,700 --> 00:05:50,680 ‫Și, desigur, veți avea documentația Docker. S-ar putea să fie nevoie să utilizați comanda --help 80 00:05:50,680 --> 00:05:54,790 ‫din comanda de creare a serviciului care vă va oferi toate opțiunile de care aveți nevoie. 81 00:05:54,790 --> 00:06:00,580 ‫Voi aveți nevoie doar de trei sau patru dintre acestea. Dacă rămâneți blocați cu comenzile înșiși, 82 00:06:00,580 --> 00:06:06,430 ‫poate doriți să revizuiți documentația actuală, pe care o voi pune în resursele acestei secțiuni. 83 00:06:06,520 --> 00:06:13,250 ‫Dar acest document special, în cadrul programului Swarm, merge de fapt în crearea serviciilor și configurarea serviciilor. 84 00:06:13,330 --> 00:06:18,610 ‫Așadar, este un pic cam proastă, dar are multe informații care te pot ajuta dacă rămâi 85 00:06:18,610 --> 00:06:19,160 ‫aici. 86 00:06:19,180 --> 00:06:22,700 ‫Următorul videoclip, de fapt, voi trece prin tot acest lucru ca și cum aș fi fost tu. 87 00:06:22,750 --> 00:06:23,980 ‫Mult noroc și să te distrezi.