‫Oké,
‫dus wat ik ga doen is, ik ga door elk van deze services lopen op basis van
‫deze architectuur, en ik ga deze app on-the-fly maken. Ik ga de commando's hier in de readme typen, want dat lijkt
‫me een logische plaats om het te doen. En dan knip en plak ik ze in
‫mijn node.
‫Als je het je herinnert, ik heb hier een zwerm met 3 knopen. Als ik een docker-knooppunt ls doe, zul
‫je zien dat ik hier drie knooppunten heb. Het zijn allemaal managerknooppunten.
‫Ik heb geen containers lopen, en uiteraard geen services. Ten eerste, ik weet het aan de top,
‫het gaat over ik heb netwerken nodig, en ik heb een volume nodig.
‫Dus waarschijnlijk kan ik de netwerken uit de weg ruimen en dat kan ik waarschijnlijk wel. Ik kan docker
‫network create d overlay typen. Onthoud dat het overlay-netwerk het enige soort netwerk is dat we in een
‫zwerm kunnen gebruiken, omdat overlay ons in staat stelt om knooppunten te overspannen, alsof ze zich allemaal op het lokale netwerk bevinden.
‫En dan wil ik het backend noemen.
‫En dan wil ik precies hetzelfde doen, alleen frontend noemen.
‫Er is niets inherent speciaals aan deze twee netwerken.
‫We gaan onze verschillende services gewoon in de een of de ander segmenteren om te helpen fungeren als
‫een kleine firewall die scheiding biedt voor bescherming.
‫Bij deze stemming weet
‫ik dat ik een docker-service moet maken, en ik moet het een naam geven, dus ik kan net zo goed op naam stemmen. En dan moet ik de poort 80 tot 80 in de container
‫publiceren, en het moet op een specifiek netwerk zijn. Netwerkfrontend dus.
‫Ik heb twee replica's nodig.
‫Dus, replica twee. En dan kan ik net zo goed deze naam kopiëren en plakken.
‫Nu ga ik door en maak al deze voordat ik ze daadwerkelijk implementeer.
‫Ik ga deze hier echt kopiëren. Deze gaat heten... het gaat niet stemmen heten,
‫het gaat redis heten.
‫U hoeft zich geen zorgen te maken over het publiceren van poorten daarop.
‫Het zal op het frontend-netwerk zijn.
‫Ik wil twee replica's, en dan noem ik het redis three two is the image.
‫Hier beneden, Docker-service maakt naamwerker, zal op twee netwerken zijn. Ik moet netwerk frontend doen
‫en... oeps.
‫Ik typ wat ik zeg... eens kijken, netwerk-backend, en dan nog maar één replica.
‫… Omdat één replica standaard is,
‫hoef ik eigenlijk geen replica op te geven en geef ik geen poorten op.
‫Ik denk dat dat alles is wat ik daar nodig heb. Ik hoef alleen de afbeelding te kopiëren.
‫Oké, docker-service maakt naam db-netwerkbackend.
‫Kijk, een replica.
‫Oh, ik moet dit volume doen.
‫Hier gaat het om het volume. De opdracht -v is niet compatibel met docker-services. Omdat services om verschillende redenen
‫complexer zullen zijn dan misschien uw typische docker-run.
‫En er waren destijds problemen en beperkingen met de -v.
‫Docker heeft daar dus van geleerd en het formaat verbeterd. Maar het is toevallig een beetje
‫uitgebreider en misschien een beetje moeilijker om het formaat te onthouden.
‫Het is toevallig ook nog niet goed gedocumenteerd in de Docker-documentatie omdat het minder dan een
‫jaar oud is als commando. Dus we gaan dit gewoon kopiëren en plakken. Als het niet logisch voor
‫je is, is het deze lijst met waarden die allemaal deel uitmaken van een enkele mount-opdracht en de minima zijn
‫een type, een bron en een doel.
‫Er zijn ook andere dingen die u kunt toevoegen, maar dit zijn de enige drie die we in dit scenario nodig hebben.
‫En je kunt zien dat mijn bron slechts een genoemd volume is, omdat ik er geen schuine strepen in heb.
‫En als we slashes hadden gehad, zou het een bind-mount zijn geweest en hadden we een ander type
‫moeten specificeren.
‫Dus hier beneden, --mount type volume, source db data, target.
‫Ik denk dat dat klopt.
‫En dan kun je gewoon, postgres 9. 4.
‫En dan is de laatste de resultaat-app.
‫Dus, docker-service maakt naamresultaat netwerk-backend.
‫Publiceer de poort. We gaan 5001 gebruiken voor poort 80 in de container.
‫Ik kan er maar één uitvoeren. Trouwens, de enige reden waarom we een van
‫deze gebruiken is eigenlijk een weinig bekend probleem met deze app, is dat dit eigenlijk WebSockets gebruikt, en WebSockets zijn iets dat
‫een permanente verbinding vereist.
‫Dus, in het routeringsnet, doet WebSockets nog niet echt goed omdat het je heen en
‫weer zal blijven schakelen tussen containers en die WebSocket moet voortdurend naar een specifieke container gaan.
‫Dus met deze app zouden we eigenlijk een proxy ervoor moeten hebben, maar het zit nog niet in deze app, dus waarschijnlijk zullen ze het in
‫een latere versie bijwerken en repareren zodat we een proxy hebben.
‫Op die manier kan het overbodig zijn
‫en zeker dat u bij de juiste container terechtkomt. We gaan
‫dit kopiëren en plakken tot het einde. Ik realiseer me net dat ik de laatste waarde hiervan mis.
‫Oké, en dan ga ik bovenaan beginnen en gewoon kopiëren en plakken. Het heeft de netwerken al gemaakt.
‫Ja, dit moeten replica's zijn. Laat me dat hier updaten.
‫Replica's. Oké, we gaan de redis maken. Daar gaan we.
‫Oké, heb die gemaakt. Je zult trouwens merken dat ik een service-ID terugkrijg, maar dit betekent
‫niet dat de service daadwerkelijk correct is geïmplementeerd.
‫We zullen dat zo bekijken.
‫Laat me de rest van deze erin doen.
‫Oke.
‫Nu we dat hebben, zouden we de rest van onze commando's hier moeten kunnen doen. Docker-service laat ons ze alle
‫vijf zien. En je zult merken dat de replicanummers overeenkomen.
‫Dat is een goed teken.
‫Dat betekent dat er een is aangemaakt.
‫En als ik dieper wilde graven, zou ik op elk een docker-service ps kunnen doen.
‫Oké, dus die heeft 28 seconden gelopen.
‫redis draait al een minuut. db loopt 53 seconden. stemmen.
‫arbeider.
‫En je zult hier in de werker zien dat we een mislukte taak hebben die wordt afgesloten, en dan een die wordt uitgevoerd.
‫Dat loopt al 47 seconden.
‫Oké, dus ik weet eigenlijk waarom dit gebeurde, maar je weet het misschien niet, dus misschien moeten we een logboek maken.
‫Dit is nu op node2.
‫Een experimentele functie die je kunt inschakelen via een optionele configuratie in Docker, is eigenlijk
‫het doen van de nieuwe experimentele functie, docker-servicelogboeken. Die de logboeken daadwerkelijk uit veel verschillende knooppunten haalt.
‫Hopelijk wordt het later dit jaar in de volgende versie van Docker uitgebracht.
‫Maar voorlopig is het experimenteel. Dus ik moest het inschakelen in de etc docker daemon log, of daemon.
‫json-bestand. En, zodat je het weet, dit is hoe je een experiment zou inschakelen.
‫Dat is hier geen onderdeel van.
‫Dat is gewoon iets wat ik deed, zodat ik er heel snel mee kon pronken.
‫Mogelijk ziet u deze fout en denkt u: ik weet niet waarom dat gebeurt?
‫We kunnen dat logboek bekijken. Dus we kunnen een havenarbeider servicelog doen... oeps... logboek werknemer.
‫En dit is aan, deze specifieke, laten we eens kijken, dit zijn twee verschillende...
‫Je kunt hier zien dat dit er een is, en dan verandert het aantal. Eigenlijk wel.
‫Dit is hier allemaal één.
‫Er staat geen dergelijk apparaat of adres.
‫Dus wat dit in feite betekent, is dat ik een service heb gemaakt die op zoek was naar een DNS-record dat niet bestond
‫omdat ik de andere service nog niet had gemaakt. En het deed wat het zou moeten
‫doen in "Dockerland", en dat is wanneer het een dergelijke fout heeft, de app zou moeten crashen omdat Docker daadwerkelijk kan
‫herstarten en dingen opnieuw kan implementeren totdat de apps niet crashen. En zodra ik al mijn services
‫heb gelanceerd, stopte alles met crashen en werkt alles nu.
‫En dat kunnen we zien door gewoon terug te gaan en naar de ps-werker te kijken. We zien dat het al drie
‫minuten met succes draait.
‫Dus laten we eens kijken naar onze app.
‫Als ik gewoon het IP-adres ophaal, zou ik de honden en katten moeten krijgen. Ik ga op katten stemmen.
‫En als ik dan naar datzelfde IP-adres op poort 5001 ga, zou ik de resultaten-app moeten zien. Dat is de app.
‫We weten nu dat het werkt, want de enige manier waarop dit kan veranderen, is als dit helemaal doorgaat
‫wanneer het wordt ingehaald door de redis, en vervolgens wordt verwerkt door de werknemer, en vervolgens in de database wordt geplaatst.
‫We weten dus dat al onze app-services met elkaar kunnen praten. En we kunnen de logs bekijken als we dat
‫willen.
‫Maar dat is de demo.