>> [Muziek]
DAVID MALAN: Oké.
Heel erg bedankt voor uw komst.
Dit is CS50 seminar over Docker, een technologie die we onszelf en CS50
zijn begonnen met enige tijd.
Dus mijn naam is David Malan, I leren Harvard Introductie
Computer Science.
Voor heel wat jaren, we zijn het geven van studenten
downloadbare client-side virtuele machines
waar zij hun problemen sets.
Dat hebben we nu overgestapt een cloud-omgeving
die daadwerkelijk gebruikt deze technologie riep Docker, zodanig dat alle CS50
studenten hebben nu hun eigen Docker containers
dat u binnenkort alles zult horen.
>> Bovendien, op de server CS50's side cluster, voor vele jaren
waren we met behulp van Amazon's Cloud server.
We liepen individuele virtuele machines.
Ook dat hebben we begonnen met de overgang naar deze dingen genoemd Docker containers
zodat al onze toepassingen nu perfect geïsoleerd van elkaar.
Dus voor dat en meer, laat mij introduceren onze vrienden, Nico en Mano,
van Docker zelf.
NICOLA Kabar: Bedankt, David.
Dag iedereen.
Mijn naam is Nico en dit is Mano.
We zijn van Docker.
We gaan praten about-- geven jullie een intro naar Docker,
en hopelijk eind van dit gesprek u kunt realiseren
hoeveel je arts kan gebruiken om oxalaat uw applicatie-ontwikkeling
en implementatie.
>> Dus, gaan we echt beginnen snel met wat achtergrond informatie.
Beschrijven wat Docker is alles over.
Hoe werkt het?
Hoe is het architected?
Ik zal doen wat demo's.
En Mano gaat worden beschrijven hoe kunt u gebruik maken van Docker
en geven u specifieke stappen hoe je kunt aan de slag.
>> Ik zou het waarderen als jullie kan houden off voor uw vragen naar het einde.
Op die manier, ik misschien aanpakken die vragen gedurende de presentatie.
Dus we zullen enige tijd vertrekken naar het einde voor vragen.
>> Dus gewoon echt snel, wie heeft eigenlijk ooit gewerkt Docker,
zoals gespeeld met het?
Geweldig.
Koel.
Grote.
Dus, ik ga om te beginnen met een stukje geschiedenis.
Dus terug in de jaren '90 en vroege jaren 2000, in feite
als web-ontwikkelaars, app-ontwikkelaars, toen ze ging om een ​​aanvraag in te zetten
het werd vastgebonden aan blank metaal.
Het was één server.
Het was een applicatie.
>> Traditioneel voorbeeld zou zijn als een LAMP-stack,
waar je eigenlijk moest brengen van het zwembad van de middelen.
CPU, geheugen, schijf, netwerk, installeren besturingssysteem op de top van dat.
Als je iets te serveren, indien je bent eigenlijk met webserver,
je zoiets nodig Apache te serveren.
>> Als uw aanvraag moet de database, backhand,
zou je iets installeert zoals MySQL, en ga zo maar door.
En als je de run tijd nodig, PHPs PHP en Python werk waren.
En dus hebben we eigenlijk moesten nemen deze stappen om
om uw aanvraag up and running te krijgen.
>> Als je meer rekenkracht nodig, u had eigenlijk om uw Ops kerel bellen
of gal te gaan en rack up een nieuwe stuk hardware, sluit het,
en je hebt om die te herhalen processen opnieuw en opnieuw.
Dus dit proces was relatief duur.
Was zeker erg traag.
>> Het was inefficiënt.
En in veel gevallen uw hardware werd onderbenut.
Dus, in de late jaren '90 en vroege jaren 2000, hardwarevirtualisatie kwam.
En zoals je kunt hier zien in de foto, eigenlijk wat ze deden
is geabstraheerd van de pool van gratis hardware resources
en soort van gediend die naar de bovenste lagen,
in dit geval, een gast-besturingssysteem.
>> En het hele idee van virtuele machines kwam
en die echt geholpen Cloud computergebruik zoals we die vandaag kennen.
Dus wat dat betekende is u kunnen meerdere VM's, lopen die
betekende meerdere stapels, multiple applicatie op een zelfde fysieke machine.
>> Dit zeker geholpen met de snelheid van de implementatie van toepassingen.
Zeker met de kosten.
Je hoeft niet te gaan en breng energie, tijd en middelen om rack
meer servers om meer rekenkracht te krijgen.
En de snelheid van daadwerkelijk brengen deze middelen up is veel sneller.
Grote.
>> Dus we opgelost honger in de wereld, toch?
Nee niet echt.
Dus, virtualisatie zo veel als het is eigenlijk geholpen, pakken het probleem,
het eigenlijk geïntroduceerd veel uitdagingen.
De hypervisor zeker introduceerde veel complexiteit
omgaan met deze onderliggende pool van middelen.
>> Het is zwaarder in die zin dat vóór u één besturingssysteem had die
is net als drie, vier optredens op de schijf.
Nu, als je 10 machines op een enkele hardware-
moet je dat vermenigvuldigt het aantal machines.
Het is zeker meer duur in zekere zin nog steeds
moeten licentie voor te krijgen de virtualisatietechnologie
als het niet open source.
>> Maar, laten we niet alle nemen krediet van virtualisatie.
Want wat er gebeurd is er een veel stapels en veel software
technologieën die werden ingeschakeld door hoe snel je in staat om te krijgen waren
om middelen met de Cloud boom.
>> Dus, vandaag één applicatie of dienst kan worden met een van de volgende runtimes
of databases.
PHP, Python, MySQL, Redis, zo.
Dus er is veel complexiteit op deze aantal stapels om daadwerkelijk brengen
één dienst.
En samen met dat, je een hoop gehad onderliggende middelen of infrastructuur
types te implementeren testen en eigenlijk naar productie die toepassingen
dat je ontwikkelt.
>> Vooral als uw teams gewend te werken op die apps,
er is een heleboel complexiteit en uitdagingen
die werden gebracht opdat de cycle-- principe applicatie
ontwikkelingscyclus, is eigenlijk succesvol.
Dus, het feit dat uw aanvraag wordt lokaal werkt aan uw lokale VM
kan niet garanderen dat uw collega gaat om dezelfde resultaten te verwachten.
>> En als de operations team is die betrokken zijn bij het nemen van wat je hebt
en het inzetten van deze in productie schaal, ook is er geen garantie
dat is eigenlijk gaat gebeuren.
Dus dit laat ons achter met een echt big-- veel vraagtekens,
veel uitdagingen daadwerkelijk maken op dezelfde wijze terug in de dagen.
En dat deed ons denken aan de scheepvaart.
>> Zodat de scheepvaart had veel van goederen,
zoals je kunt zien aan de linkerkant.
En aan de rechterkant, er is veel van, in principe,
manieren om deze goederen te verzenden.
En wat gebeurt er als een paar mensen kwamen bij elkaar en zei:
we nodig hebben om te standaardiseren hoe we eigenlijk verzenden die goederen.
En giek, heb je de intermodale zeecontainer.
>> Dus eens ze op de meest gemeenschappelijke afmetingen van de houder.
Hoe om te gaan.
Wat de exacte methode die u nodig hebt te laden en te lossen hen.
En daarom, dat werkelijk hielp de scheepvaart.
Nu vervoerde meer dan 90% scherpstelling wereldwijd gebruikt die containers.
En dat zeker afneemt de kosten als
de schade als gevolg van de scheepvaart.
>> Dus nemen we hetzelfde model en we de twee app ontwikkeling software toepassing
architectuur, in de zin dat containerisatie
nam de virtualisatie een niveau omhoog.
Dus in plaats van dat te doen op de hardware niveau,
Het meer van een operationeel werd systeemniveau virtualisatie.
>> En dat doen we door elke applicatie in zijn eigen lichtgewicht,
geïsoleerde, uitvoerbare en draagbaar, belangrijker nog,
een manier om daadwerkelijk verpakken alles wat het moet uitvoeren.
Overal kan worden uitgevoerd.
Dus, ongeacht of je draait het op lokale dev milieu, uw productie
milieu, je staging of testen.
Maakt niet uit wat de onderliggende infrastructuur is er,
je had een functioneel werkende app.
>> Dus dat is precies wat eigenlijk containers doen om dit probleem.
Ze pakken door verpakken zodanig
dat het kan garanderen dat het is ingezet succes, ongeacht waar het leeft.
Dus als je gaat zoals Bob het is nog steeds OK.
Als je in de war bent met wat ik zeg, Ik ga worden voortbordurend op dat.
>> Dus hoe werkt Docker zelf past in dit plaatje?
Dus Docker is een open platform eenvoudig, gemakkelijk te benadrukken,
te bouwen schip, draaien, lichtgewicht draagbare zelf
voldoende app containers overal.
Dus als je iets van deze nemen praten, neem dan de volgende.
>> Als u uw app running lokaal en je ontwikkeld
in het gebruik van de Docker platform verwachten met succes worden ingezet.
Het maakt niet uit wat is de onderliggende infrastructuur.
Dus als je een Docker container en het werkt, dan
Zolang er een Docker engine anderzijds side--
Als uw operatie infrastructuur wordt met behulp van een wolk, of het
AWS is of Google of Microsoft, of een van de publieke clouds,
of uw eigen Cloud, of geopende stack Cloud, of uw lokale omgeving.
>> Als u een motor hardlopen, dat betekent
het gaat zijn er met succes ingezet.
Het zal worden uitgevoerd exact hetzelfde gedrag
zoals u het architected te zijn.
Dus als we kijken at-- Ik ben gaan om te gaan door wat er werkelijk
zijn in de belangrijkste onderdelen van Docker.
>> Dus Engine is de kern van Docker.
Het is van de hersenen.
Het orkestreert de bouw, scheepvaart, en het implementeren en beheren
de houders zelf.
Ik zal graven in wat Engine doet in meer details in een tweede.
In principe, want dokter werd gebouwd rond de client serverarchitecturen,
dus om te interageren met de Motor je een soort van een client nodig.
>> Beelden zijn de sjablonen in die containers zijn opgebouwd uit.
Zodat beelden zijn in principe alleen statische bestanden.
Templates en containers is eigenlijk wat is
draait op runtime dat bedient uw aanvraag
of iets met de gegevens doet.
>> Register is gericht als een probleem van hoe je eigenlijk distribueren beelden.
Dus als je nodig hebt om een ​​afbeelding delen die u werkte aan uw collega
of om de ops team, je gebruik het met de Register.
U kunt een open source downloaden versie van dat Docker gewerkt
en open source.
>> Of u kunt Docker hulp gebruiken, dat is de cloud-versie
te duwen en te trekken beelden die er zijn.
Dat is een enorm ding.
Want er is een enorme ecosysteem rond Docker en het is
erg zwaar gebruik van de naaf.
>> Dus hier vatten, zo de minimalistische Docker workflow client.
Je interactie met de gastheer, in dit geval is het de Docker daemons.
Het is hetzelfde als Engine.
Je doet commando's als Docker bouwen, trek, run.
En de motor zelf gaat en doet die dingen.
>> Dus ofwel het een wisselwerking met Register om die beelden te trekken
en de lagen van de afbeeldingen.
Of als u wilt implementeren, lopen containers, dood ze, gooi ze naar beneden,
zo.
Dus dit geeft een overzicht van de workflow al deze componenten.
>> Dus als je elke nemen component zelf.
Dus Engine, het is gewoon een daemon.
Het zal soort spelen te steunen het op Linux, omdat het doet
vereisen bepaalde Linux kernel functies.
Maar Windows werkt op hetzelfde te doen.
Het zou moeten worden ondersteund Windows Server 2016.
>> Dus nogmaals, de verantwoordelijkheden van de engine is, of om afbeeldingen op te bouwen.
Trek beelden van de Docker Hub of uw eigen register.
Als je klaar bent met die beelden of u een nieuwe foto te maken,
je kunt duwen die terug naar register te verspreiden naar andere teams.
>> En proberen om het lokaal te bevatten en beheren van de containers levenscyclus
lokaal.
Het is opgebouwd rond HTTP REST API.
Dus technisch kunt u schrijf uw eigen client
zolang het gebruikt HTTP, dat een zeer standaard mechanisme om de motor te praten
en een heleboel andere diensten.
En je kunt zien vanaf hier dat, ongeacht
wat de infrastructuur is, zolang je alle can--
je nodig hebt is een operationele systeem, Linux bijzonder.
>> En u kunt Docker Engine installeren Op de top van dat en hebben het hardlopen
en het orkestreert, in principe, deze app één, twee,
en drie zijn de werkelijke containers.
Dus dat is Engine.
Zoals ik al eerder vermeld, omdat je nodig hebt om te communiceren met de motor,
er is de klant.
>> Maar eigenlijk als je installeert Docker, dat wordt geleverd met het.
Dus het wordt geïnstalleerd, dus het is een binair.
En je kunt lokale gesprekken doen uw Docker Engine.
Of externe gesprekken naar externe Engines.
Het maakt gebruik van HTTP, zoals Ik eerder noemde.
Er is een GUI client genaamd Kitematic van Docker.
En er zijn zeker een heleboel andere mensen
die bouwen aan een heleboel GUI's die in principe uit te voeren
sommige HTTP roept Engine te praten.
>> Slechts enkele voorbeelden van commando's.
Als u Docker versie doen, het zou tonen u de clientversie als
de server versie.
Als u Docker info doen zal vertellen u alle informatie
hoeveel containers draaien of gecreëerd, hoeveel foto's je hebt,
enzovoort, enzovoort.
>> Hier heb ik, in de naast laatste doos heb ik dokter lopen.
Dus dat is hoe ik ben eigenlijk creëren container.
En ik geef het aan echo Hello World en slapen voor een tweede en wat al niet.
En je kunt zien dat de resultaat. Dus het is aan de gang.
En vergelijkbaar met Linux ps, kunt u zien alle processen en in dit geval,
alle actieve containers.
Deze is terug te verwijzen naar de container ik zojuist.
>> Dus, dit is echt belangrijk omdat, zoals, kan het een beetje verwarrend.
Zodat beelden zijn alleen-lezen de verzameling bestanden, toch?
Ze zijn wat onze container is gebaseerd op.
Maar ze zijn alleen-lezen.
Dus je begint het een basis met.
Het neigt OS-achtige nabootsen, zodat Image whatnot base Ubuntu, CentOS,.
En dan begin je te bouwen op de top van dat bepaalde lagen, die ervoor zorgt dat
image uw kant, het eindresultaat hier.
>> En elk van die lagen moet het een ouder hebben
die het gebruikt als het eigenlijk wil creëren.
Ze zijn onveranderlijk in de zin dat alleen-lezen omdat ze,
je kunt eigenlijk niet wijzigingen aanbrengen aan hen.
U kunt ze gebruiken om het creëren van een container van een beeld, waarbij
roep alle volgende vereiste afbeeldingen eronder.
>> U kunt wijzigingen aanbrengen een andere laag,
het is een herschrijven laag Ik kom praten over in een tweede.
Maar elk van deze lagen zijn nooit veranderd.
Eigenlijk afbeeldingen iets riep Unie File System, UFS.
Er zijn verschillende storage backends die deze technologie gebruiken.
En wat dat betekent is dat het brengt verschillende bestandssystemen
om ze te laten uitzien als een.
>> Dus je kunt eigenlijk uit een toepassing perspectief,
je hebt een top van een uitzicht dat shows al de verschillende bestandssysteem nodig
voor die toepassing te draaien.
Maar ze zijn eigenlijk, op dit, ze zijn eigenlijk in afzonderlijke plaatsen
en wordt gebruikt door andere containers ook.
>> Dus zoals je hier kunt zien in dat als we beginnen met het daemon
afbeelding van een basis, en daarna als we gaan in en voeg [? emacs?]
en dan is dat een andere laag.
En voeg vervolgens Apache.
Dat is een andere laag.
En dan brengen we de container van.
Elk van die beelden, elk van deze lagen,
is verschillend en kan hergebruikt door andere containers.
>> Als je kijkt naar containers zelf, ze zijn een of andere manier, zoals VM-like,
maar tegelijkertijd behandeld.
Dus, ze hebben niet, technisch, de volledige besturingssysteem eronder.
Zij maken gebruik van de ene kernel van het host-besturingssysteem.
En ze bouwen op de top van dat.
Ze bootsen in hoe ze eruit zien.
Ze imiteren hun root-bestandssysteem systeem van het besturingssysteem.
Maar ze eigenlijk niet repliceren.
>> Dus, in plaats van onveranderlijke lagen, de laatste laag, die de houder
zelf, het is een read-write laag.
Dat loopt ook de processen van uw aanvraag.
En afhankelijk van de onderliggende lagen.
Elke container is gemaakt op basis van een afbeelding.
En dat imago kan een single laag of multilayer afbeelding.
>> En ik wil hier op te merken dat Docker gebruikt zwaar,
of is gebaseerd op exemplaar-On-Write mechanisme.
Dus dat, eigenlijk, als je niet het wijzigen van de houder,
het gaat niet om extra ruimte te nemen.
Dus dat is eigenlijk hoe je vatten een Copy-on-Write.
Het zal zeker versnellen het opstarten van de houder.
Want als je niet maken wijzigingen in de houder,
het is gebruik te maken van wat er al is.
>> Dus, hoe het eigenlijk werkt.
Een deel van het is net als, juist nu, het maakt gebruik van ten minste twee belangrijke kernel
functies.
En dat is eigenlijk wat geschapen dat niveau van isolatie
de containers zelf.
Die functies zijn namespaces en cgroups.
Dus namespaces zijn een manier om creëren geïsoleerde middelen,
zodat binnen de houder zelf, alleen kunt u bepaalde middelen zien.
Zoals de netwerkinterface of bepaalde gebruikers of zo.
>> En dat zijn alleen zichtbaar en alleen toegankelijk binnen de container.
CGroup aan de andere kant grenzen hoe je deze middelen te gebruiken.
CPU, geheugen en schijf.
Als je kunt gaan in, I betekenen dat zijn eigenlijk
functies die zijn ontwikkeld by-- ze zijn een deel van de Linux kernel.
Dus werden ze niet opnieuw uitgevonden door of herschapen door Docker.
Docker gebruikt ze.
>> Wat Doctor echt Hier is eigenlijk
georkestreerde creëren namespaces voor elke container
en het creëren van de cgroups zodat het belachelijk makkelijk om containers te creëren
met behulp van deze functies.
Natuurlijk, zoals ik al eerder beschreven, Union Bestandssystemen en Copy-On-Schrijf werkelijk
helpen de snelheid en de schijf gebruik van containers.
>> En als je eenmaal je handen rond Docker,
je gaat om te zien hoe snel het is om eigenlijk spin up containers en traan
ze naar beneden.
Dus, als je je afvragen, hoe kan je eigenlijk beelden op te bouwen?
We bouwen beelden door een proces van het creëren containers en het aanbrengen van wijzigingen, veranderen
hen, en het plegen van hen uitgroeien tot een beeld.
>> Dus het is een kip en ei referentie hier,
omdat alle containers komen van beelden en afbeeldingen komen
uit gepleegd containers, voor het grootste gedeelte.
Er zijn drie opties om beelden te creëren.
Ik ga om te beschrijven de eerste en laatste.
U kunt handmatig gaan en de container lopen
en maak deze wijzigingen, zoals je zou doen op een VM
of elk besturingssysteem, zoals zoals het installeren van nieuwe binaries,
toevoegen bestandssystemen, en wat al niet.
>> En dan moet je verlaten, als U kunt daar zien.
Ik verlaat mijn container.
En toen ik doe Docker plegen.
En ik ben het plegen van dat.
U kunt dat het aantal hier te zien is gewoon een UUID, of de eerste 12
stukjes van de UUID.
Of bytes van de UUID.
En dan ga ik mijn imago noemen het.
Dus nu Docker verzorgt het opnemen van alles wat ik deed
en het creëren van de nieuwe afbeelding op basis van dat.
>> Ik ben niet van plan om te praten over tarball, maar er is een manier kunt u een enkele,
het creëren van een enkele, of een enkele image laag met behulp van tarballs.
Wat ik ga om te praten over deze en wat is het meest gebruikt vandaag de dag,
is Dockerfile.
Die technisch de eerste stap geautomatiseerd door Docker zich.
Dus Dockerfiles zijn dingen die je bent gaan zien in een veel GitHub repos
vandaag.
Het is eigenlijk gewoon een tekstbestand beschrijft
precies hoe om een ​​beeld op te bouwen.
>> En voor elke lijn, het eigenlijk creëert de container, voert die lijn,
begaat die container in een nieuwe afbeelding, en u, in principe,
gebruik het voor alle volgende operaties tot je het laatste beeld.
Die in feite de uiteindelijk doel hier, het einde.
En nadat je exec-- nadat u schrijf uw Dockerfile, die
is puur in tekst, heb je een Docker bouwen en de naam van het beeld.
>> En u wijzen op dat dat waarbij de Dockerfile is.
En u kunt verwachten om mijn afbeelding te zien als een beeld dat je lokaal.
Dus dat is gewoon een visuele voorbeeld van wat er gebeurt.
Je begint het een basis met.
Je loopt die in een container die base beeld zelf het verandert niets.
Maar maken een herschrijven laag op de top van het
waar u de wijzigingen aan te brengen, waar je commit
en je het proces tot herhalen je naar je uiteindelijke afbeelding.
>> En door dit te doen, om de andere build proces kan dezelfde lagen gebruiken
en het principe same-- Docker caches die lagen.
Zodat als ik precies hetzelfde doen proces, maar in plaats van het installeren PHP,
Ik ben het installeren van Python.
Het gaat om Apache en Ubuntu gebruiken.
Zodat op die manier je gebruik te maken van uw harde schijf.
Het gebruik van de cache en de beschikbare beelden daar.
>> Het laatste stuk is Registry, dat Zo kunt u uw foto's te verspreiden.
En, zoals ik al eerder zei, er is een Cloud versie ervan,
dat is Docker Hub.
Je kunt gaan en te verkennen veel, eigenlijk
het publieke SAS product je kunt nog steeds een eigen beelden,
maar er is veel publieke beelden.
Het is eigenlijk onbeperkt, kunt u duwen onbeperkt publiek beelden daar.
En dit is hoe je kunt samen met uw team.
>> Je kunt ze gewoon wijzen op je repo en ze kunnen het of uw afbeelding te downloaden
en ze kunnen downloaden.
Dus genoeg met het gesprek.
Die wil een aantal demo's echt snel zien?
Prima.
Dus hier heb ik.
Ca jullie zien mijn scherm?
Prima.
>> Ik heb zo Docker loopt hier, dus ik kan it's-- Dit controleren is de versie
van Docker die draait.
Kan doen Docker info.
Controleer alle informatie over hoeveel images ze, enzovoort, enzovoort.
Docker PS, er is niets lopen.
Aaneengeschakelde die.
>> Dus het eerste wat ik wil doen is laten zien hoe kun je gemakkelijk een container lopen.
Zodat de schoonheid over Arts lopen, als het werkelijk
geeft een beeld niet lokaal vinden, standaard is praat met Doctor Hub
en probeert om het daar te vinden en downloadt het voor je.
Omvat dus een Docker pull commando, natuurlijk.
>> Dus als ik een Docker run, hello-wereld te doen.
Dus, eerst gaat het om te proberen om het te vinden.
Anders, zoals je hier kunt zien, kon het niet vinden lokaal.
Nu is het net trok twee lagen dat maakte dat imago en ik liep.
De hallo-wereld is gewoon eigenlijk uitgangen, wat je hebt gedaan.
Dus dit is de makkelijkste, men het gemakkelijkst voorbeelden.
Dus eigenlijk heb ik net liep en beëindigde de container echt snel.
>> Als ik wil run-- en door de manier, als Ik wil de tijd dat, net zo u weet,
dit is hoe lang het duurt om eigenlijk draaien en indammen.
We meten in milliseconden.
Zodat je kunt zien hoeveel dit kan daadwerkelijk helpen u niet alleen bij het testen,
maar ook nog implementatie.
Dus dat is een korte opmerking over dat.
Het volgende wat ik ben gaan doen is eigenlijk
uitvoeren van een beeld dat ik heb al voorbereid.
Dus koppelvenster run.
-d is gewoon een vlag te vertellen om te draaien op de achtergrond.
En -p wijst bepaalde poorten.
Omdat standaard, de containers zijn geïsoleerde,
dus je moet precies aangeven hoe het kan hen openen.
En in dit geval, ik zeg Docker om een ​​willekeurige poort kaart op de host
naar een gespecificeerde haven binnen de container zelf.
En dat is eigenlijk waar de image-- hopelijk is dit het juiste is.
>> Dus het doet parallelle downloads per van die lagen zoals je hier kunt zien.
Dat zijn de lagen maken end beeld, dat ik gebouwd.
Het gaat om een ​​tweede te nemen.
En voila.
>> Dus nu als ik een havenarbeider ps, zou ik zie iets dat draait.
Ik moet de ID te zien, het beeld dat dit was gebaseerd off,
en de opdracht die is uitgevoerd.
En hoe de toegang tot het eigenlijk je naar die poort.
Dus ik ga om te gaan to-- deze is Ik stel het op AWS.
Ik ga naar 32.769.
Oeps.
En hier gaan we.
>> Dus dit is eigenlijk alleen een webservice die laat zien
welke container het wordt geserveerd vanaf.
Zodat u kunt zien dat het is vanaf container a9f.
En hier is het naam van de houder.
Dus jullie zien hoe snel het was eigenlijk niet alleen te trekken, maar ook
deze container zetten.
>> Nu is de volgende stap het kijk in Dockerfiles
en hoe kunnen we eigenlijk bouwen van nieuwe beelden.
Ik ga gewoon te gaan halen kloon, een monster Dockerfile op basis van de eerdere
diagram, de een om Apache en PHP.
Hopelijk Ik herinner me mijn repo.
>> Dus heb ik mijn repository nu.
En je gaat zien dit veel eigenlijk.
Ik heb geen boom te installeren.
>> Dus eigenlijk je gaat om te zien hoe uw broncode documentatie rond
, en dan een Dockerfile op hoe je nu eigenlijk verpakken het.
Dus het is slechts een voorbeeld PHP die echo hallo CS50.
>> Dus als ik wil om het uit te voeren, Ik zal havenarbeider build doen.
Ik moet het eerst bouwen.
Ik ga om het te noemen demo_cs50.
En je een tag moet het ook.
Dus laten we noemen het v1 stip.
Dus zoals ik al eerder beschreven, wat ik vandaag doe
is Ik zeg Docker om gebruik te gaan dat-- eigenlijk, sorry, mijn slecht.
We hebben niet een kijkje te nemen het Dockerfile zelf.
Dus de enige dingen zijn hier index.php evenals de readme-bestand
en een Dockerfile.
>> Dus als je een kijkje nemen op de Dockerfile, dus het is
vergelijkbaar met wat Ik eerder beschreef.
Het is gewoon een stelletje stappen die Docker uitvoert
door het creëren en het neerhalen van containers en [? ze te tellen?] in een beeld.
>> En eigenlijk kun je see-- [onverstaanbaar] Het hier--
maar dit is van de lokale repo.
Het gaat om te gaan en pak index.php.
Dus dat is de enige broncode die zijn eigenlijk een deel van uw aanvraag.
Dit alles is in principe besturingssysteem sanitair,
verkrijgen van de juiste pakketten en Apache en PHP, en wat al niet.
Maar dit is eigenlijk het nemen van index.php en het plegen van het in de container,
in het beeld.
>> Dus als u doorgaat en voer de commando door het doen van de volgende,
het is going-- eigenlijk, dit misschien een beetje te nemen.
Hopelijk is het niet te lang duren.
Zodat u de stappen zien.
En ik moedig u te gaan terug naar huis vandaag en probeer het.
En Mano beschrijft hoe precies je dat doet.
Maar het is echt geweldig om precies te zien wat er gebeurt achter de schermen.
Maar het is belachelijk makkelijk te bouwen afbeeldingen en implementeren ze met behulp van Docker.
>> Het nemen van een beetje langer dan ik had verwacht.
>> Laten we eens kijken wat er gebeurt als u-- koelen.
Dus zoals je kunt zien, elk van die stappen vertegenwoordigen lijnen in de Dockerfile.
En het laat zien dat het hier succes bouwde dit beeld.
>> Dus als ik dat doe dokwerker beelden, ga ik bekijk alle foto's die ik heb lokaal.
En een van hen wordt belde mijn gebruikersnaam en de naam van de afbeelding,
en de tag representing-- vooral het is een versie tag.
>> Dus nu als ik wil lopen het, ik doe havenarbeider run.
En ik wil gewoon een -d -P doen. Do v1.
Dus ik kan nu zien dat ik twee containers loopt, degene die ik net
gemaakt en de hello Havenarbeider die ik kreeg laatst.
>> En je kunt hier zien dat het toegewezen het een andere poort.
Dus als ik naar het zelfde IP maar toewijzen een andere port-- hopelijk heb ik niet.
Dus nu is dit applicatie dat ik net ingezet.
>> Als ik wil om veranderingen te maken, I kan snel de broncode bewerken
en doe het volgende.
Laten we gedag Harvard.
Dus nu wat er gebeurt te gebeuren is dat ik ben
ga het taggen met een verschillende version-- oh,
dit niet guy-- te taggen een andere versie.
En je gaat see-- doen jullie verwacht
aan dezelfde hoeveelheid tijd om het bouwen van een tweede tijd of niet?
Oké, en iedereen weet waarom?
Spreken.
>> PUBLIEK: [onverstaanbaar]
>> NICOLA Kabar: Het is eigenlijk dat we wijzigen alleen één van de latere stappen.
En daarom gaat het gebruiken cache en gebruik elk van deze lagen.
En dat is echt een deel van de killer features van Docker
is hoe het eigenlijk gebruik en hergebruik overnemen
schijf voor dezelfde exacte stukjes informatie.
>> Dus als we hetzelfde doen, het duurde slechts een paar seconden.
Willen we dus nu redeploy-- Ik heb drie containers.
Maar deze wordt geserveerd op the-- zeven één.
Dus nu is het de derde container.
Iedereen begrijpt wat ik deed hier gewoon?
>> Dus nu als u dit wilt delen container echt snel met je vrienden,
je kan het gewoon doen dokwerker druk op de Naam van de container, hopelijk.
Dus nu het gaat om het duwen to-- Ik ben niet hier ondertekend.
Sorry daarvoor.
Maar ik ben niet van plan op te lossen dit nu.
Maar in feite dat één opdracht is gewoon omhoog duwen.
En je zult in staat zijn om zie het als je naar Docker Hub
En u inlogt, je bent zal in staat zijn om het te zien.
En dan kun je gewoon wijzen wie gaat
dat beeld gebruiken om te gaan en trek.
En ze kunnen gebruiken.
>> Met dat, hopelijk Ik soort aangetoond
hoe gemakkelijk het is om te werken met Docker.
En ik ga gewoon geef het terug naar Mano.
En hij gaat nemen van hier.
>> MANO MERKEN: Oke dank, dank Nico.
Dus?
Dus een van de dingen die ik wilde doen is samen te stellen
waarom is dit een important-- waarom Docker en waarom
containers dergelijke belangrijke nieuwe ontwikkeling,
een nieuwe manier van software daadwerkelijk te doen.
>> En voordat ik dat doe, ik ga slechts introduceren een paar statistieken.
Ik ben niet van plan om al deze te lezen.
Maar dit toont u veel over hoe populair is in de gemeenschap.
De kern Docker technologieën zijn open source.
Dus dat is Docker Motor, Compose, Swarm, een heleboel andere dingen
is allemaal open source.
En we hebben, wat ik deed zeggen, 1300 medewerkers.
Je bent nu zien, als je kijkt naar de aantal vacatures, de laatste keer
we keken, was het ongeveer 43.000 baan openingen specifiek vermelden
vertrouwdheid met Docker.
Honderden miljoenen beelden hebben gedownload van Docker Hub.
En, nou ja, veel meer grote statistieken.
>> Voor degenen die nieuwsgierig zijn, is het werd oorspronkelijk geschreven in Python
en vervolgens herschreven in Go.
En het is nog maar Open source-- het is slechts
vrijgegeven ongeveer 2 en 1/2 jaar, hetgeen betekent dat bij 2 en 1/2 jaar,
We hebben een enorme hoeveelheid gezien groei en betekenis
van deze in de gemeenschap.
En dus ik wil praten een beetje over waarom.
>> Dus gewoon om een ​​aantal van herhalen Nico's belangrijke punten, Docker is snel.
Het is draagbaar.
Het is reproduceerbaar.
En het wordt een standaard omgeving.
>> En what-- dit is mijn crappy roeien monolieten slide-- wat
het is het helpen van mensen te doen, die veel van de software-industrie
begon te doen in de vroege jaren 2000, beweegt
Uit deze monolithische enkele toepassingen
waar elke afhankelijkheid moest getest voordat het gehele app had
worden ingezet, waarbij zou een website betekenen
werd slechts een keer ingezet elke drie maanden of meer,
een veel dienst oriented architecture
of componenten gebaseerde ander type van applicatie-architectuur.
En zo mogelijk deze soort architecturen
die profiteren van Docker te draaien in deze drie
belangrijkste gebieden van ontwikkeling, die is de ontwikkeling van het schrijven van uw eigenlijke code,
het testen van uw code, en het inzetten van het.
>> Dus waarom is dit belangrijk?
Als je a-- Laat me een voorbeeld geven.
Als u een website apparaat ontwikkelaar, je bent
het ontwikkelen van een website die is gebaseerd op de database die David geproduceerd hier.
Sorry David, ik u roepen.
Als je wilde implementeren de hele zaak, zou je
wachten onder een traditionele monolithische software-ontwikkeling
milieu, zou je moeten wachten totdat hij werd gedaan met de database
voordat u daadwerkelijk kon maken eventuele wijzigingen in uw website.
Je zou hebben om het te herschikken gehele applicatie te doen.
>> En wat Docker helpt je doet is elke persoon werk over verschillende onderdelen
en ze werken als ze gaan, alleen het maken van zorgen dat de interfaces blijven hetzelfde.
Dus wat zij heeft gedaan is het is verschoven mensen
van het doen van deze enorme monolithische architected software die
ingezet maandelijks een continue integratie en de continue ontwikkeling
milieu.
>> Nu is dit niet uniek voor Docker, maar Docker maakt het zo veel makkelijker,
wat betekent dat je in principe bent voortdurend de inzet.
We praten met bedrijven die de inzet van publiek gerichte toepassingen
duizenden keren per dag omdat ze zien de waarde in alleen het maken van
kleine veranderingen, en zolang als het door de proeven uitgevoerd,
laten gaan in productie.
Nico was altijd me vertellen eerder dat in veel omgevingen,
de standaard levenscyclus van een container wordt gemeten in seconden,
terwijl een virtuele machine kan worden gemeten in maanden.
>> Ik wilde een lichte nemen draai hier omdat ik ben
bij een onderwijsinstelling.
Ik wilde een voorbeeld van hoe te geven dit werkt in een onderwijsonderzoek
situatie.
Dus er is een organisatie genaamd bioboxen.
Bioboxen doet DNA- analyse voor onderzoekers.
>> Nu, wat ze vonden was dat wanneer een researcher-- en dit is niet
de schuld van een bepaalde researcher-- maar wanneer
onderzoeker ingezet een algoritme te analyseren,
Op een bepaalde manier een DNA monster zouden ze de software te schrijven,
publiceren die, misschien aan GitHub of ergens anders,
en daarna werden ze gedaan.
>> Wel, het probleem was dat het niet noodzakelijkerwijs reproduceerbaar.
Want om begrijpen van de software,
ze zouden worden opgezet voor de exacte ontwikkelomgeving
dat onderzoeker gebruikt, meestal hun laptop of een server, of een data-
centreren, dat ze gebruikten.
En dus was het erg moeilijk onderzoeksresultaten wanneer reproduceren
het analyseren van DNA-monsters om te kijken naar zaken als incidence--
vergelijken incidentie van hartaanvallen op basis van bepaalde genen aanwezig,
bijvoorbeeld of kankerrisico of een van de andere soort dingen.
>> Dus wat ze deden in plaats was ze begonnen met het maken van containers.
En je kunt naar bioboxes.org, het is een geweldige organisatie.
En wat ze doen is ze produceren containers op basis van onderzoek.
En dan wanneer iemand stuurt in hun steekproef, kunnen ze het uit te voeren.
En het heeft alle milieu nodig dat algoritme werking
en produceren van de resultaten.
En ze vinden dat ze veel waarschijnlijker en nog
sneller kunnen resultaten om mensen terug te keren.
>> En in feite, wat mensen doen draaien hun eigen analyse van DNA,
verzenden die op bioboxen en dan Biobox duurt slechts de gegevens,
beheert tegen het ras verschillende containers
tot verschillende resultaten zien op basis van verschillende onderzoeken.
Dus het is een zeer krachtige manier waarop onderzoekers
kan een enkele instantie die het mogelijk maakt te maken andere mensen om te proberen en te reproduceren
de resultaten.
>> Dus hoe ga je aan de slag?
We zijn goed ondersteund op Linux.
Dus als je wilt installeren iets op Linux,
u uw standaard gebruiken package manager te installeren.
Als u een Debian, het is apt get.
CentOS is yum.
Fedora Red Hat is rpm-- Ik weet het niet meer.
Hoe dan ook, het is er allemaal.
We ondersteunen een grote verscheidenheid Linux-distributies.
U kunt controleren deze out.
>> We hebben ook opties, zodat u kan draaien op Mac of Windows.
Nu Nico eerder vermeld dat het werd alleen ondersteund op Linux.
Dat is waar, omdat het heeft een Linux kernel.
Maar, kun je draaien in een virtuele machine.
En wat de Docker Toolbox doet, die u kunt downloaden,
het geeft je dat de virtuele machine.
>> Dus gewoon een snelle 48 tweede, denk ik, te downloaden.
Je zoekt gewoon op Docker Toolbox, downloaden naar de Mac
en dit deel is Natuurlijk versneld omdat die
wil een download signaal kijken?
Standaard Mac-installatie, en dan ben je
gaan zien Jerome zette in zijn wachtwoord.
Dat is heel spannend.
En dan is het installeert een heleboel gereedschappen.
En in het bijzonder het zal Installeer een opdrachtregel.
En dan je kon zien Jerome testen van zijn beelden.
>> En vervolgens op basis van deze, u kunt dat YouTube te zien
denkt dat Nico is geïnteresseerd in Star Wars, The Jimmy Kimmel show
en ik denk dat Ellen.
Ik denk dat de laatste is een clip van een Ellen Show.
>> Dus Docker Toolbox komt wel met meer dan alleen Docker Machine.
Dus Docker Machine is het ding dat helpt
u het opzetten van een virtuele machine op uw Windows-
of Mac-- uw Windows doos of je Mac box-- en helpt u provisioning doen,
>> Maar het komt ook met Swarm en Compose,
die zijn ontworpen om u te helpen grote doen grootschalige implementaties van uw aanvraag.
Dus als je wilt beheren clusters knooppunten,
clusters van containers, opstellen en Zwerm zijn de manier om te gaan over.
>> En natuurlijk komt het met Docker Motor en Kitematic,
dat is deze desktop GUI.
Ik wil ook vermelden Docker Registry, die niet is opgenomen in de Toolbox,
maar het is een manier voor u om uw eigen lopen registers van Docker afbeeldingen zoals Docker
Hub, maar u kunt ook gewoon gebruik Docker Hub als een manier om dat te doen.
>> En, plot twist, je ziet Het lopen in een container.
En dat is hoe we de distributie van onze glijbanen.
Deze hele presentatie eigenlijk een HTML dia dek.
En het draait in een container, die je kunt krijgen by--
>> NICOLA Kabar: Ja, dus het is running full time op mijn Max.
En ik ben de presentatie van.
En je gewoon doen Docker na u Toolbox installeren.
Je kunt gewoon een run dokwerker en krijgen, en het gebruik van de dia's.
>> MANO markeert: En dat is het.
Dus danken wij u allen voor uw komst.
En we zijn blij om vragen te beantwoorden.
Ik had voordat iemand te noemen laat er T-shirts daar.
Sorry iedereen die is watching Deze op Livestream of video,
maar we hebben Docker T-shirts daar.
En we weten Docker studenten, en in mijn ervaring,
professoren ook, zoals gratis kleding.
>> Dus dank u allen voor coming out.
En volg ons op Twitter als je wilt of niet.
Kan me niet schelen.
Volg ook Docker op Twitter.
Dat is ook interessant.
En dan dat is het.
Docker.com.
Dank je.
>> [APPLAUS]