‫Bine,
‫deci ceea ce am de gând să fac este că am să merg prin fiecare dintre aceste servicii pe
‫baza acestei arhitecturi și voi crea această aplicație în zbor. De fapt, o să scriu comenzile aici în readme, pentru
‫că pare un loc logic pentru mine. Și apoi le voi tăia și le lipi în
‫nodul meu.
‫Dacă vă aduceți aminte, am un Swarm cu 3 noduri aici. Dacă fac un nod de docare,
‫veți vedea că am trei noduri aici. Toate nodurile managerului.
‫Nu mai am containere și nici servicii, evident. Primul lucru, știu că e la început,
‫vorbesc despre nevoia de rețele și am nevoie de un volum.
‫Deci, probabil, pot scoate rețelele din calea mea și probabil că pot să aterizez. Pot să tip
‫de rețea docker create overlay. Amintiți-vă că rețeaua suprapusă este singurul tip de rețea pe care o
‫putem folosi într-un Swarm deoarece suprapunerea ne permite să acoperim nodurile, ca și cum acestea ar fi toate în rețeaua locală.
‫Și apoi vreau să o numesc backend.
‫Și apoi, vreau să fac același lucru exact, să-i spun doar frontend.
‫Acum, nu există nimic special în legătură cu aceste două rețele.
‫Vom doar segmenta diferitele noastre servicii într-unul sau altul pentru a vă ajuta să acționați ca un
‫mic firewall care oferă separare pentru protecție.
‫La acest vot,
‫știu că trebuie să fac un serviciu de docare și trebuie să-l numesc, așa că aș putea să votez și pe nume. Apoi trebuie să public portul 80-80 în container și
‫trebuie să fie într-o rețea specifică. Deci, frontend de
‫rețea. Am nevoie de două replici.
‫Deci, replica doi. Și apoi, aș putea copia și lipi acest nume.
‫Acum, voi merge mai departe și voi crea toate astea înainte de a le instala.
‫Am de gând să o copiez pe aici. Aceasta va fi numită ... nu va fi numit vot,
‫va fi numit redis.
‫Nu trebuie să vă faceți griji cu privire la publicarea oricărui port.
‫Va fi pe rețeaua frontend.
‫Vreau două replici, iar apoi o voi numi redis. Două două sunt imaginea.
‫Aici, serviciul docker creează un muncitor cu nume, se va afla pe două rețele. Trebuie să fac frontend de rețea
‫și ... Hopa.
‫Eu scriu ceea ce spun ... să vedem, backend de rețea, și apoi doar o replică.
‫... Pentru că o replică
‫este implicită, nu trebuie să specificăm replica și nu specific porturi.
‫Cred că asta e tot ce am nevoie acolo. Trebuie doar să copiez imaginea.
‫Bine, serviciul de docare creează backend pentru rețeaua de nume db.
‫Vezi, o replică.
‫Trebuie să fac acest volum.
‫Iată ce e cu volumul. Comanda -v nu este compatibilă cu serviciile docker. Deoarece, din diverse motive, serviciile
‫vor fi mai complexe decât poate funcționarea tipică a dockerilor.
‫Și au existat probleme și limitări cu -v înapoi în zi.
‫Deci, Docker a învățat de la asta și a îmbunătățit formatul. Dar se întâmplă să fie un pic
‫mai verbose și poate un pic mai dificil să-și amintească formatul care începe.
‫Se întâmplă totuși să nu fie bine documentată încă în Documentația Docker deoarece este mai mică
‫de un an ca comandă. Deci, o să copiem și să lipim acest lucru. Dacă nu are sens pentru
‫dvs., în principiu, este vorba despre această listă de valori care fac parte dintr-o singură comandă de montare, iar minimele
‫sunt un tip, o sursă și o țintă.
‫Există și alte lucruri pe care le puteți adăuga, dar acestea sunt singurele trei care avem nevoie în acest scenariu.
‫Și puteți vedea că sursa mea este doar un volum numit, pentru că nu am nici o șiretlică în ea.
‫Și dacă am avea șuvițe, ar fi fost o montare de legătură și ar fi trebuit să specificăm un
‫tip diferit.
‫Deci, aici jos, - volumul tipului de mufă, datele din sursa db, țintă.
‫Cred că e corect.
‫Și apoi poți, poștă 9. 4.
‫Apoi ultima este aplicația rezultată.
‫Deci, service-ul docker crează backend-ul rețelelor de rezultate.
‫Publicați portul. Vom folosi 5001 până la port 80 în container.
‫Eu pot rula doar unul dintre ei. Apropo, singurul motiv pentru care executam una dintre acestea
‫este, de fapt, o problemă puțin cunoscută în această aplicație, este că aceasta utilizează de fapt WebSockets, iar WebSockets sunt ceva care
‫necesită o conexiune persistentă.
‫Deci, în plasa de rutare, nu face cu adevărat WebSockets încă pentru că va continua
‫să vă schimbe între containere și că WebSocket trebuie să fie la un anumit container persistent.
‫Deci, cu această aplicație ceea ce ar trebui să avem cu adevărat, este un proxy în fața ei, dar nu este în această aplicație încă așa, probabil, într-o versiune ulterioară,
‫ei o vor actualiza și o vor rezolva astfel încât să avem un proxy.
‫În acest fel poate fi redundant
‫și sigur că ajungeți la containerul potrivit. Vom copia
‫și lipi acest lucru până la capăt. Tocmai mi-am dat seama că am pierdut ultima valoare pe acestea.
‫Bine, și apoi voi începe de sus și doar copiați și lipiți. Au fost deja create rețelele.
‫Da, trebuie să fie replici. Permiteți-mi să actualizez asta aici.
‫Reproduceri. Bine, vom crea redistribuția. Vom merge acolo.
‫Bine, am creat-o pe asta. Acum, veți observa, apropo, primesc un ID de serviciu, dar nu
‫înseamnă că serviciul este implementat corect.
‫Ne vom uita la asta într-un minut.
‫Permiteți-mi să-mi iau restul de acolo.
‫In regula.
‫Acum că avem asta, ar trebui să putem face restul comenzilor noastre aici. Deci, serviciul de docare ne arată toate
‫cele cinci. Și veți observa că numerele replicilor se potrivesc.
‫E un semn bun.
‫Asta înseamnă că unul a fost creat cu succes.
‫Și dacă vroiam să mă sapă mai adânc, aș putea să fac un service doc de pe fiecare.
‫În regulă, așa că am alergat 28 de secunde.
‫redis a trecut un minut. db rulează 53 de secunde. vot.
‫muncitor.
‫Și veți vedea aici, în muncitor, că avem o sarcină nereușită care se închide și apoi una care se execută.
‫A trecut de 47 de secunde.
‫Bine, de fapt, știu de ce sa întâmplat asta, dar poate că nu știți, poate că ar trebui să facem un bușteni.
‫Acum, acesta este pe node2.
‫O caracteristică experimentală pe care o puteți activa printr-o configare opțională în Docker este de a face de
‫fapt noua funcție experimentală, jurnale de servicii de andocare. Care trage de fapt busteni de la multe noduri diferite.
‫Sperăm că va fi lansată în următoarea versiune a Docker în cursul acestui an.
‫Dar pentru moment, este experimental. Așa că a trebuit să o permit în interiorul jurnalului démonului docker etc. sau daemonului.
‫fișier json. Și, doar așa știți, așa veți permite unui experimentator.
‫Asta nu face parte din asta.
‫Asta e doar ceva ce am făcut, doar ca să pot arăta asta rapid.
‫S-ar putea să vedeți această eroare și vă gândiți, nu știu de ce se întâmplă asta?
‫Ne putem uita la jurnalul ăsta. Deci, putem face un lucrător log log de serviciu ... Hopa ... jurnalist.
‫Și asta e, în special, să vedem, acestea sunt două ...
‫Puteți vedea aici că acesta este unul și apoi numărul se schimbă. De fapt, da.
‫Toate acestea sunt aici.
‫Se spune că nu există un astfel de dispozitiv sau o adresă.
‫Deci, ceea ce înseamnă în principiu este, am creat un serviciu care căuta un record DNS care nu exista pentru
‫că încă nu am creat celălalt serviciu. Și a făcut ce trebuia să facă în
‫"Dockerland", care este atunci când are o eroare de genul asta, aplicația ar trebui să se prăbușească deoarece Docker poate de fapt să repornească și
‫să redeproducă lucrurile în mod corespunzător până când aplicațiile nu se prăbușesc. Și imediat ce mi-am lansat toate
‫serviciile, totul sa oprit brusc și totul funcționează acum.
‫Și putem să spunem că ne întoarcem și ne uităm la muncitorul PS. Vedem că se execută cu succes
‫timp de trei minute.
‫Deci, să aruncăm o privire la aplicația noastră.
‫Dacă am trage doar adresa IP, ar trebui să-i iau pe câini și pisici. Voi vota pisicile.
‫Și apoi, dacă mă duc la același IP pe portul 5001, ar trebui să văd aplicația pentru rezultate. Aceasta este aplicația.
‫Acum stim ca functioneaza, pentru ca singura modalitate prin care se poate schimba aceasta este daca aceasta se intampla
‫in momentul in care este prins de redis si apoi procesata de muncitor si apoi pusa in baza de date.
‫Așadar știm că fiecare dintre serviciile noastre de aplicații pot discuta unul cu celălalt. Și ne putem uita la jurnale dacă
‫vrem.
‫Dar asta e demo-ul.