>> [MUSIK SPELA]
DAVID MALAN: Okej.
Tack så mycket för att ni kom.
Detta är CS50 seminarium om Docker, en teknik som vi själva och CS50
har börjat använda under en tid nu.
Så mitt namn är David Malan, jag undervisa Harvard inledning
till datalogi.
För ett antal år, Vi har gett studenter
nedladdningsbar klientsidan virtuella maskiner
där de gör sina problem uppsättningar.
Att vi nu har gått till ett moln miljö
som faktiskt använder denna teknik kallas Docker, så att alla de CS50
studenter har nu sin egna Docker behållare
att du snart kommer att få höra allt om.
>> Dessutom, på CS50 server sido kluster, under många år
vi använde Amazons Cloud server.
Vi körde individuell virtuella maskiner.
Även detta har vi börjat övergången till dessa saker som kallas Docker containrar
så att alla våra applikationer är nu perfekt isolerade från varandra.
Så för detta och mer, låt mig introducera våra vänner, Nico och Mano,
från Docker självt.
NICOLA Kabar: Tack, David.
Hej, alla.
Mitt namn är Nico och det är Mano.
Vi är från Docker.
Vi kommer att prata about-- ger er en introduktion till Docker,
och förhoppningsvis mot slutet av detta prat kan du inser
hur mycket du kan använda läkare oxalat din applikationsutveckling
och driftsättning.
>> Så vi kommer att börja verkliga snabb med lite bakgrundsinformation.
Beskriv vad Docker handlar om.
Hur fungerar det?
Hur är det arkitekten?
Jag kommer att göra några demos.
Och Mano kommer att bli beskriver hur kan du använda Docker
och ger dig konkreta åtgärder hur du kan komma igång.
>> Jag skulle uppskatta om ni kan hålla off för era frågor mot slutet.
På så sätt kan jag att ta upp dem frågor under presentationen.
Så vi lämnar lite tid i slutet för frågor.
>> Så bara riktigt snabbt, som har faktiskt någonsin arbetat på Docker,
som lekte med den?
Grymt bra.
Häftigt.
Bra.
Så jag kommer att börja med lite historia.
Så tillbaka i 90-talet och tidiga 2000-talet, i princip
som webbutvecklare, app-utvecklare, när de gick för att distribuera ett program
det var knuten till ren metall.
Det var en server.
Det var ett program.
>> Traditionellt, ett exempel skulle vara som en LAMP stack,
där du faktiskt tvungen att ta upp resurspool.
CPU, minne, disk, nätverk, installation operativsystem ovanpå det.
Om du tjänar något, om du faktiskt har webbserver,
du behöver något liknande Apache att tjäna det.
>> Om din ansökan behöver databas, backhand,
du skulle installera något som MySQL, och så vidare.
Och om du behöver körtiden, PHP: s och PHP Python arbete var där.
Och så att vi faktiskt var tvungna att vidta dessa åtgärder i syfte
att få din ansökan igång.
>> Om du behöver mer datorkraft, du i princip tvungen att ringa din Ops kille
eller gal att gå och rack upp en ny maskinvara, anslut den,
och du måste upprepa de processer om och om igen.
Så denna process var relativt dyra.
Var definitivt mycket långsam.
>> Det var ineffektivt.
Och i många fall, din hårdvara var underutnyttjad.
Så, i slutet av 90-talet och början av 2000-talet, virtualisering hårdvara kom över.
Och som ni kan se här i bild, i princip vad de gjorde
abstraheras den pool av frigöra resurser hårdvara
och typ av tjänade de till de övre skikten,
i detta fall, en gäst-operativsystem.
>> Och hela idén med virtuella maskiner kom över
och som verkligen hjälpte Cloud computing som vi känner den idag.
Så vad det innebar är du kan köra flera virtuella maskiner, som
innebar flera staplar, multipel program på en samma fysiska maskin.
>> Detta definitivt hjälpt till med hastighet av programdistribution.
Definitivt med kostnader.
Du behöver inte gå och spendera energi, tid och resurser för att rack
fler servrar för att komma till mer compute.
Och hastigheten faktiskt föra de resurser upp är mycket snabbare.
Bra.
>> Så vi löst världssvälten, eller hur?
Nej inte direkt.
Så, virtualisering så mycket som det är faktiskt hjälpt, ta itu med problemet,
det faktiskt införes en hel del utmaningar.
Den hypervisor definitivt infört en hel del komplexitet,
hantering de underliggande pool av resurser.
>> Det är tyngre i den meningen att före du hade ett enda operativsystem som
är som tre, fyra gig på disk.
Nu, om du har 10 maskiner på en enda hårdvara
du måste multiplicera med antalet maskiner.
Det är definitivt mer dyrt i en mening du fortfarande
måste få licensiering för virtualiseringsteknik
om det inte är öppen källkod.
>> Men låt oss inte ta alla kredit från virtualisering.
Eftersom vad som hände är att det finns en Många stackar och massor av programvara
teknik som möjlig av hur snabbt du skulle kunna få
till resurser med molnet bommen.
>> Så, idag en enda app eller tjänst kan att använda någon av följande drifttider
eller databaser.
PHP, Python, MySQL, Redis, allt.
Så det finns en hel del komplexitet på detta Antalet staplar att faktiskt ta upp
en enda tjänst.
Och tillsammans med det, du hade en hel del underliggande resurser eller infrastruktur
typer att testa distribuera och i princip ta till produktion dessa program
att du utvecklar.
>> Särskilt som ditt team har vuxit arbetar på dessa program,
det finns en hel del komplexitet och utmaningar
som fördes för att säkerställa att den cycle-- princip ansökan
utvecklingscykel, är faktiskt framgångsrik.
Så det faktum att din ansökan arbetar lokalt på din lokala VM
garanterar inte att din kollega kommer att förvänta sig samma resultat.
>> Och när verksamheten laget är involverad i att ta vad du har
och distribuera den i produktion skala, också det finns ingen garanti
att det faktiskt kommer att hända.
Så detta lämnar oss med en riktigt big-- en hel del frågetecken,
en hel del utmaningar faktiskt inför liknande förr i tiden.
Och det påminde oss om sjöfartsindustrin.
>> Så sjöfartsindustrin hade en hel del varor,
som ni kan se på vänster sida.
Och på höger sida, det finns en hel del, i princip,
sätt att transportera varorna.
Och vad som händer när ett par folks kom tillsammans och sade,
vi måste standardisera hur vi faktiskt skickar varorna.
Och bom, har du intermodala transportbehållare.
>> Så de kom överens om det mesta vanligaste storlekarna för behållaren.
Hur man hanterar dem.
Vad exakt metod du behöver att lasta dem och lossa dem.
Och därför, som verkligen hjälpte sjöfarten.
Nu mer än 90% fokus transporteras globalt använder dessa behållare.
Och som definitivt minskar kostnader samt
skador på grund av sjöfarten.
>> Så vi tar samma modell och vi tillämpa två applikationsutveckling programvara
arkitektur, i den meningen att containerisering
tog virtualisering upp en nivå.
Så istället för att göra det på hårdvaran nivå,
Det blev mer av ett operativsystem systemnivå virtualisering.
>> Och vi gör det genom att förse varje applikation i sin egen lätt,
isolerat, körbart, och bärbar, viktigast av allt,
ett sätt att faktiskt paketera allt som behövs för att köra.
Överallt kan köras.
Så, oavsett om du kör det på lokal dev miljö, din produktion
miljö, din iscensättning eller tester.
Oavsett vad som ligger bakom infrastrukturen är där,
du hade en fungerande arbets app.
>> Så det är precis vad som i grunden behållare gör på detta problem.
De åtgärda det genom förpackning det på ett sådant sätt
att det kan garantera att det är utplacerade framgångsrikt oavsett var den lever.
Så om du ska liknande, Bob det är fortfarande OK.
Om du är förvirrad med vad jag säger, Jag kommer att utarbeta på det.
>> Så hur Docker själv passa på den här bilden?
Så Docker är en öppen plattform enkelt, betonar lätt,
att bygga fartyg, springa, lätt portabel själv
tillräckliga app behållare någonstans.
Så om du tar något av detta prata, ta följande.
>> Om du har din app igång lokalt och du utvecklat det
i att använda Docker plattformen, förväntar det möjligt att framgångsrikt användas.
Oavsett vad är det underliggande infrastrukturen.
Så om du har en Docker behållare och det funkar, då
så länge som det finns en Docker motorn på den andra side--
Om operationen infrastruktur använder någon Cloud, oavsett om det
är AWS, eller Google eller Microsoft, eller någon av de offentliga moln,
eller din egen Cloud, eller din öppna stack Cloud, eller din närmiljö.
>> Om du har en motor kör, det betyder
det kommer att bli framgångsrikt utplacerade där.
Det kommer att vara igång exakt samma beteende
som ni arkitekten att det ska vara.
Så om vi tittar at-- jag går att gå igenom vad som faktiskt
är de viktigaste komponenterna i Docker.
>> Så Engine är kärnan i Docker.
Det är hjärnans.
Det orchestrates byggnad, sjöfart, och driftsätta och hantera
själva behållarna.
Jag ska gräva i vad Engine gör mer detaljerat i en sekund.
I grund och botten, eftersom läkare byggdes runt klientserverarkitekturer,
så för att interagera med Motor du behöver någon form av en klient.
>> Bilder är mallarna i vilka behållare byggs från.
Så bilderna är i grunden bara statiska filer.
Mallar och containrar är faktiskt vad är
körs vid körning som tjänar din ansökan
eller göra någonting med data.
>> Registret behandlas som ett problem hur du faktiskt distribuera bilder.
Så om du behöver för att dela en bild att du arbetat på din kollega
eller till den op laget, du använda den med registret.
Du kan ladda ner en öppen källkod version av den som Docker fungerade på
och öppna anskaffas.
>> Eller så kan du använda Docker hjälp, vilket är Cloud version
att driva och dra bilderna ute.
Det är en stor sak.
Eftersom det finns en enorm ekosystemet runt Docker och det är
verkligen tungt utnyttjar navet.
>> Så för att sammanfatta här, det är hur minimalistiska Docker arbetsflöde klient.
Du interagerar med värden i det här fallet är det de Docker demoner.
Det är samma sak som Engine.
Du gör kommandon som Docker bygga, dra, kör.
Och själva motorn går och gör dessa saker.
>> Så antingen det interagerar med Registret för att dra dessa bilder
och skikten av bilderna.
Oavsett om du vill distribuera, köra containrar, döda dem, kasta ner dem,
allt möjligt.
Så det här sammanfattar arbetsflödet av alla dessa komponenter.
>> Så om du tar varje komponenten av sig själv.
Så Motor, det är bara en demon.
Det kommer slags spela det för att stödja det på Linux eftersom det gör
kräver vissa Linuxkärnan funktioner.
Men Windows fungerar på att göra samma sak.
Det är tänkt att stödjas Windows Server 2016.
>> Så, återigen, ansvar med Motorn är att, eller till att bygga bilder.
Dra bilder från Docker Hub eller ditt eget kansli.
Om du är klar med dessa bilder eller om du skapar en ny bilder,
du kan driva dem tillbaka till registret att distribuera dem till andra lag.
>> Och försöker innehålla den lokalt och hantera containrar livscykeln
lokalt.
Den är byggd kring HTTP REST API.
Så tekniskt sett kan du skriva din egen klient
så länge som den använder HTTP, som är en mycket standard mekanism för att prata med motor
och en hel del andra tjänster.
Och du kan se från här att oavsett
av vad infrastrukturen är, så länge du can-- alla
du behöver är ett operativsystem systemet, Linux specifikt.
>> Och du kan installera Docker Engine ovanpå det och ha det igång
och det orchestrates, i princip, alla dessa appen en, två,
och tre är faktiska behållare.
Så det är Engine.
Som jag nämnde tidigare eftersom du behöver för att interagera med motor,
Det är kunden.
>> Men egentligen när du installerar Docker, det levereras med det.
Så det blir installerad, så det är en enda binär.
Och du kan göra lokalsamtal till Docker Engine.
Eller avlägsna samtal till fjärr motorer.
Det gör använder HTTP, som Jag nämnde tidigare.
Det finns ett GUI klient som heter Kitematic från Docker.
Och det finns definitivt en hel del andra människor
som bygger en hel del GUI som i stort sett genomför
vissa HTTP samtal att prata med Engine.
>> Bara några exempelkommandon.
Om du gör Docker version, skulle det visa klientversionen samt
serverversionen.
Om du gör Docker info det kommer berätta dig all information
om hur många behållare kör eller skapas, hur många bilder du har,
och så vidare och så vidare.
>> Här har jag, i näst sista rutan, jag har Doctor springa.
Så det är hur jag faktiskt skapa behållare.
Och jag ger det till echo Hello World och sova för en sekund och allt.
Och du kan se resultat. Så det är pågående.
Och liknande till Linux ps, kan du se alla processer och, i detta fall,
alla löpande behållare.
Den här är att hänvisa till behållaren Jag har nyss skapat.
>> Så, är detta verkligen viktigt eftersom, liknande, kan det vara lite förvirrande.
Så bilderna är skrivskyddad den samling filer, eller hur?
De är vad vår behållare är baserad på.
Men de är bara skrivskyddad.
Så du börjar med en bas bild.
Det tenderar att efterlikna OS-liknande, så Ubuntu CentOS, whatnot basbild.
Och sedan börja bygga ovanpå att vissa skikt, som kommer att göra upp
din slutbild, slutresultatet här.
>> Och vart och ett av dessa skikt bör ha en förälder bild
att det refererar till när det faktiskt vill skapa.
De är oföränderliga, i den meningen att skrivskyddad eftersom de är,
du kan faktiskt inte göra ändringar i dem.
Du kan använda dem för att skapa en container från en bild, som
kommer att kalla alla efterföljande nödvändiga bilder under den.
>> Du kan göra ändringar till ett annat lager,
Det är en omskrivning skikt jag ska tala om i en sekund.
Men var och en av dessa skikt aldrig ändras.
I grund och botten bilder använda något kallas Union File System, UFS.
Och det finns olika lagrings backends som utnyttjar denna teknik.
Och vad det betyder är att det sammanför olika filsystem
att få dem att se ut som en.
>> Så du kan faktiskt, från en ansökan perspektiv,
du har en topp av en vy som visar alla olika filsystem behövs
för det programmet för att köra.
Men de är faktiskt på detta, de är faktiskt i separata platser
och utnyttjas av andra behållare samt.
>> Så som ni kan se här att Om vi ​​börjar med demonen bild
som en bas image, och sedan Vi går in och lägg [? emacs?]
och då är det ett annat skikt.
Och sedan lägga till Apache.
Det är ett annat lager.
Och sedan vi tillbringar behållare från det.
Var och en av dessa bilder, vart och ett av dessa skikt,
är distinkt och kan vara återanvändas av andra behållare.
>> Om man tittar på behållare själva, de är något som VM-liknande,
men inte behandlas på samma gång.
Så, de har inte tekniskt, den fullständig operativsystem under dem.
De använder enda kärna av värdoperativsystemet.
Och de bygger på toppen av det.
De härmar hur de ser ut.
De härmar deras rot-fil system av operativsystemet.
Men de faktiskt inte replikerar.
>> Så, istället för att ha oföränderliga skikt, det sista lagret, som är behållaren
själv, det är en läs- och skrivskiktet.
Det driver också processerna av din ansökan.
Och det beror på de underliggande lagren.
Varje behållare är skapas från en bild.
Och den bilden kan vara en enda skikt eller flerskiktsbild.
>> Och jag vill att notera här att Docker tungt använder
eller bygger på copy-on-write mekanism.
Så att, faktiskt, om du inte är göra ändringar i behållaren,
det kommer inte att ta extra utrymme.
Så det är i princip hur du sammanfatta en copy-on-write.
Det kommer definitivt påskynda uppstart för behållaren.
För om du inte gör ändringar i behållaren,
det är att använda det som redan finns.
>> Så, hur det faktiskt fungerar.
En del av det är, just nu, är det utnyttjar minst två nyckel kärna
funktioner.
Och det är i princip vad skapat denna nivå av isolering
för själva behållarna.
Dessa funktioner är namn och cgroups.
Så namn är ett sätt att skapa isolerade resurser,
så att de inom själva behållaren, bara du kan se vissa resurser.
Såsom nätverksgränssnitt eller vissa användare eller whatnot.
>> Och de är bara synliga och endast tillgängliga i behållaren.
Cgroup på andra sidan gränserna hur du använder dessa resurser.
CPU, minne och disk.
När du kan gå in, jag menar de är faktiskt
funktioner som utvecklats by-- de är en del av Linux-kärnan.
Så de var inte återuppfunnit med eller återskapas av Docker.
Docker använder dem.
>> Vad Doctor verkligen här är faktiskt det
iscensatt skapa namnområden för varje behållare
och skapa cgroups så att det är löjligt enkelt att skapa behållare
med hjälp av dessa funktioner.
Naturligtvis, som jag beskrev tidigare, Union File System och copy-on-write riktigt
hjälpa hastigheten och skivan Återvinning av emballage.
>> Och när du får din händerna runt Docker,
du kommer att se hur snabbt det är att faktiskt snurra upp behållare och tår
ner dem.
Så, om du kan fråga, hur kan du faktiskt bygga bilder?
Vi bygger bilder genom en process som skapar containrar och göra förändringar, förändra
dem, och begå dem in i passande en bild.
>> Så det är en kyckling och ägg referens här,
eftersom alla behållarna kommer från bilder och bilder kommer
från begått behållare, för det mesta.
Det finns tre alternativ att skapa bilder.
Jag kommer att beskriva den första och sista.
Du kan antingen manuellt gå och kör behållaren
och göra dessa förändringar, som du skulle göra på en VM
eller alla operativsystem, t.ex. som att installera nya binärer,
sätta filsystem, och allt.
>> Och sedan du avslutar, som du kan se där uppe.
Jag lämnar min behållare.
Och då jag gör Docker begå.
Och jag begår det.
Du kan se att antalet här är bara en UUID, eller första 12
bitar av UUID.
Eller byte av UUID.
Och sedan jag kalla det min bild.
Så nu Docker tar hand om inspelning allt jag gjorde det
och skapa nya bild som bygger på det.
>> Jag tänker inte tala om tarball, men det finns ett sätt du kan få en enda,
skapa en enda, eller göra en enda lager bild med tarbollar.
Vad jag kommer att tala om detta och vad som används mest i dag,
är Dockerfile.
Som är tekniskt den första steg automatiseras av Docker självt.
Så Dockerfiles är saker som du är kommer att se i en massa github repor
i dag.
Det är i princip bara en textfil som beskriver
exakt hur man bygger en bild.
>> Och för varje rad, det faktiskt skapar behållaren, exekverar den linjen,
begår att behållaren in i en ny bild, och du, i princip,
använda den för alla efterföljande operationer tills du kommer till den sista bilden.
Som är i grunden avsluta målet här, i slutet.
Och när du exec-- efter skriv din Dockerfile, som
är enbart i text, gör du Docker bygga och namnet på bilden.
>> Och du pekar på att det är där Dockerfile är på.
Och du kan förvänta dig att se min bild som en bild som du har lokalt.
Så det är bara en visuell exempel på vad som händer.
Du börjar med en bas bild.
Du kör det i en behållare som ändrar inte basen själva bilden.
Men istället skapar en skriva skikt ovanpå det
där du gör ändringarna där du begår
och du upprepa processen tills du kommer till din slutliga bilden.
>> Och genom att göra så, varannan build process kan använda samma skikt
och same-- princip Docker cacher dessa skikt.
Så att om jag gör exakt samma process, men istället för att installera PHP,
Jag installera Python.
Det kommer att använda Apache och Ubuntu.
Så på det sättet som du använder din disk.
Det utnyttjar cachen och tillgängliga bilder där.
>> Den sista pusselbiten är Registry, som är hur du distribuerar dina bilder.
Och, som jag nämnde tidigare, det finns ett moln version av den,
vilket är Docker Hub.
Du kan gå och utforska en massa, i princip
Det är en offentlig SAS produkt som du kan fortfarande ha privata bilder,
men det finns en hel del offentliga bilder.
Det är faktiskt obegränsad, du kan skjuta obegränsat offentliga bilder där.
Och det är hur du kan samarbeta med ditt team.
>> Du kan bara peka dem på dig repa och de kan ladda ner det eller din bild
och de kan ladda ner det.
Så nog med prat.
Vem vill se några demos riktigt snabbt?
Okej.
Så här har jag.
Ca ni se min skärm?
Okej.
>> Så jag har Docker kör här, så jag kan kontrollera it's-- Detta är version
av Docker som kör.
Kan göra Docker info.
Kontrollera all information om hur många bilder som de har, och så vidare och så vidare.
Docker PS, det finns inget rinnande.
Sammanlänkade dessa.
>> Så det första jag vill göra är att visa dig hur du enkelt kan köra en behållare.
Så skönheten om Läkare kör, om det faktiskt
inte hitta en bild lokalt, som standard talar till Doctor Hub
och försöker hitta den där och nedladdningar det åt dig.
Så det innefattar en Docker Dra kommandot, naturligtvis.
>> Så om jag gör en Docker springa, hello-värld.
Så, först det kommer att försöka lokalisera den.
Annars, som ni kan se här, Det gick inte att hitta den lokalt.
Just nu är det bara drog två skikt som gjorde den bilden och jag sprang det.
Hello-världen är bara grunden utgångar, vad du har gjort.
Så det här är det enklaste, en de enklaste exemplen.
Så egentligen jag bara sprang och avslutade behållaren riktigt snabbt.
>> Om jag vill run-- och förresten, om Jag vill tid att bara så ni vet,
detta är hur lång tid det tar att faktiskt snurra upp och innehålla det.
Vi mäter det i millisekunder.
Så du kan se hur mycket detta kan faktiskt hjälpa dig inte bara i att testa,
men också med distribution.
Så det är en snabb anteckning om detta.
Nästa sak jag kommer att göra är faktiskt
köra en bild jag har redan förberett.
Så Docker körning.
-d är bara en flagga för att berätta den att köra i bakgrunden.
Och p tilldelar vissa hamnar.
På grund av standard behållare är isolerade,
så du måste ange exakt hur det kan komma åt dem.
Och i det här fallet, säger jag Docker att mappa en slumpmässig porten på värd
till en viss hamn i själva behållaren.
Och det är i grund och botten där image-- förhoppningsvis detta är den rätta.
>> Så det gör parallella nedladdningar vardera av dessa lager som ni kan se här.
De är av skikten göra slut bilden som jag byggt.
Det kommer att ta en sekund.
Och voila.
>> Så nu om jag gör en hamnarbetare ps, skulle jag ser något som är igång.
Jag skulle se ID, bilden att det baserades bort,
och kommandot som utfördes.
Och hur man kan få det är i princip du gå till den porten.
Så jag kommer att gå att-- detta är jag kör den på AWS.
Jag kommer att gå till 32769.
Hoppsan.
Och nu kör vi.
>> Så det här är faktiskt bara en webbtjänst som visar
vilken behållare det som serveras från.
Så du kan se att det är från container a9f.
Och här är det namn på behållaren.
Så ni kan se hur snabbt det var faktiskt inte bara dra utan också
distribuera denna behållare.
>> Nu är nästa steg att undersöka Dockerfiles
och hur vi kan faktiskt bygga nya bilder.
Jag kommer bara att gå och hämta klon, en smaka på Dockerfile baserat på den tidigare
diagram, den som Apache och PHP.
Förhoppningsvis Jag minns min repa.
>> Så jag har min förvaret just nu.
Och du kommer att se detta mycket faktiskt.
Jag har inte installerat träd.
>> Så i princip du kommer att se hur din källkod dokumentation runt
det, och sedan en Dockerfile på hur man faktiskt paketera det.
Så det är bara ett urval PHP som ekar hej CS50.
>> Så om jag vill köra den, Jag ska göra docker bygga.
Jag måste bygga upp det först.
Jag kommer att kalla den demo_cs50.
Och du behöver en tagg i det också.
Så låt oss kalla det v1 prick.
Så som jag beskrev tidigare, vad jag gör i dag
är Jag säger Docker gå användningen that-- faktiskt, förlåt, min dåliga.
Vi ville inte ta en titt vid Dockerfile själv.
Så det enda i här är index.php liksom Readme-filen
och en Dockerfile.
>> Så om du tar en titt på den Dockerfile, så det är
mycket liknar vad Jag beskrev tidigare.
Det är bara ett gäng steg som Docker exekverar
genom att skapa och riva ner behållare och [? räkna?] dem till en bild.
>> Och i princip kan du see-- [OHÖRBAR] det här--
men detta är från den lokala repa.
Det kommer att gå och greppa index.php.
Så det är den enda källkod som är faktiskt en del av din ansökan.
Allt detta är i grunden operativsystem VVS,
få rätt paket och Apache och PHP, och allt.
Men detta är faktiskt tar index.php och begår den in i behållaren,
in i bilden.
>> Så om du går vidare och köra kommandot genom att göra följande,
det going-- faktiskt, Detta kan ta en bit.
Förhoppningsvis kommer det inte tar alltför lång tid.
Så du kan se stegen.
Och jag uppmuntrar dig att gå tillbaka hem idag och prova det.
Och Mano kommer att beskriva exakt hur du gör det.
Men det är riktigt bra att se exakt vad som händer bakom kulisserna.
Men det är löjligt enkelt att bygga bilder och distribuera dem med Docker.
>> Det tar en bit längre än förväntat.
>> Låt oss se vad som händer när du-- svalna.
Så som ni kan se, vart och ett av dessa steg representerar linjer i Dockerfile.
Och det visar här att det framgångsrikt byggt den här bilden.
>> Så om jag gör docker bilder, kommer jag att se alla bilder som jag har lokalt.
Och en av dem kallas min användarnamn och namnet på bilden,
och märket representing-- främst är det en version tag.
>> Så nu om jag vill köra det, jag gör docker körning.
Och jag vill bara göra en -d -P. Gör v1.
Så jag kan se nu när jag har två behållare kör, det som jag bara
skapas och hej Docker en som jag fick sist.
>> Och du kan se här att det tilldelats en annan port.
Så om jag går till samma IP men tilldela den en annan port-- förhoppningsvis jag inte.
Så nu är detta program att jag bara sättas in.
>> Om jag vill göra ändringar, jag kan snabbt ändra källkoden
och gör följande.
Låt oss göra hello Harvard.
Så nu vad som händer hända är att jag är
kommer att märka det med en olika version-- oh,
inte detta guy-- märka det med en annan version.
Och du kommer att see-- gör ni förväntar
den för att ta samma tid att bygga det en andra gång eller inte?
Okej, och alla vet varför?
Tala högre.
>> PUBLIK: [OHÖRBAR]
>> NICOLA Kabar: Det är i princip vi bara ändra en av de senare stegen.
Och därför kommer att använda cache och använda vart och ett av dessa skikt.
Och det är verkligen en del av killer funktioner i Docker
är hur det faktiskt utnyttjar och återanvändningar tar över
din disk för samma exakta bitar av information.
>> Så om vi gör samma sak, Det tog bara ett par sekunder.
Om vi ​​vill redeploy-- så nu Jag bör ha tre containrar.
Men detta är att serveras på the-- sju en.
Så nu är det den tredje behållaren.
Alla förstår vad jag gjorde just här?
>> Så nu om du vill dela denna behållare riktigt snabbt med dina vänner,
Du kan bara göra docker skjuta namn på behållaren, förhoppningsvis.
Så nu det kommer att driva det att-- Jag är inte loggat in här.
Förlåt för det.
Men jag tänker inte felsöka nu.
Men i princip att ett kommando är bara att gå upp driva det.
Och du kommer att kunna se det om du går till Docker Hub
Och du loggar in, är du kommer att kunna se den.
Och då kan du bara peka vem går
att använda den bilden för att gå och dra.
Och de kan använda den.
>> Med detta, förhoppningsvis Jag slags visat
hur lätt det är att arbeta med Docker.
Och jag ska bara ge tillbaka till Mano.
Och han ska ta det från här.
>> MANO MARKS: Okej tack, tack Nico.
Än sen då?
Så en av de saker jag ville göra är att sätta ihop
varför detta är ett important-- varför Docker och varför
behållare är sådan viktig nyhet,
ett nytt sätt att faktiskt göra programvara.
>> Och innan jag gör, jag kommer att bara införa några statistik.
Jag tänker inte läsa alla dessa.
Men detta visar dig en hel del om hur populärt det är i samhället.
Kärnan Docker teknik är öppen källkod.
Så det är Docker Engine, komponera, Swarm, en massa andra grejer
är all öppen källkod.
Och vi har, vad gjorde jag säga 1.300 deltagare.
Du ser nu, om man tittar på Antalet lediga jobb, sista gången
vi såg, det var ungefär 43.000 jobb öppningar särskilt nämna
förtrogenhet med Docker.
Hundratals miljoner bilder har laddats ner från Docker Hub.
Och, ja, mycket mer stora statistik.
>> För den som är nyfiken, det skrevs ursprungligen på Python
och sedan skrivas in Go.
Och det har bara varit öppna source-- det är bara
gått till cirka 2 och 1/2 år, vilket innebär att i 2 och 1/2 år,
Vi har sett en enorm mängd av tillväxt och betydelse
detta i samhället.
Och så vill jag prata lite om varför.
>> Så bara för att upprepa några av Nico viktigaste punkter är Docker snabbt.
Det är bärbar.
Det är reproducerbar.
Och det sätter upp en standardmiljö.
>> Och Vad-- detta är min skit utrota monoliterna slide-- vad
det är att hjälpa människor att göra, som en hel del av mjukvaruindustrin
började göra i tidiga 2000-talet, går
från dessa monolitiska enkla applikationer
där varje beroendet måste vara testas innan hela programmet hade
att sättas in, vilket skulle kunna innebära en webbplats
endast fick utplacerade gång var tredje månad, eller mer,
till en mycket mer service orienterad arkitektur
eller componentized olika typ av applikationsarkitektur.
Och så tillåter dessa typ av arkitekturer
att dra nytta av Docker att köra i dessa tre
huvudsakliga utvecklingsområden, som är utveckling skriver faktiska koden,
testa din kod, och distribuera den.
>> Så varför är detta viktigt?
Om du är en-- Låt mig ge ett exempel.
Om du är en webbplats enhet utvecklare, du är
utveckla en webbplats som är baserat på databas som David producerade hit.
Ledsen David, jag ringer dig.
Om du vill distribuera det hela, skulle du
måste vänta enligt en traditionell monolitisk mjukvaruutveckling
miljö, skulle du behöva vänta tills han var klar med databasen
innan du kunde faktiskt göra eventuella ändringar på din webbplats.
Du skulle behöva omfördela de hela programmet för att göra det.
>> Och vad Docker hjälper dig att göra varje personen arbete med olika komponenter
och uppdatera dem eftersom de går bara att göra Kontrollera att gränssnitten förblir detsamma.
Så vad den har gjort är det skiftat folk
från att göra dessa massiva monolitiska arkitekten mjukvara som
utplacerade varje månad till en kontinuerlig integration och kontinuerlig utveckling
miljö.
>> Nu är detta inte unikt för Docker, men Docker gör det så mycket lättare,
vilket innebär att du är i grund och botten ständigt distribuera.
Vi pratar med företag som är driftsätta applikationer offentliga fasad
tusentals gånger om dagen eftersom de ser värdet i att bara göra
små förändringar, och så länge eftersom det går genom tester,
låter det gå ut i produktion.
Nico var alltid talar om för mig tidigare att i många miljöer,
standard livscykel behållaren mäts i sekunder,
medan en virtuell maskin kan mätas i månader.
>> Jag ville ta en liten sväng här eftersom jag är
vid en läroanstalt.
Jag ville ge ett exempel på hur detta fungerar i en pedagogisk forskning
situation.
Så det finns en organisation kallade bioboxes.
Bioboxes gör DNA analys för forskare.
>> Nu vad de fann var att när en researcher-- och detta är inte
fel av någon särskild researcher-- men när
en forskare utplacerade en algoritm för att analysera,
På ett särskilt sätt, ett DNA-prov, de skulle skriva mjukvaran,
offentliggöra detta, kanske till GitHub eller någon annanstans,
och sedan de gjordes.
>> Väl problemet var att det var inte nödvändigtvis reproducerbar.
Eftersom de för att förstå programvaran,
de skulle ställas upp för exakta utvecklingsmiljö
att denna forskare används, vanligtvis sin bärbara dator eller en server, eller en data
centrum att de använde.
Och därför var det mycket svårt att reproducera forskningsresultaten när
analysera DNA-prov för att se på saker som incidence--
jämföra förekomsten av hjärtinfarkt baserat på vissa gener är närvarande,
till exempel, eller cancerrisken, eller någon av de andra typer av saker.
>> Så vad de gjorde i stället var de började skapa behållare.
Och du kan gå till bioboxes.org, det är en stor organisation.
Och vad de gör är att de producerar behållare baserat på forskning.
Och sedan när någon skickar i deras urval, kan de köra den.
Och det har allt miljön behövs för att köra den algoritmen
och de resultat.
Och de fann att de är mycket mer sannolikt och mycket
snabbare kunna ger resultat för människor.
>> Och i själva verket är vad folk gör kör sin egen analys av DNA,
skicka det i till bioboxes, och sedan Biobox tar bara data,
körs mot sorten av olika behållare
att se olika resultat baserat på olika forskning.
Så det är en mycket kraftfull sätt på vilket forskare
kan göra en enda instans som gör andra människor för att försöka återskapa
resultaten.
>> Så hur kommer du igång?
Vi är väl stöds på Linux.
Så om du vill installera något på Linux,
du använder din vanliga pakethanterare att installera.
Om du använder en Debian, är det apt get.
CentOS är yum.
Fedora Red Hat är rpm-- Jag minns inte.
Hur som helst, det är allt.
Vi stöder ett stort utbud av Linux-distributioner.
Du kan kontrollera dem ut.
>> Vi har också alternativ så att du kan köras på Mac eller Windows.
Nu Nico nämnde tidigare att det var bara stöds på Linux.
Det är sant, eftersom det behöver en Linux-kärna.
Men kan du köra i en virtuell maskin.
Och vad Docker Toolbox gör, som du kan ladda ner,
Det ger dig den virtuella maskinen.
>> Så bara en snabb 48 andra, tror jag, ladda ner.
Du söker bara på Docker Verktygslåda, ladda ner den till Mac,
och denna del är av Kursen rusade upp för vem
vill titta på en nedladdningssignal?
Standard Mac installation, och då är du
kommer att se Jerome sätta i sitt lösenord.
Det är väldigt spännande.
Och sedan installerar en massa verktyg.
Och i synnerhet kommer det installera en kommandorad.
Och då kan du se Jerome testar sina bilder.
>> Och sedan utifrån detta, du kan se att YouTube
anser att Nico är intresserad av Star Wars, Jimmy Kimmel show,
och jag tror att Ellen.
Jag tror att sista är ett klipp från ett Ellen show.
>> Så Docker Toolbox men kommer med mer än bara Docker Machine.
Så Docker Machine är det som hjälper
du ställa in en virtuell maskin på din Windows
eller Mac-- Windows box eller din Mac box-- och hjälper dig att göra provisionering,
>> Men det kommer också med Swarm och komponera,
som är utformade för att hjälpa dig att göra stora skala installationer av din ansökan.
Så om du vill hantera kluster av noder,
kluster av containrar, komponera och Swarm är rätt väg att gå om det.
>> Och naturligtvis det kommer med Docker Motor och Kitematic,
vilket är denna skrivbords GUI.
Jag bör också nämna Docker kansli, som inte ingår i verktygslådan,
men det är ett sätt för dig att köra din egen register av Docker bilder som Docker
Hub, men du kan också använda Docker Hub som ett sätt att göra det.
>> Och tomten twist, du ser den körs i en behållare.
Och det är hur vi är distribuera våra diabilder.
Hela denna presentation är faktiskt en HTML slide däck.
Och den körs i en behållare, som du kan få by--
>> NICOLA Kabar: Ja, så det är kör på heltid på min Max.
Och jag presenterar därifrån.
Och du bara göra Docker efter du har installerat Toolbox.
Du kan bara göra en hamnarbetare körning och få det, och använda bilderna.
>> MANO MARKS: Och det är det.
Så vi tackar er alla för att ni kom.
Och vi är glada att svara på frågor.
Jag bör nämna innan någon lämnar det finns T-shirts där borta.
Tyvärr någon som tittar detta på Livestream eller video,
men vi har Docker T-shirts där borta.
Och vi vet Docker studenter, och enligt min erfarenhet,
professorer också, liksom gratis kläder.
>> Så tack alla för att ni kom ut.
Och följ oss på Twitter om du vill, eller inte.
Jag bryr mig inte.
Följ också Docker på Twitter.
Det är också intressant.
Och då är det.
Docker.com.
Tack.
>> [APPLÅDER]