1 00:00:00,000 --> 00:00:05,042 >> [Musik spiller] 2 00:00:05,042 --> 00:00:06,000 DAVID MALAN: Okay. 3 00:00:06,000 --> 00:00:07,630 Tak så meget for at komme. 4 00:00:07,630 --> 00:00:11,850 Dette er CS50 seminar om Docker, en teknologi, som vi selv og CS50 5 00:00:11,850 --> 00:00:13,392 er begyndt at bruge i et stykke tid nu. 6 00:00:13,392 --> 00:00:15,766 Så mit navn er David Malan, jeg undervise Harvards Introduktion 7 00:00:15,766 --> 00:00:16,671 til datalogi. 8 00:00:16,671 --> 00:00:18,670 For en hel del år, Vi har været at give de studerende 9 00:00:18,670 --> 00:00:20,435 downloades klientsiden virtuelle maskiner 10 00:00:20,435 --> 00:00:22,134 som de gør deres problemer sæt. 11 00:00:22,134 --> 00:00:24,300 At vi nu har skiftet til en Cloud miljø 12 00:00:24,300 --> 00:00:27,396 der faktisk anvender denne teknologi kaldes Docker, således at alle de CS50 13 00:00:27,396 --> 00:00:29,270 studerende har nu deres egne Docker containere 14 00:00:29,270 --> 00:00:31,180 at du snart vil høre om. 15 00:00:31,180 --> 00:00:33,740 >> Desuden er der på CS50 server side klynge, i mange år 16 00:00:33,740 --> 00:00:35,290 vi bruger Amazons Cloud server. 17 00:00:35,290 --> 00:00:37,164 Vi kørte individuel virtuelle maskiner. 18 00:00:37,164 --> 00:00:40,330 Også det har vi begyndt at overgangen til disse ting kaldet Docker containere 19 00:00:40,330 --> 00:00:43,762 således at alle vores applikationer er nu perfekt isoleret fra hinanden. 20 00:00:43,762 --> 00:00:46,720 Så for dette og meget mere, tillad mig at introducere vores venner, Nico og Mano, 21 00:00:46,720 --> 00:00:48,574 fra Docker selv. 22 00:00:48,574 --> 00:00:49,740 NICOLA KABAR: Tak, David. 23 00:00:49,740 --> 00:00:51,410 Hej allesammen. 24 00:00:51,410 --> 00:00:54,230 Mit navn er Nico, og dette er Mano. 25 00:00:54,230 --> 00:00:58,260 Vi er fra Docker. 26 00:00:58,260 --> 00:01:02,240 Vi kommer til at tale om-- hvilket giver jer en intro til Docker, 27 00:01:02,240 --> 00:01:08,100 og forhåbentlig, mod slutningen af denne snak, du kan realisere 28 00:01:08,100 --> 00:01:12,890 hvor meget du kan bruge lægen til oxalat din ansøgning udvikling 29 00:01:12,890 --> 00:01:14,200 og implementering. 30 00:01:14,200 --> 00:01:21,250 >> Så vi kommer til at starte virkelige hurtig med nogle baggrundsoplysninger. 31 00:01:21,250 --> 00:01:22,750 Beskriv hvad Docker handler om. 32 00:01:22,750 --> 00:01:25,490 Hvordan virker det? 33 00:01:25,490 --> 00:01:27,400 Hvordan er det architected? 34 00:01:27,400 --> 00:01:29,360 Jeg vil gøre nogle demoer. 35 00:01:29,360 --> 00:01:35,070 Og Mano bliver beskriver, hvordan du kan bruge Docker 36 00:01:35,070 --> 00:01:37,720 og giver dig specifikke skridt hvordan du kan komme i gang. 37 00:01:37,720 --> 00:01:41,490 >> Jeg ville sætte pris på hvis du fyre kan holde ud for dine spørgsmål i slutningen. 38 00:01:41,490 --> 00:01:46,800 På den måde kunne jeg komme ind dem spørgsmål i hele præsentationen. 39 00:01:46,800 --> 00:01:52,150 Så vi vil forlade nogen tid mod slutningen for spørgsmål. 40 00:01:52,150 --> 00:01:55,170 >> Så bare rigtig hurtig, der har faktisk nogensinde arbejdet på Docker, 41 00:01:55,170 --> 00:01:56,850 ligesom spillet med det? 42 00:01:56,850 --> 00:01:58,000 Awesome. 43 00:01:58,000 --> 00:01:58,520 Afkøle. 44 00:01:58,520 --> 00:01:59,817 Alle tiders. 45 00:01:59,817 --> 00:02:01,525 Så jeg har tænkt mig at starte med nogle historie. 46 00:02:01,525 --> 00:02:04,350 47 00:02:04,350 --> 00:02:09,820 Så tilbage i 90'erne og begyndelsen af ​​2000'erne, dybest set 48 00:02:09,820 --> 00:02:16,940 som web-udviklere, app udviklere, når de gik til at installere et program 49 00:02:16,940 --> 00:02:19,350 det var bundet til bart metal. 50 00:02:19,350 --> 00:02:20,860 Det var en server. 51 00:02:20,860 --> 00:02:22,870 Det var én ansøgning. 52 00:02:22,870 --> 00:02:25,260 >> Traditionelt et eksempel ville være som en LAMP stack, 53 00:02:25,260 --> 00:02:30,630 hvor man faktisk havde til opdrage puljen af ​​ressourcer. 54 00:02:30,630 --> 00:02:37,110 CPU, hukommelse, disk, netværk, installation operativsystem på toppen af ​​det. 55 00:02:37,110 --> 00:02:40,060 Hvis du tjener noget, hvis du faktisk have webserver, 56 00:02:40,060 --> 00:02:42,470 du har brug for noget lignende Apache til at tjene det. 57 00:02:42,470 --> 00:02:47,540 >> Hvis din ansøgning behov database, baghånd, 58 00:02:47,540 --> 00:02:50,840 du ville installere noget som MySQL, og så videre. 59 00:02:50,840 --> 00:02:55,910 Og hvis du har brug for køretid, PHPs og PHP Python arbejde var der. 60 00:02:55,910 --> 00:02:59,480 Og så vi faktisk havde til tage de skridt i orden 61 00:02:59,480 --> 00:03:02,060 at få din ansøgning op at køre. 62 00:03:02,060 --> 00:03:08,440 >> Hvis du har brug for mere computerkraft, du dybest set måtte kalde din Ops fyr 63 00:03:08,440 --> 00:03:16,260 eller gal at gå og rack op en ny stykke hardware, tilslut den, 64 00:03:16,260 --> 00:03:19,850 og du er nødt til at gentage dem, processer igen og igen. 65 00:03:19,850 --> 00:03:23,680 Så denne proces var relativt dyre. 66 00:03:23,680 --> 00:03:26,080 Var helt sikkert meget langsom. 67 00:03:26,080 --> 00:03:27,550 >> Det var ineffektivt. 68 00:03:27,550 --> 00:03:33,890 Og i mange tilfælde, din hardware blev underudnyttet. 69 00:03:33,890 --> 00:03:38,830 Så i slutningen af ​​90'erne og begyndelsen af ​​2000'erne, hardware virtualisering kom på tværs. 70 00:03:38,830 --> 00:03:42,475 Og som du kan se her i billede, dybest set, hvad de gjorde 71 00:03:42,475 --> 00:03:46,390 indvindes puljen af gratis hardware ressourcer 72 00:03:46,390 --> 00:03:49,680 og art tjente dem til de øvre lag, 73 00:03:49,680 --> 00:03:52,360 i dette tilfælde en gæst operativsystem. 74 00:03:52,360 --> 00:03:54,940 >> Og hele idéen om virtuelle maskiner kom på tværs 75 00:03:54,940 --> 00:03:59,110 og der virkelig hjalp Cloud computing, som vi kender det i dag. 76 00:03:59,110 --> 00:04:02,730 Så hvad det betød er dig kan køre flere VM'er, der 77 00:04:02,730 --> 00:04:06,720 betød flere stakke, multipel program på en samme fysiske maskine. 78 00:04:06,720 --> 00:04:10,570 79 00:04:10,570 --> 00:04:16,440 >> Dette afgjort hjulpet med hastighed på udrulning. 80 00:04:16,440 --> 00:04:17,629 Bestemt med udgifter. 81 00:04:17,629 --> 00:04:22,810 Du behøver ikke at gå og tilbringe energi, tid og ressourcer til rack 82 00:04:22,810 --> 00:04:26,210 flere servere for at komme til mere Compute. 83 00:04:26,210 --> 00:04:30,950 Og hastigheden af ​​faktisk bringe disse ressourcer op er meget hurtigere. 84 00:04:30,950 --> 00:04:31,450 Alle tiders. 85 00:04:31,450 --> 00:04:34,320 >> Så vi løste sult i verden, ikke? 86 00:04:34,320 --> 00:04:36,390 Nej, ikke rigtigt. 87 00:04:36,390 --> 00:04:42,410 Så virtualisering så meget som det er faktisk hjulpet, løse problemet, 88 00:04:42,410 --> 00:04:45,460 det faktisk indført en masse udfordringer. 89 00:04:45,460 --> 00:04:49,210 Hypervisor afgjort indført en masse kompleksitet, 90 00:04:49,210 --> 00:04:53,820 håndtering dem, der ligger til grund pulje af ressourcer. 91 00:04:53,820 --> 00:04:57,910 >> Det er tungere i den forstand, at før du havde et enkelt operativsystem, som 92 00:04:57,910 --> 00:05:01,830 er ligesom tre, fire shows på disken. 93 00:05:01,830 --> 00:05:04,230 Nu, hvis du har 10 maskiner på en enkelt hardware 94 00:05:04,230 --> 00:05:09,060 du nødt til at formere sig, at antallet af maskiner. 95 00:05:09,060 --> 00:05:11,440 Det er helt sikkert mere dyre i en vis forstand du stadig 96 00:05:11,440 --> 00:05:14,430 nødt til at få licens til den virtualiseringsteknologi 97 00:05:14,430 --> 00:05:18,210 hvis det ikke er open source. 98 00:05:18,210 --> 00:05:21,120 >> Men, lad os ikke tage hele kredit fra virtualisering. 99 00:05:21,120 --> 00:05:27,530 Fordi det, der skete, er der er en masse stakke og masser af software 100 00:05:27,530 --> 00:05:33,900 teknologier, der er blevet aktiveret af, hvor hurtigt du var i stand til at få 101 00:05:33,900 --> 00:05:38,040 til ressourcer med Cloud boom. 102 00:05:38,040 --> 00:05:46,675 >> Så i dag en enkelt app eller service kan bruge en af ​​følgende runtime 103 00:05:46,675 --> 00:05:47,216 eller databaser. 104 00:05:47,216 --> 00:05:50,250 105 00:05:50,250 --> 00:05:56,070 PHP, Python, MySQL, Redis, whatnot. 106 00:05:56,070 --> 00:05:59,740 Så der er en masse kompleksitet på denne antal stakke til rent faktisk at bringe 107 00:05:59,740 --> 00:06:02,210 en enkelt ydelse. 108 00:06:02,210 --> 00:06:07,300 Og sammen med det, du havde en masse underliggende ressourcer eller infrastruktur 109 00:06:07,300 --> 00:06:15,210 typer til at teste installere og dybest set tage produktionen disse ansøgninger 110 00:06:15,210 --> 00:06:16,900 at du udvikler. 111 00:06:16,900 --> 00:06:21,950 >> Især fordi dine hold har vokset arbejder på disse apps, 112 00:06:21,950 --> 00:06:25,310 der er en masse kompleksitet og udfordringer 113 00:06:25,310 --> 00:06:31,660 der blev bragt til at den cycle-- dybest ansøgning 114 00:06:31,660 --> 00:06:34,040 udvikling cyklus, er faktisk lykkedes. 115 00:06:34,040 --> 00:06:40,440 Så det faktum, at din ansøgning arbejder lokalt på din lokale VM 116 00:06:40,440 --> 00:06:47,480 garanterer ikke, at din kollega kommer til at forvente de samme resultater. 117 00:06:47,480 --> 00:06:51,330 >> Og når operationer holdet er involveret i at tage, hvad du har 118 00:06:51,330 --> 00:06:54,480 og implementering det i produktionen skala, også er der ingen garanti 119 00:06:54,480 --> 00:06:56,730 at der rent faktisk kommer til at ske. 120 00:06:56,730 --> 00:07:00,900 Så dette efterlader os med en virkelig big-- en masse spørgsmålstegn, 121 00:07:00,900 --> 00:07:07,700 en masse udfordringer faktisk står ligeledes tilbage i de dage. 122 00:07:07,700 --> 00:07:12,280 Og det mindede os om shippingbranchen. 123 00:07:12,280 --> 00:07:14,280 >> Så skibsindustrien havde en masse varer, 124 00:07:14,280 --> 00:07:16,190 som du kan se på venstre kanten. 125 00:07:16,190 --> 00:07:19,840 Og på den højre side, der er en masse, dybest set, 126 00:07:19,840 --> 00:07:22,160 måder at sende disse varer. 127 00:07:22,160 --> 00:07:26,040 Og hvad sker som et par folk kom sammen og sagde: 128 00:07:26,040 --> 00:07:29,600 vi nødt til at standardisere, hvordan vi faktisk sende disse varer. 129 00:07:29,600 --> 00:07:33,280 Og boom, har du intermodal shipping container. 130 00:07:33,280 --> 00:07:38,970 >> Så de blev enige om de mest almindelige størrelser for beholderen. 131 00:07:38,970 --> 00:07:40,160 Hvordan man håndterer dem. 132 00:07:40,160 --> 00:07:44,560 Hvad præcis metode, du har brug for at indlæse dem og losse dem. 133 00:07:44,560 --> 00:07:49,590 Og derfor, som virkelig hjalp shippingbranchen. 134 00:07:49,590 --> 00:07:55,250 Nu mere end 90% fokus transporteres globalt bruger disse containere. 135 00:07:55,250 --> 00:08:01,010 Og det helt sikkert falder de omkostninger samt 136 00:08:01,010 --> 00:08:03,400 de på grund af forsendelse skader. 137 00:08:03,400 --> 00:08:09,660 >> Så vi tager den samme model, og vi anvende de to app udvikling software 138 00:08:09,660 --> 00:08:13,080 arkitektur i den forstand, at containere 139 00:08:13,080 --> 00:08:15,842 tog virtualisering et niveau op. 140 00:08:15,842 --> 00:08:17,800 Så i stedet for at gøre det på hardware-niveau, 141 00:08:17,800 --> 00:08:22,060 blev det mere af et operativsystem systemniveau virtualisering. 142 00:08:22,060 --> 00:08:26,450 >> Og vi gør det ved at give hver ansøgning i sin egen let, 143 00:08:26,450 --> 00:08:31,180 isoleret, runnable, og bærbare, vigtigst af alt, 144 00:08:31,180 --> 00:08:35,049 en måde at pakke rent faktisk alt det, den har brug for at køre. 145 00:08:35,049 --> 00:08:36,100 Overalt det kan køres. 146 00:08:36,100 --> 00:08:42,039 Så uanset om du kører den på lokal dev miljø, din produktion 147 00:08:42,039 --> 00:08:44,490 miljø, din iscenesættelse eller undersøgelser. 148 00:08:44,490 --> 00:08:47,700 Uanset hvad der ligger til grund infrastrukturen er der, 149 00:08:47,700 --> 00:08:51,410 du havde en funktionel arbejder app. 150 00:08:51,410 --> 00:08:54,100 151 00:08:54,100 --> 00:09:01,800 >> Så det er præcis, hvad grunden containere gør på dette problem. 152 00:09:01,800 --> 00:09:04,070 De løse det ved emballage, på en sådan måde, 153 00:09:04,070 --> 00:09:09,490 at det kan garantere, at den bliver anvendt succes uanset hvor den lever. 154 00:09:09,490 --> 00:09:12,120 Så hvis du vil lignende, Bob er det stadig OK. 155 00:09:12,120 --> 00:09:17,860 Hvis du forveksles med, hvad jeg siger, Jeg har tænkt mig at være uddybe det. 156 00:09:17,860 --> 00:09:20,900 >> Så hvordan gør Docker selv passer ind i dette billede? 157 00:09:20,900 --> 00:09:26,335 Så Docker er en åben platform mulighed for nemt at understrege let, 158 00:09:26,335 --> 00:09:30,500 at bygge skibet, køre, letvægts bærbare self 159 00:09:30,500 --> 00:09:33,440 tilstrækkelige app containere overalt. 160 00:09:33,440 --> 00:09:37,660 Så hvis du tager noget fra dette tale, skal du tage følgende. 161 00:09:37,660 --> 00:09:40,980 >> Hvis du har din app kørende lokalt, og du har udviklet det 162 00:09:40,980 --> 00:09:45,930 i at bruge Docker platformen, forventer det med held skal sættes ind. 163 00:09:45,930 --> 00:09:49,380 Ligegyldigt hvad er den underliggende infrastruktur. 164 00:09:49,380 --> 00:09:53,830 Så hvis du har en Docker beholder og det virker, så 165 00:09:53,830 --> 00:09:58,130 så længe der er en Docker motor på den anden side-- 166 00:09:58,130 --> 00:10:02,190 Hvis din operation infrastruktur er ved hjælp af en Cloud, om det 167 00:10:02,190 --> 00:10:06,680 er AWS, eller Googles eller Microsoft, eller et af de offentlige skyer, 168 00:10:06,680 --> 00:10:10,010 eller din egen Cloud, eller dine åbne stak Cloud, eller dit lokale miljø. 169 00:10:10,010 --> 00:10:11,970 >> Hvis du har en motor kører, betyder 170 00:10:11,970 --> 00:10:14,537 det vil være held indsat der. 171 00:10:14,537 --> 00:10:16,620 Det kommer til at køre nøjagtig den samme adfærd 172 00:10:16,620 --> 00:10:21,480 som du architected det skal være. 173 00:10:21,480 --> 00:10:26,080 Så hvis vi ser at-- jeg har tænkt mig gå gennem hvad der faktisk 174 00:10:26,080 --> 00:10:29,160 er i de vigtigste komponenter i Docker. 175 00:10:29,160 --> 00:10:31,060 >> Så Engine er kernen i Docker. 176 00:10:31,060 --> 00:10:32,770 Det er hjernens. 177 00:10:32,770 --> 00:10:39,360 Det orkestrerer bygning, shipping, og implementering og styring 178 00:10:39,360 --> 00:10:41,570 selve beholderne. 179 00:10:41,570 --> 00:10:45,160 Jeg vil grave i, hvad Engine gør i flere detaljer i et sekund. 180 00:10:45,160 --> 00:10:47,740 181 00:10:47,740 --> 00:10:51,720 Dybest set, fordi Doctor blev bygget omkring klientserveren arkitekturer, 182 00:10:51,720 --> 00:10:56,630 så med henblik på at interagere med Motor du har brug for en form for en klient. 183 00:10:56,630 --> 00:11:01,200 >> Billeder er skabelonerne i hvilke beholdere er bygget fra. 184 00:11:01,200 --> 00:11:06,800 Så billeder er dybest set bare statiske filer. 185 00:11:06,800 --> 00:11:08,740 Skabeloner og containere er faktisk, hvad der er 186 00:11:08,740 --> 00:11:12,280 kører på runtime, der afsoner din ansøgning 187 00:11:12,280 --> 00:11:15,150 eller gøre noget med dataene. 188 00:11:15,150 --> 00:11:19,020 >> Registry behandles som et problem med hvordan du rent faktisk distribuere billeder. 189 00:11:19,020 --> 00:11:23,230 Så hvis du har brug for at dele et billede at du har arbejdet på din kollega 190 00:11:23,230 --> 00:11:27,220 eller til den ops team, du bruge det ved hjælp Registry. 191 00:11:27,220 --> 00:11:31,720 Du kan downloade en open source version af det, at Docker arbejdede på 192 00:11:31,720 --> 00:11:33,150 og åbne fremskaffede. 193 00:11:33,150 --> 00:11:38,040 >> Eller du kan bruge Docker hjælp, som er Cloud-version 194 00:11:38,040 --> 00:11:40,130 at skubbe og trække billeder derude. 195 00:11:40,130 --> 00:11:41,160 Det er en kæmpe ting. 196 00:11:41,160 --> 00:11:44,520 Fordi der er en enorm økosystem omkring Docker, og det er 197 00:11:44,520 --> 00:11:48,960 virkelig stærkt udnytte navet. 198 00:11:48,960 --> 00:11:59,780 >> Så for at opsummere her, det er sådan det minimalistisk Docker workflow klient. 199 00:11:59,780 --> 00:12:04,040 Du interagerer med værten, i dette tilfælde er det de Docker dæmoner. 200 00:12:04,040 --> 00:12:06,490 Det er det samme som Engine. 201 00:12:06,490 --> 00:12:09,690 Du gør kommandoer som Docker bygge, træk, køre. 202 00:12:09,690 --> 00:12:14,280 Og motoren selv går og gør disse ting. 203 00:12:14,280 --> 00:12:18,010 >> Så enten det interagerer med Registry til at trække disse billeder 204 00:12:18,010 --> 00:12:19,670 og lagene af billederne. 205 00:12:19,670 --> 00:12:25,030 Uanset om du ønsker at installere, køre beholdere, dræbe dem, smide dem ned, 206 00:12:25,030 --> 00:12:25,730 whatnot. 207 00:12:25,730 --> 00:12:32,190 Så dette opsummerer arbejdsgangen af alle disse komponenter. 208 00:12:32,190 --> 00:12:34,710 >> Så hvis du tager alle komponent af sig selv. 209 00:12:34,710 --> 00:12:37,690 Så Engine, det er bare en dæmon. 210 00:12:37,690 --> 00:12:40,800 Det vil slags spille det for at støtte det på Linux, fordi det gør 211 00:12:40,800 --> 00:12:44,380 kræver visse Linux kerne funktioner. 212 00:12:44,380 --> 00:12:48,820 Men Windows arbejder på at gøre det samme. 213 00:12:48,820 --> 00:12:53,720 Det er meningen, der skal støttes af Windows Server 2016. 214 00:12:53,720 --> 00:13:01,500 >> Så igen, det ansvar med Motoren er at, eller skal, bygge billeder. 215 00:13:01,500 --> 00:13:05,340 Træk billederne fra Docker Hub eller din egen Registry. 216 00:13:05,340 --> 00:13:07,840 Hvis du er færdig med disse billeder eller du oprette en ny billeder, 217 00:13:07,840 --> 00:13:14,770 du kan skubbe dem tilbage til registreringsdatabasen at distribuere dem til andre hold. 218 00:13:14,770 --> 00:13:18,300 >> Og forsøger at indeholde det lokalt og styre containere livscyklus 219 00:13:18,300 --> 00:13:19,260 lokalt. 220 00:13:19,260 --> 00:13:22,010 Det er bygget op omkring HTTP REST API. 221 00:13:22,010 --> 00:13:24,480 Så teknisk set kan du skriv din egen klient 222 00:13:24,480 --> 00:13:31,650 så længe det bruger HTTP, som er en meget standard mekanisme til at tale med motor 223 00:13:31,650 --> 00:13:33,110 og en masse andre tjenester. 224 00:13:33,110 --> 00:13:35,780 Og du kan se fra her, at uanset 225 00:13:35,780 --> 00:13:39,010 af, hvad infrastruktur er, så længe du can-- alle 226 00:13:39,010 --> 00:13:42,170 du behøver, er et operativsystem systemet, Linux specifikt. 227 00:13:42,170 --> 00:13:45,460 >> Og du kan installere Docker Engine oven i købet, og har det kørende 228 00:13:45,460 --> 00:13:48,970 og det orkestrerer, dybest set, alle disse app en, to, 229 00:13:48,970 --> 00:13:51,530 og tre er faktiske beholdere. 230 00:13:51,530 --> 00:13:53,990 Så det er Engine. 231 00:13:53,990 --> 00:13:58,040 Som jeg nævnte tidligere, fordi du har brug for at interagere med motor, 232 00:13:58,040 --> 00:13:59,200 der er kunden. 233 00:13:59,200 --> 00:14:03,180 >> Men faktisk, når du installerer Docker, det skibe med det. 234 00:14:03,180 --> 00:14:06,110 Så det bliver installeret, så det er en enkelt binær. 235 00:14:06,110 --> 00:14:11,830 Og du kan gøre lokale opkald til din Docker Engine. 236 00:14:11,830 --> 00:14:14,040 Eller fjerntliggende opkald til fjerntliggende motorer. 237 00:14:14,040 --> 00:14:16,600 238 00:14:16,600 --> 00:14:19,590 Det gør brug HTTP, som Jeg nævnte tidligere. 239 00:14:19,590 --> 00:14:24,200 Der er en GUI klient kaldet Kitematic fra Docker. 240 00:14:24,200 --> 00:14:26,390 Og der er absolut en masse andre folk 241 00:14:26,390 --> 00:14:29,740 der er ved at opbygge en masse GUI, der dybest set gennemføre 242 00:14:29,740 --> 00:14:32,980 nogle HTTP opkald til at tale med motor. 243 00:14:32,980 --> 00:14:35,920 244 00:14:35,920 --> 00:14:39,280 >> Blot nogle eksempler kommandoer. 245 00:14:39,280 --> 00:14:44,620 Hvis du gør Docker versionen, ville det vise dig klientversionen samt 246 00:14:44,620 --> 00:14:47,030 serveren version. 247 00:14:47,030 --> 00:14:49,500 Hvis du gør Docker info det vil fortælle dig alle de oplysninger, 248 00:14:49,500 --> 00:14:54,300 om hvor mange beholdere der kører eller oprettet, hvor mange billeder, du har, 249 00:14:54,300 --> 00:14:56,530 og så videre og så videre. 250 00:14:56,530 --> 00:15:01,850 >> Her har jeg, i siden sidste boks, jeg har Læge køre. 251 00:15:01,850 --> 00:15:04,970 Så det er sådan jeg er faktisk skabe container. 252 00:15:04,970 --> 00:15:08,960 Og jeg giver det til echo Hello World og sove for en anden og whatnot. 253 00:15:08,960 --> 00:15:12,830 Og du kan se den resultat. Så det er i gang. 254 00:15:12,830 --> 00:15:16,930 Og ligner Linux ps, kan du se alle de processer, og i dette tilfælde, 255 00:15:16,930 --> 00:15:18,540 alle de kørende containere. 256 00:15:18,540 --> 00:15:23,430 Denne ens henvise tilbage til containeren jeg lige har oprettet. 257 00:15:23,430 --> 00:15:27,560 >> Så det er virkelig vigtigt, fordi, lignende, kan det være en smule forvirrende. 258 00:15:27,560 --> 00:15:33,050 Så billeder er det kun læse samling af filer, ikke? 259 00:15:33,050 --> 00:15:37,000 De er, hvad vores container er baseret på. 260 00:15:37,000 --> 00:15:40,340 Men de er kun skrivebeskyttet. 261 00:15:40,340 --> 00:15:44,330 Så du starter med en base billede. 262 00:15:44,330 --> 00:15:50,180 Det har tendens til at efterligne OS-lignende, så Ubuntu, CentOS, whatnot basen billede. 263 00:15:50,180 --> 00:15:53,990 Og så skal du begynde at bygge oven på at visse lag, der vil gøre op 264 00:15:53,990 --> 00:16:00,010 din ende billede, i slutningen resultere her. 265 00:16:00,010 --> 00:16:03,220 >> Og hver af disse lag skal have en forælder billede 266 00:16:03,220 --> 00:16:06,690 som den refererer, når det faktisk ønsker at skabe. 267 00:16:06,690 --> 00:16:09,922 De er uforanderlige, i den forstand, at fordi de er read-only, 268 00:16:09,922 --> 00:16:11,630 du kan faktisk ikke foretage ændringer i dem. 269 00:16:11,630 --> 00:16:17,540 Du kan bruge dem til at skabe en container fra et billede, som 270 00:16:17,540 --> 00:16:23,530 vil kalde alle de efterfølgende nødvendige billeder under den. 271 00:16:23,530 --> 00:16:26,400 >> Du kan foretage ændringer til et andet lag, 272 00:16:26,400 --> 00:16:28,810 det er en omskrivning lag jeg vil tale om i en anden. 273 00:16:28,810 --> 00:16:31,350 Men hver af disse lag er aldrig ændret. 274 00:16:31,350 --> 00:16:34,300 275 00:16:34,300 --> 00:16:38,670 Dybest set billeder bruge noget kaldet EU File System, UFS. 276 00:16:38,670 --> 00:16:42,280 Og der er forskellige opbevaring backends, der udnytter denne teknologi. 277 00:16:42,280 --> 00:16:49,430 Og hvad det betyder er, at det samler forskellige filsystemer 278 00:16:49,430 --> 00:16:51,190 at få dem til at ligne en. 279 00:16:51,190 --> 00:16:54,460 >> Så du kan faktisk, fra en ansøgning perspektiv 280 00:16:54,460 --> 00:16:59,570 du har en top af en visning, der viser alle de forskellige filsystem nødvendig 281 00:16:59,570 --> 00:17:01,120 til det pågældende program til at køre. 282 00:17:01,120 --> 00:17:04,400 Men de er faktisk, om dette, de er faktisk i separate steder 283 00:17:04,400 --> 00:17:06,410 og bliver udnyttet af andre beholdere samt. 284 00:17:06,410 --> 00:17:09,569 285 00:17:09,569 --> 00:17:14,410 >> Så som du kan se i her, at hvis vi starter med daemon billede 286 00:17:14,410 --> 00:17:18,619 som en base billedet og derefter vi gå ind og tilføje [? Emacs?] 287 00:17:18,619 --> 00:17:20,720 og så det er en anden lag. 288 00:17:20,720 --> 00:17:21,916 Og derefter tilføje Apache. 289 00:17:21,916 --> 00:17:22,790 Det er en anden lag. 290 00:17:22,790 --> 00:17:25,470 Og så bruger vi den beholderen fra det. 291 00:17:25,470 --> 00:17:29,760 Hver af disse billeder, hver af disse lag, 292 00:17:29,760 --> 00:17:35,530 adskiller sig og kan være genbruges af andre beholdere. 293 00:17:35,530 --> 00:17:40,070 >> Hvis man ser på containere selv, de er en eller anden måde ligesom VM-lignende, 294 00:17:40,070 --> 00:17:41,930 men ikke behandles på samme tid. 295 00:17:41,930 --> 00:17:49,180 Så har de ikke, teknisk, den fuld operativsystem under dem. 296 00:17:49,180 --> 00:17:52,630 De bruger den fælles kerne af værtens operativsystem. 297 00:17:52,630 --> 00:17:54,440 Og de bygger oven i købet. 298 00:17:54,440 --> 00:17:56,250 De efterligner, hvordan de ser ud. 299 00:17:56,250 --> 00:18:00,710 De efterligner deres rod-fil Systemet af operativsystemet. 300 00:18:00,710 --> 00:18:04,930 Men de faktisk ikke replikere. 301 00:18:04,930 --> 00:18:12,080 >> Så i stedet for at have uforanderlige lag, det sidste lag, som er beholderen 302 00:18:12,080 --> 00:18:14,690 selv, det er en read-write lag. 303 00:18:14,690 --> 00:18:17,350 Det kører også processerne af din ansøgning. 304 00:18:17,350 --> 00:18:23,530 Og det afhænger af de underliggende lag. 305 00:18:23,530 --> 00:18:26,730 Hver container er skabt ud fra et billede. 306 00:18:26,730 --> 00:18:32,450 Og at billedet kan være en enkelt lag eller flerlags billede. 307 00:18:32,450 --> 00:18:37,200 >> Og jeg vil gerne bemærke her at Docker stærkt bruger, 308 00:18:37,200 --> 00:18:40,370 eller er baseret på Copy-On-Write mekanisme. 309 00:18:40,370 --> 00:18:44,350 Så det, faktisk, hvis du ikke er at foretage ændringer til beholderen, 310 00:18:44,350 --> 00:18:45,930 Det kommer ikke til at tage ekstra plads. 311 00:18:45,930 --> 00:18:49,600 Så det er dybest set, hvordan du opsummere en Copy-On-Write. 312 00:18:49,600 --> 00:18:53,820 Det kommer til at helt sikkert fremskynde boot tid til beholderen. 313 00:18:53,820 --> 00:18:56,300 For hvis du ikke gør ændringer i beholderen, 314 00:18:56,300 --> 00:18:57,800 det er at udnytte, hvad der er allerede er der. 315 00:18:57,800 --> 00:19:01,130 316 00:19:01,130 --> 00:19:02,955 >> Så, hvordan det rent faktisk virker. 317 00:19:02,955 --> 00:19:06,920 318 00:19:06,920 --> 00:19:14,240 En del af det er ligesom, lige nu, er det udnytter mindst to centrale kerne 319 00:19:14,240 --> 00:19:14,820 funktioner. 320 00:19:14,820 --> 00:19:17,660 Og det er det dybest set skabte dette niveau af isolation 321 00:19:17,660 --> 00:19:19,550 for selve beholderne. 322 00:19:19,550 --> 00:19:22,290 Disse funktioner er namespaces og cgroups. 323 00:19:22,290 --> 00:19:29,870 Så namespaces er en måde at skabe isolerede ressourcer, 324 00:19:29,870 --> 00:19:36,290 så inden selve beholderen, kun du kan se visse ressourcer. 325 00:19:36,290 --> 00:19:40,030 Såsom netværk grænseflade eller bestemte brugere eller whatnot. 326 00:19:40,030 --> 00:19:44,160 >> Og dem er kun synlige og kun tilgængelige inden i beholderen. 327 00:19:44,160 --> 00:19:48,290 Cgroup på den anden side grænser hvordan du bruger disse ressourcer. 328 00:19:48,290 --> 00:19:50,950 CPU, hukommelse og disk. 329 00:19:50,950 --> 00:19:53,900 Når du kan gå i, jeg betyder de er faktisk 330 00:19:53,900 --> 00:19:57,410 funktioner, der blev udviklet by-- de er en del af Linux-kernen. 331 00:19:57,410 --> 00:20:01,800 Så de var ikke genopfundet af eller genskabes ved Docker. 332 00:20:01,800 --> 00:20:03,770 Docker bruger dem. 333 00:20:03,770 --> 00:20:05,560 >> Hvad Læge virkelig her er faktisk det 334 00:20:05,560 --> 00:20:08,680 Orchestrated skabe namespaces for hver beholder 335 00:20:08,680 --> 00:20:13,320 og skabe de cgroups så det er latterligt nemt at oprette containere 336 00:20:13,320 --> 00:20:14,870 bruge disse funktioner. 337 00:20:14,870 --> 00:20:22,910 Selvfølgelig, som jeg beskrev tidligere, Union File Systems og Copy-On-Skriv virkelig 338 00:20:22,910 --> 00:20:26,810 hjælpe hastighed og disken brug af containere. 339 00:20:26,810 --> 00:20:28,917 >> Og når du får din hænder omkring Docker, 340 00:20:28,917 --> 00:20:32,000 du kommer til at se, hvor hurtigt det er at faktisk spin op containere og tåre 341 00:20:32,000 --> 00:20:32,500 dem ned. 342 00:20:32,500 --> 00:20:36,060 343 00:20:36,060 --> 00:20:40,230 Så hvis du kan spørge, hvordan kan du faktisk bygge billeder? 344 00:20:40,230 --> 00:20:45,940 Vi bygger billeder ved en proces med at skabe containere og foretage ændringer, ændre 345 00:20:45,940 --> 00:20:50,220 dem, og forpligter dem til at blive et billede. 346 00:20:50,220 --> 00:20:54,330 >> Så det er en kylling og æg henvisning her, 347 00:20:54,330 --> 00:20:57,350 fordi alle beholdere kommer fra billeder og billeder kommer 348 00:20:57,350 --> 00:21:00,270 fra begået beholdere, for det meste. 349 00:21:00,270 --> 00:21:03,830 Der er tre muligheder at skabe billeder. 350 00:21:03,830 --> 00:21:06,580 Jeg har tænkt mig at beskrive den første og sidste. 351 00:21:06,580 --> 00:21:10,060 Du kan enten manuelt gå og køre beholderen 352 00:21:10,060 --> 00:21:14,280 og foretage disse ændringer, ligesom du ville gøre på en hvilken som helst VM 353 00:21:14,280 --> 00:21:17,060 eller ethvert operativsystem, f.eks som installerer nye binære filer, 354 00:21:17,060 --> 00:21:19,370 tilføjer filsystemer, og whatnot. 355 00:21:19,370 --> 00:21:22,620 >> Og så afslutter, som du kan se deroppe. 356 00:21:22,620 --> 00:21:24,330 Jeg afslutter min beholder. 357 00:21:24,330 --> 00:21:26,050 Og så er jeg gør Docker begå. 358 00:21:26,050 --> 00:21:28,390 Og jeg begår det. 359 00:21:28,390 --> 00:21:31,560 Du kan se, at antallet her er bare en UUID, eller den første 12 360 00:21:31,560 --> 00:21:32,810 bits af UUID. 361 00:21:32,810 --> 00:21:34,320 Eller bytes af UUID. 362 00:21:34,320 --> 00:21:35,770 Og så er jeg kalder det mit billede. 363 00:21:35,770 --> 00:21:39,510 Så nu Docker tager sig af optage alt, hvad jeg gjorde det 364 00:21:39,510 --> 00:21:42,830 og skabe den nye billede baseret på det. 365 00:21:42,830 --> 00:21:47,080 366 00:21:47,080 --> 00:21:52,560 >> Jeg har ikke tænkt mig at tale om tarball, men der er en måde du kan få en enkelt, 367 00:21:52,560 --> 00:21:58,200 skabe en enkelt, eller lave en enkelt lag billedet ved hjælp tarballs. 368 00:21:58,200 --> 00:22:02,650 Hvad jeg har tænkt mig at tale om dette og hvad der er mest brugt i dag, 369 00:22:02,650 --> 00:22:03,270 er Dockerfile. 370 00:22:03,270 --> 00:22:07,260 Hvilket er teknisk den første trin automatiseres ved Docker selv. 371 00:22:07,260 --> 00:22:11,920 Så Dockerfiles er ting, som du er kommer til at se i en masse GitHub repoer 372 00:22:11,920 --> 00:22:13,150 i dag. 373 00:22:13,150 --> 00:22:16,420 Det er dybest set bare en tekstfil, der beskriver 374 00:22:16,420 --> 00:22:19,780 nøjagtigt, hvordan man opbygger et billede. 375 00:22:19,780 --> 00:22:25,540 >> Og for hver linje, er det faktisk skaber beholderen, udfører denne linje, 376 00:22:25,540 --> 00:22:30,480 tilsagn om, at beholderen i en nyt billede, og du, dybest set, 377 00:22:30,480 --> 00:22:36,160 bruge det til alle efterfølgende operationer indtil du kommer til det sidste billede. 378 00:22:36,160 --> 00:22:39,260 Hvilket er dybest set den ende mål her, i slutningen. 379 00:22:39,260 --> 00:22:42,420 Og efter du exec-- efter du skriv din Dockerfile, som 380 00:22:42,420 --> 00:22:46,750 er rent i tekst, du gør en Docker opbygge og navnet på billedet. 381 00:22:46,750 --> 00:22:50,000 >> Og du peger på, at det er hvor Dockerfile er på. 382 00:22:50,000 --> 00:22:56,570 Og du kan forvente at se mit billede som et billede, som du har lokalt. 383 00:22:56,570 --> 00:22:59,100 Så det er bare en visuel eksempel på, hvad der foregår. 384 00:22:59,100 --> 00:23:00,820 Du starter med en base billede. 385 00:23:00,820 --> 00:23:05,150 Du kører det i en beholder, der ændrer ikke basen selve billedet. 386 00:23:05,150 --> 00:23:08,310 Men i stedet skaber en omskrive lag oven på det 387 00:23:08,310 --> 00:23:10,340 hvor du foretage ændringerne, hvor du begår 388 00:23:10,340 --> 00:23:15,050 og du gentage processen, indtil du kommer til dit endelige billede. 389 00:23:15,050 --> 00:23:20,980 >> Og ved at gøre det, hver anden build proces kan bruge de samme lag 390 00:23:20,980 --> 00:23:23,870 og same-- grundlæggende Docker cacher disse lag. 391 00:23:23,870 --> 00:23:30,040 Så hvis jeg gør nøjagtig de samme proces, men i stedet for at installere PHP, 392 00:23:30,040 --> 00:23:31,540 Jeg installere Python. 393 00:23:31,540 --> 00:23:34,210 Det kommer til at bruge Apache og Ubuntu. 394 00:23:34,210 --> 00:23:39,570 Så på den måde du udnytter din disk. 395 00:23:39,570 --> 00:23:42,330 Det er at udnytte cachen og tilgængelige billeder der. 396 00:23:42,330 --> 00:23:45,320 397 00:23:45,320 --> 00:23:48,840 >> Den sidste brik er Registry, som er, hvordan du distribuerer dine billeder. 398 00:23:48,840 --> 00:23:52,710 Og som jeg nævnte tidligere, der er en Cloud-version af det, 399 00:23:52,710 --> 00:23:54,290 som er Docker Hub. 400 00:23:54,290 --> 00:23:57,550 Du kan gå og udforske en masse, dybest set 401 00:23:57,550 --> 00:24:04,900 Det er en offentlig SAS produkt, kan du stadig har private billeder, 402 00:24:04,900 --> 00:24:06,590 men der er en masse af offentlige billeder. 403 00:24:06,590 --> 00:24:10,580 Det er faktisk ubegrænset, kan du skubbe ubegrænset offentlige billeder der. 404 00:24:10,580 --> 00:24:13,730 Og dette er, hvordan du kan samarbejde med dit team. 405 00:24:13,730 --> 00:24:17,159 >> Du kan bare pege dem på dig repo og de kan hente det eller dit billede 406 00:24:17,159 --> 00:24:18,200 og de kan hente det. 407 00:24:18,200 --> 00:24:21,140 408 00:24:21,140 --> 00:24:24,990 Så nok med snak. 409 00:24:24,990 --> 00:24:29,110 Hvem ønsker at se nogle demoer reelle hurtig? 410 00:24:29,110 --> 00:24:31,330 Okay. 411 00:24:31,330 --> 00:24:34,050 Så her jeg har. 412 00:24:34,050 --> 00:24:37,480 Ca du fyre se min skærm? 413 00:24:37,480 --> 00:24:38,390 Okay. 414 00:24:38,390 --> 00:24:45,810 >> Så jeg har Docker kører her, så jeg kan kontrollere it's-- Dette er den version 415 00:24:45,810 --> 00:24:47,510 af Docker, der kører. 416 00:24:47,510 --> 00:24:49,320 Kan gøre Docker info. 417 00:24:49,320 --> 00:24:55,730 Check alle oplysninger om, hvor mange billeder, som de har, og så videre og så videre. 418 00:24:55,730 --> 00:24:58,890 Docker PS, der er ikke noget kørende. 419 00:24:58,890 --> 00:25:00,570 Sammenkædet dem. 420 00:25:00,570 --> 00:25:06,370 >> Så det første, jeg vil gøre, er show dig, hvordan du nemt kan køre en container. 421 00:25:06,370 --> 00:25:09,350 Så skønheden om Læge køre, hvis det rent faktisk 422 00:25:09,350 --> 00:25:14,700 ikke finde et billede lokalt, som standard den taler til Doctor Hub 423 00:25:14,700 --> 00:25:17,240 og forsøger at finde det der og downloads det for dig. 424 00:25:17,240 --> 00:25:22,820 Så det indeholder en Docker pull-kommando, naturligt. 425 00:25:22,820 --> 00:25:26,130 >> Så hvis jeg gør en Docker køre, hej-verden. 426 00:25:26,130 --> 00:25:28,890 427 00:25:28,890 --> 00:25:31,200 Så først det går at forsøge at finde den. 428 00:25:31,200 --> 00:25:36,140 Ellers som du kan se her, det kunne ikke finde det lokalt. 429 00:25:36,140 --> 00:25:41,830 Lige nu er det bare trukket to lag der gjorde, at billede og jeg kørte det. 430 00:25:41,830 --> 00:25:45,440 Den hello-verden er bare dybest set udgange, hvad du har gjort. 431 00:25:45,440 --> 00:25:47,680 Så dette er den nemmeste, én de nemmeste eksempler. 432 00:25:47,680 --> 00:25:53,840 Så faktisk jeg bare løb og opsagt beholderen virkelig hurtig. 433 00:25:53,840 --> 00:25:59,500 >> Hvis jeg ønsker at run-- og af den måde, hvis Jeg ønsker at tid, der, bare så du ved, 434 00:25:59,500 --> 00:26:03,572 dette er, hvor lang tid det tager at faktisk spin op og indeholder det. 435 00:26:03,572 --> 00:26:05,030 Vi måler det i millisekunder. 436 00:26:05,030 --> 00:26:10,600 Så du kan se, hvor meget det kan faktisk hjælpe dig ikke kun i test, 437 00:26:10,600 --> 00:26:13,200 men også selv implementering. 438 00:26:13,200 --> 00:26:17,221 Så det er en hurtig bemærkning om det. 439 00:26:17,221 --> 00:26:18,970 Den næste ting jeg kommer til at gøre er faktisk 440 00:26:18,970 --> 00:26:21,930 køre et billede jeg har allerede forberedt. 441 00:26:21,930 --> 00:26:24,460 Så Docker løb. 442 00:26:24,460 --> 00:26:27,240 -d er blot et flag for at fortælle den til at køre i baggrunden. 443 00:26:27,240 --> 00:26:30,290 Og -p tildeler visse havne. 444 00:26:30,290 --> 00:26:32,670 Fordi som standard, den beholdere isoleres, 445 00:26:32,670 --> 00:26:36,080 så du er nødt til at specificere præcis hvordan det kan få adgang til dem. 446 00:26:36,080 --> 00:26:41,150 Og i dette tilfælde, jeg fortæller Docker at kortlægge en tilfældig port på værten 447 00:26:41,150 --> 00:26:44,560 til en specificeret port inden selve beholderen. 448 00:26:44,560 --> 00:26:47,130 449 00:26:47,130 --> 00:26:56,460 Og det er dybest set, hvor image-- forhåbentlig er den rigtige. 450 00:26:56,460 --> 00:27:01,780 >> Så det gør parallelle downloads hver af disse lag, som du kan se her. 451 00:27:01,780 --> 00:27:06,949 Det er af lagene gør slutningen billede, jeg byggede. 452 00:27:06,949 --> 00:27:08,115 Det kommer til at tage en anden. 453 00:27:08,115 --> 00:27:11,290 454 00:27:11,290 --> 00:27:12,370 Og voila. 455 00:27:12,370 --> 00:27:16,590 >> Så nu hvis jeg gør en havnearbejder ps, jeg bør se noget, der kører. 456 00:27:16,590 --> 00:27:22,250 Jeg skulle se ID, billedet at dette var det baseret ud, 457 00:27:22,250 --> 00:27:23,880 og kommandoen, der blev henrettet. 458 00:27:23,880 --> 00:27:28,720 Og hvordan man kan få adgang til det er dybest set du går til denne port. 459 00:27:28,720 --> 00:27:33,240 Så jeg har tænkt mig at gå at-- dette er jeg kører det på AWS. 460 00:27:33,240 --> 00:27:37,150 Jeg har tænkt mig at gå til 32.769. 461 00:27:37,150 --> 00:27:37,650 Ups. 462 00:27:37,650 --> 00:27:40,495 463 00:27:40,495 --> 00:27:41,120 Og her går vi. 464 00:27:41,120 --> 00:27:44,550 >> Så dette er faktisk bare en web-tjeneste, der viser 465 00:27:44,550 --> 00:27:46,240 som beholder det bliver serveret fra. 466 00:27:46,240 --> 00:27:50,450 Så du kan se, at det er fra beholderen a9f. 467 00:27:50,450 --> 00:27:52,850 Og her er dette den navn på beholderen. 468 00:27:52,850 --> 00:27:56,550 Så du fyre kan se, hvor hurtigt det var faktisk ikke blot trække, men også 469 00:27:56,550 --> 00:28:00,440 implementere denne beholder. 470 00:28:00,440 --> 00:28:05,070 >> Nu det næste skridt er at undersøge Dockerfiles 471 00:28:05,070 --> 00:28:09,430 og hvordan vi rent faktisk kan bygge nye billeder. 472 00:28:09,430 --> 00:28:15,250 Jeg er bare kommer til at gå få klon, en Prøven Dockerfile bygger på den tidligere 473 00:28:15,250 --> 00:28:17,755 diagram, den ene til Apache og PHP. 474 00:28:17,755 --> 00:28:26,740 475 00:28:26,740 --> 00:28:28,140 Forhåbentlig Jeg husker min repo. 476 00:28:28,140 --> 00:28:36,410 477 00:28:36,410 --> 00:28:38,750 >> Så jeg har mit repository lige nu. 478 00:28:38,750 --> 00:28:43,080 Og du kommer til at se dette meget faktisk. 479 00:28:43,080 --> 00:28:45,110 Jeg har ikke installeret træ. 480 00:28:45,110 --> 00:28:48,700 >> Så dybest set du kommer til at se, hvordan din kildekode dokumentation omkring 481 00:28:48,700 --> 00:28:51,240 det, og derefter en Dockerfile på hvordan man rent faktisk pakke det. 482 00:28:51,240 --> 00:28:57,970 Så det er blot et udsnit PHP der ekko hej CS50. 483 00:28:57,970 --> 00:29:01,550 >> Så hvis jeg vil køre det, Jeg vil gøre havnearbeider build. 484 00:29:01,550 --> 00:29:03,370 Jeg er nødt til at bygge det første. 485 00:29:03,370 --> 00:29:12,420 Jeg har tænkt mig at nævne det demo_cs50. 486 00:29:12,420 --> 00:29:16,470 Og du har brug for et tag til det også. 487 00:29:16,470 --> 00:29:19,802 Så lad os kalde det V1 dot. 488 00:29:19,802 --> 00:29:21,760 Så som jeg beskrev tidligere, hvad jeg laver i dag 489 00:29:21,760 --> 00:29:26,840 er jeg fortæller Docker at gå brug at-- faktisk, undskyld, min dårlige. 490 00:29:26,840 --> 00:29:29,450 491 00:29:29,450 --> 00:29:32,500 Vi har ikke tage et kig på Dockerfile selv. 492 00:29:32,500 --> 00:29:39,020 Så de eneste ting i her, er index.php samt readme-fil 493 00:29:39,020 --> 00:29:39,810 og en Dockerfile. 494 00:29:39,810 --> 00:29:44,600 >> Så hvis du tager et kig på den Dockerfile, så det er 495 00:29:44,600 --> 00:29:47,150 meget lig, hvad I beskrevet tidligere. 496 00:29:47,150 --> 00:29:51,220 Det er bare en flok trin, Docker udfører 497 00:29:51,220 --> 00:29:56,330 ved at oprette og rive ned containere og [? tælle?] dem i et billede. 498 00:29:56,330 --> 00:29:59,570 >> Og dybest set kan du see-- [uhørligt] det her-- 499 00:29:59,570 --> 00:30:04,340 men det er fra den lokale repo. 500 00:30:04,340 --> 00:30:06,410 Det kommer til at gå ud og grab index.php. 501 00:30:06,410 --> 00:30:10,970 Så det er den eneste kilde kode, er faktisk en del af din ansøgning. 502 00:30:10,970 --> 00:30:16,800 Alt dette er grundlæggende operativsystem VVS, 503 00:30:16,800 --> 00:30:21,460 få de rigtige pakker og Apache, og PHP, og whatnot. 504 00:30:21,460 --> 00:30:26,950 Men det er faktisk at tage index.php og forpligte den ind i beholderen, 505 00:30:26,950 --> 00:30:28,210 i billedet. 506 00:30:28,210 --> 00:30:33,120 >> Så hvis du gå videre og køre kommando ved at gøre følgende, 507 00:30:33,120 --> 00:30:36,155 det er going-- faktisk, dette kan tage lidt. 508 00:30:36,155 --> 00:30:40,870 509 00:30:40,870 --> 00:30:42,455 Forhåbentlig er det ikke tager for lang tid. 510 00:30:42,455 --> 00:30:45,129 511 00:30:45,129 --> 00:30:46,170 Så du kan se trinene. 512 00:30:46,170 --> 00:30:49,320 Og jeg vil opfordre dig til at gå hjem i dag og prøve det. 513 00:30:49,320 --> 00:30:51,280 Og Mano vil beskrive hvordan netop du gør det. 514 00:30:51,280 --> 00:30:57,810 Men det er virkelig dejligt at se præcis hvad der sker bag kulisserne. 515 00:30:57,810 --> 00:31:02,420 Men det er latterligt let at bygge billeder og implementere dem ved hjælp Docker. 516 00:31:02,420 --> 00:31:12,170 517 00:31:12,170 --> 00:31:14,050 >> Det tager lidt længere tid end jeg havde forventet. 518 00:31:14,050 --> 00:31:29,085 519 00:31:29,085 --> 00:31:32,690 >> Lad os se hvad der sker, når du-- afkøles. 520 00:31:32,690 --> 00:31:36,260 Så som du kan se, hver af disse trin repræsentere linjer i Dockerfile. 521 00:31:36,260 --> 00:31:42,570 Og det viser sig her, at det succes bygget dette billede. 522 00:31:42,570 --> 00:31:46,480 >> Så hvis jeg gør Docker billeder, vil jeg se alle de billeder, jeg har lokalt. 523 00:31:46,480 --> 00:31:52,160 Og en af ​​dem kaldes min brugernavn, og navnet på billedet, 524 00:31:52,160 --> 00:31:56,050 og tag representing-- hovedsageligt er det en version tag. 525 00:31:56,050 --> 00:31:58,040 >> Så nu, hvis jeg ønsker at køre det, jeg gør havnearbeider køre. 526 00:31:58,040 --> 00:32:06,040 527 00:32:06,040 --> 00:32:14,960 Og jeg vil bare gøre en -d -P. Gør v1. 528 00:32:14,960 --> 00:32:18,500 Så jeg kan se nu, at jeg har to beholdere kører, som jeg bare 529 00:32:18,500 --> 00:32:21,230 oprettet, og goddag Docker en, jeg fik sidst. 530 00:32:21,230 --> 00:32:24,320 >> Og du kan se her, at det tildelt det en anden port. 531 00:32:24,320 --> 00:32:30,710 Så hvis jeg går til den samme IP, men tildeler det en anden port-- forhåbentlig jeg ikke. 532 00:32:30,710 --> 00:32:33,060 Så nu er det program at jeg bare indsat. 533 00:32:33,060 --> 00:32:35,980 534 00:32:35,980 --> 00:32:43,900 >> Hvis jeg ønsker at foretage ændringer, jeg kan hurtigt redigere kildekoden 535 00:32:43,900 --> 00:32:49,050 og gøre følgende. 536 00:32:49,050 --> 00:32:55,170 Lad os gøre goddag Harvard. 537 00:32:55,170 --> 00:32:57,989 Så nu, hvad der sker at ske, er, at jeg er 538 00:32:57,989 --> 00:32:59,905 kommer til at tagge det med en anderledes version-- åh, 539 00:32:59,905 --> 00:33:03,080 dette ikke guy-- tagge det med en anden version. 540 00:33:03,080 --> 00:33:05,735 Og du kommer til at see-- gør du fyre forventer 541 00:33:05,735 --> 00:33:11,020 det at tage den samme mængde tid at bygge det en anden gang, eller ej? 542 00:33:11,020 --> 00:33:14,470 Okay, og nogen ved hvorfor? 543 00:33:14,470 --> 00:33:15,020 Tal. 544 00:33:15,020 --> 00:33:16,350 >> PUBLIKUM: [uhørligt] 545 00:33:16,350 --> 00:33:19,830 >> NICOLA KABAR: Det er dybest set vi ændres kun ét af de senere trin. 546 00:33:19,830 --> 00:33:23,110 Og derfor er det kommer til at bruge cache og bruge hver af disse lag. 547 00:33:23,110 --> 00:33:27,080 Og det er virkelig nogle af de killer funktioner i Docker 548 00:33:27,080 --> 00:33:32,930 er, hvordan det rent faktisk udnytter og genanvendelser tager over 549 00:33:32,930 --> 00:33:36,950 din disk for det samme nøjagtige stykker information. 550 00:33:36,950 --> 00:33:40,700 >> Så hvis vi gør det samme, det tog kun et par sekunder. 551 00:33:40,700 --> 00:33:48,860 Hvis vi ønsker at redeploy-- så nu Jeg skal have tre containere. 552 00:33:48,860 --> 00:33:56,160 Men dette er ved at blive serveret på til-- syv én. 553 00:33:56,160 --> 00:33:58,860 Så nu er det den tredje beholder. 554 00:33:58,860 --> 00:34:02,580 Alle forstår hvad jeg lige gjorde her? 555 00:34:02,580 --> 00:34:06,320 >> Så nu, hvis du ønsker at dele denne beholder rigtig hurtig med dine venner, 556 00:34:06,320 --> 00:34:14,840 du kan bare gøre havnearbejder skubbe navn af beholderen, forhåbentlig. 557 00:34:14,840 --> 00:34:20,130 Så nu er det kommer til at skubbe det at-- Jeg er ikke logget ind her. 558 00:34:20,130 --> 00:34:33,511 559 00:34:33,511 --> 00:34:34,219 Undskyld. 560 00:34:34,219 --> 00:34:39,219 Men jeg har ikke tænkt mig fejlfinding nu. 561 00:34:39,219 --> 00:34:42,780 Men dybest set, at en kommando er bare at gå op skubbe det. 562 00:34:42,780 --> 00:34:45,670 Og du vil være i stand til se det, hvis du går til Docker Hub 563 00:34:45,670 --> 00:34:48,587 Og du logger ind, er du kommer til at være i stand til at se det. 564 00:34:48,587 --> 00:34:50,420 Og så kan du bare pege hvem der foregår 565 00:34:50,420 --> 00:34:52,750 til at bruge billedet til at gå og trække det. 566 00:34:52,750 --> 00:34:55,460 Og de kan bruge det. 567 00:34:55,460 --> 00:34:57,760 >> Med det, forhåbentlig I form af påvist 568 00:34:57,760 --> 00:35:01,230 hvor nemt det er at arbejde med Docker. 569 00:35:01,230 --> 00:35:06,610 Og jeg er bare at gå til give det tilbage til Mano. 570 00:35:06,610 --> 00:35:11,760 Og han vil tage den herfra. 571 00:35:11,760 --> 00:35:13,990 >> MANO MÆRKER: Okay tak, tak Nico. 572 00:35:13,990 --> 00:35:18,700 573 00:35:18,700 --> 00:35:20,614 Hvad så? 574 00:35:20,614 --> 00:35:24,410 Så en af ​​de ting, jeg ønskede at gøre er sat sammen 575 00:35:24,410 --> 00:35:28,820 hvorfor det er en important-- Derfor Docker og hvorfor 576 00:35:28,820 --> 00:35:33,000 beholdere er en sådan vigtig ny udvikling, 577 00:35:33,000 --> 00:35:36,890 en ny måde faktisk gør software. 578 00:35:36,890 --> 00:35:41,300 >> Og før jeg gør det, jeg har tænkt mig at bare indføre et par statistik. 579 00:35:41,300 --> 00:35:42,790 Jeg har ikke tænkt mig at læse alle disse. 580 00:35:42,790 --> 00:35:52,540 Men det viser dig en masse om, hvordan populær dette er i samfundet. 581 00:35:52,540 --> 00:35:56,310 De centrale Docker teknologier er open source. 582 00:35:56,310 --> 00:36:03,560 Så det er Docker Engine, Compose, Swarm, en masse andre ting 583 00:36:03,560 --> 00:36:05,210 er alle open source. 584 00:36:05,210 --> 00:36:10,590 Og vi har, hvad gjorde jeg sige, 1.300 bidragydere. 585 00:36:10,590 --> 00:36:15,630 Du ser nu, hvis man ser på den Antallet af ledige stillinger, sidste gang 586 00:36:15,630 --> 00:36:19,640 vi kiggede, det var omkring 43.000 job åbninger specifikt at nævne 587 00:36:19,640 --> 00:36:22,230 fortrolighed med Docker. 588 00:36:22,230 --> 00:36:26,450 Hundredvis af millioner af billeder har blevet hentet fra Docker Hub. 589 00:36:26,450 --> 00:36:31,870 Og, ja, meget mere store statistik. 590 00:36:31,870 --> 00:36:34,770 >> For dem, der er nysgerrige, det var oprindeligt skrevet i Python 591 00:36:34,770 --> 00:36:37,730 og derefter omskrevet til Go. 592 00:36:37,730 --> 00:36:40,320 Og det har kun været åbne source-- det er kun 593 00:36:40,320 --> 00:36:44,950 blevet frigivet for omkring 2 og 1/2 år, Hvilket betyder, at i 2 og 1/2 år, 594 00:36:44,950 --> 00:36:48,020 vi har set en enorm mængde vækst og betydning 595 00:36:48,020 --> 00:36:50,190 af denne i samfundet. 596 00:36:50,190 --> 00:36:52,400 Og så jeg ønsker at tale lidt om hvorfor. 597 00:36:52,400 --> 00:36:54,940 598 00:36:54,940 --> 00:36:59,880 >> Så bare for at gentage nogle af Nico vigtigste punkter, Docker er hurtig. 599 00:36:59,880 --> 00:37:00,630 Den er bærbar. 600 00:37:00,630 --> 00:37:02,500 Det er reproducerbar. 601 00:37:02,500 --> 00:37:06,130 Og det sætter en standard miljø. 602 00:37:06,130 --> 00:37:13,370 >> Og Hvad-- dette er min crappy udrydde monolitter slide-- hvad 603 00:37:13,370 --> 00:37:17,990 det er at hjælpe folk gør, som en masse af software-industrien 604 00:37:17,990 --> 00:37:21,400 begyndt at gøre i begyndelsen af ​​2000'erne, er i bevægelse 605 00:37:21,400 --> 00:37:24,200 fra disse monolitisk single applikationer 606 00:37:24,200 --> 00:37:28,590 hvor hver afhængighed skulle være testet før hele app havde 607 00:37:28,590 --> 00:37:31,280 skal sættes, hvilket kunne betyde en hjemmeside 608 00:37:31,280 --> 00:37:36,240 kun fik indsat en gang hver tredje måned, eller mere, 609 00:37:36,240 --> 00:37:42,650 til en langt mere tjeneste orienteret arkitektur 610 00:37:42,650 --> 00:37:46,090 eller komponentopdelt anden type Anvendelsesområde arkitektur. 611 00:37:46,090 --> 00:37:48,610 Og så lade disse slags arkitekturer 612 00:37:48,610 --> 00:37:52,250 at drage fordel af Docker til at køre i disse tre 613 00:37:52,250 --> 00:37:58,450 vigtigste områder for udvikling, som er udviklingen skriver din faktiske kode, 614 00:37:58,450 --> 00:38:00,140 teste din kode, og implementering det. 615 00:38:00,140 --> 00:38:03,000 616 00:38:03,000 --> 00:38:05,420 >> Så hvorfor er dette vigtigt? 617 00:38:05,420 --> 00:38:09,920 Hvis du er en-- lad mig give et eksempel. 618 00:38:09,920 --> 00:38:13,600 Hvis du er en hjemmeside enhed udvikler, du er 619 00:38:13,600 --> 00:38:19,020 at udvikle en hjemmeside, der er baseret på database, David produceret over her. 620 00:38:19,020 --> 00:38:20,490 Undskyld David, Jeg ringer dig ud. 621 00:38:20,490 --> 00:38:22,984 622 00:38:22,984 --> 00:38:24,900 Hvis du ønskede at implementere det hele, ville du 623 00:38:24,900 --> 00:38:28,870 nødt til at vente i en traditionel monolitisk softwareudvikling 624 00:38:28,870 --> 00:38:32,710 miljø, ville du nødt til at vente indtil han var færdig med databasen 625 00:38:32,710 --> 00:38:36,030 før du rent faktisk kan gøre eventuelle ændringer på dit websted. 626 00:38:36,030 --> 00:38:40,900 Du er nødt til at omfordele den hele ansøgningen til at gøre det. 627 00:38:40,900 --> 00:38:45,490 >> Og hvad Docker hjælper du gør, er hver person, arbejde med forskellige komponenter 628 00:38:45,490 --> 00:38:52,990 og opdatere dem, når de går, bare at gøre sikker på, at grænsefladerne forbliver de samme. 629 00:38:52,990 --> 00:38:56,350 Så hvad det har gjort er det flyttet folk 630 00:38:56,350 --> 00:39:03,950 fra at gøre disse massive monolitisk Architected software, 631 00:39:03,950 --> 00:39:07,610 indsat hver måned til en kontinuerlig integration og løbende udvikling 632 00:39:07,610 --> 00:39:08,490 miljø. 633 00:39:08,490 --> 00:39:12,580 >> Nu er dette ikke er unik for Docker, men Docker gør det så meget lettere, 634 00:39:12,580 --> 00:39:16,620 hvilket betyder, at du er dybest set konstant implementering. 635 00:39:16,620 --> 00:39:20,690 Vi taler med virksomheder, der er implementering offentlige modstående applikationer 636 00:39:20,690 --> 00:39:30,180 tusindvis af gange om dagen, fordi de ser værdien i bare at gøre 637 00:39:30,180 --> 00:39:33,740 små ændringer, og så længe som det løber gennem testene, 638 00:39:33,740 --> 00:39:35,900 lade det gå ud i produktion. 639 00:39:35,900 --> 00:39:41,890 Nico var altid fortæller mig tidligere, at i mange miljøer, 640 00:39:41,890 --> 00:39:46,580 standard livscyklus container måles i sekunder, 641 00:39:46,580 --> 00:39:50,460 mens en virtuel maskine kunne måles i måneder. 642 00:39:50,460 --> 00:39:54,590 643 00:39:54,590 --> 00:39:58,690 >> Jeg ønskede at tage en lille dreje her, fordi jeg er 644 00:39:58,690 --> 00:40:00,170 på en uddannelsesinstitution. 645 00:40:00,170 --> 00:40:06,670 Jeg ønskede at give et eksempel på, hvordan dette virker i en pædagogisk forskning 646 00:40:06,670 --> 00:40:07,670 situation. 647 00:40:07,670 --> 00:40:10,930 Så der er en organisation kaldet bioboxes. 648 00:40:10,930 --> 00:40:15,450 Bioboxes gør DNA analyse for forskere. 649 00:40:15,450 --> 00:40:22,029 >> Nu, hvad de fandt var, at når en researcher-- og det er ikke 650 00:40:22,029 --> 00:40:24,070 skyld i en bestemt researcher-- men når 651 00:40:24,070 --> 00:40:31,240 en forsker indsat en algoritme til at analysere, 652 00:40:31,240 --> 00:40:36,670 På en bestemt måde, en DNA-prøve, de ville skrive software, 653 00:40:36,670 --> 00:40:39,980 offentliggøre, at måske til GitHub eller et andet sted, 654 00:40:39,980 --> 00:40:42,680 og så de blev gjort. 655 00:40:42,680 --> 00:40:47,440 >> Nå problemet var, at det ikke nødvendigvis var reproducerbar. 656 00:40:47,440 --> 00:40:51,610 Fordi for at forstå software, 657 00:40:51,610 --> 00:40:54,830 de ville blive sat op til nøjagtige udviklingsmiljø 658 00:40:54,830 --> 00:41:00,460 at denne forsker anvendes, normalt deres bærbare computer, eller en server, eller en data- 659 00:41:00,460 --> 00:41:04,280 center, som de brugte. 660 00:41:04,280 --> 00:41:11,530 Og følgelig, det var meget vanskeligt at reproducere forskningsresultater, når 661 00:41:11,530 --> 00:41:16,910 analysere DNA-prøver at se på ting som incidence-- 662 00:41:16,910 --> 00:41:23,830 sammenligne forekomsten af ​​hjerteanfald baseret på visse gener er til stede, 663 00:41:23,830 --> 00:41:28,900 for eksempel, eller kræftrisiko, eller nogen af ​​de andre slags ting. 664 00:41:28,900 --> 00:41:33,900 >> Så hvad de gjorde i stedet var de begyndte at skabe containere. 665 00:41:33,900 --> 00:41:39,380 Og du kan gå til bioboxes.org, det er en stor organisation. 666 00:41:39,380 --> 00:41:43,900 Og hvad de gør, er de producerer containere baseret på forskning. 667 00:41:43,900 --> 00:41:46,840 Og så når nogen sender i deres stikprøve, kan de køre den. 668 00:41:46,840 --> 00:41:52,770 Og det har alle miljøet nødvendige for at køre denne algoritme 669 00:41:52,770 --> 00:41:55,370 og producere resultater. 670 00:41:55,370 --> 00:41:58,250 Og de er konstateringen af, at de er langt mere sandsynligt og meget 671 00:41:58,250 --> 00:42:01,300 hurtigere kunne returnere resultater til mennesker. 672 00:42:01,300 --> 00:42:06,860 >> Og i virkeligheden, er, hvad folk gør kører deres egen analyse på DNA, 673 00:42:06,860 --> 00:42:11,220 at fremsende disse på bioboxes og derefter biobox bare tager dataene, 674 00:42:11,220 --> 00:42:15,350 kører den mod de mange forskellige forskellige beholdere 675 00:42:15,350 --> 00:42:19,030 at se forskellige resultater baseret på forskellige forskning. 676 00:42:19,030 --> 00:42:21,860 Så det er en meget kraftfuld måde, hvorpå forskere 677 00:42:21,860 --> 00:42:28,070 kan gøre en enkelt forekomst, der tillader andre mennesker til at forsøge at gengive 678 00:42:28,070 --> 00:42:28,650 resultaterne. 679 00:42:28,650 --> 00:42:31,710 680 00:42:31,710 --> 00:42:34,360 >> Så hvordan kan du komme i gang? 681 00:42:34,360 --> 00:42:37,950 682 00:42:37,950 --> 00:42:39,800 Vi er godt understøttet på Linux. 683 00:42:39,800 --> 00:42:43,070 Så hvis du vil installere noget på Linux, 684 00:42:43,070 --> 00:42:45,620 du bruger din standard pakke manager til at installere. 685 00:42:45,620 --> 00:42:47,600 Hvis du bruger en Debian, er det apt get. 686 00:42:47,600 --> 00:42:50,500 CentOS er yum. 687 00:42:50,500 --> 00:42:53,500 Fedora Red Hat er rpm-- jeg ikke huske. 688 00:42:53,500 --> 00:42:56,070 Anyway, det hele er der. 689 00:42:56,070 --> 00:42:59,610 Vi støtter en lang række af Linux-distributioner. 690 00:42:59,610 --> 00:43:01,150 Du kan tjekke dem ud. 691 00:43:01,150 --> 00:43:06,370 >> Vi har også muligheder, så du kunne køre på Mac eller Windows. 692 00:43:06,370 --> 00:43:10,670 Nu Nico nævnte tidligere, at var det kun understøttet på Linux. 693 00:43:10,670 --> 00:43:18,180 Det er sandt, fordi det har brug for en Linux-kernen. 694 00:43:18,180 --> 00:43:20,540 Men, kan du køre i en virtuel maskine. 695 00:43:20,540 --> 00:43:25,290 Og hvad Docker Toolbox gør, som du kan downloade, 696 00:43:25,290 --> 00:43:27,610 det giver dig den virtuelle maskine. 697 00:43:27,610 --> 00:43:37,260 >> Så bare en hurtig 48 andet, tror jeg, downloade. 698 00:43:37,260 --> 00:43:40,670 Du skal bare søge på Docker Værktøjskasse, downloade den til Mac, 699 00:43:40,670 --> 00:43:43,910 og denne del er Kurset drønede op, fordi der 700 00:43:43,910 --> 00:43:47,620 ønsker at se et download-signal? 701 00:43:47,620 --> 00:43:54,190 Standard Mac installation, og så er du 702 00:43:54,190 --> 00:43:59,795 kommer til at se Jerome sætte i sit password. 703 00:43:59,795 --> 00:44:00,670 Det er meget spændende. 704 00:44:00,670 --> 00:44:03,510 705 00:44:03,510 --> 00:44:06,230 Og så er det installerer en hel masse værktøjer. 706 00:44:06,230 --> 00:44:10,010 Og især vil det installere en kommandolinje. 707 00:44:10,010 --> 00:44:14,220 Og så kunne man se Jerome teste sine billeder. 708 00:44:14,220 --> 00:44:19,050 709 00:44:19,050 --> 00:44:22,640 >> Og derefter er baseret på dette, du kan se, at YouTube 710 00:44:22,640 --> 00:44:27,420 mener, at Nico er interesseret i Star Wars, The Jimmy Kimmel show, 711 00:44:27,420 --> 00:44:29,020 og jeg tror, ​​Ellen. 712 00:44:29,020 --> 00:44:34,130 Jeg tror, ​​at sidste er et klip fra en Ellen show. 713 00:44:34,130 --> 00:44:37,760 >> Så Docker Toolbox selv kommer med mere end blot Docker Machine. 714 00:44:37,760 --> 00:44:39,840 Så Docker Machine er de ting, der hjælper 715 00:44:39,840 --> 00:44:43,710 du oprette en virtuel maskine på din Windows 716 00:44:43,710 --> 00:44:52,080 eller Mac-- din Windows-boks eller din Mac box-- og hjælper dig med at gøre provisionering, 717 00:44:52,080 --> 00:44:54,040 >> Men det kommer også med Swarm og Compose, 718 00:44:54,040 --> 00:45:00,840 der er designet til at hjælpe dig med at gøre store skala implementeringer af din ansøgning. 719 00:45:00,840 --> 00:45:04,000 Så hvis du ønsker at administrere klynger af knudepunkter, 720 00:45:04,000 --> 00:45:08,450 klynger af containere, Komponer og Swarm er vejen at gå om det. 721 00:45:08,450 --> 00:45:11,430 >> Og selvfølgelig det kommer med Docker Motor og Kitematic, 722 00:45:11,430 --> 00:45:13,250 som er denne desktop GUI. 723 00:45:13,250 --> 00:45:17,060 Jeg bør også nævne Docker Registry, som ikke er inkluderet i værktøjskassen, 724 00:45:17,060 --> 00:45:23,150 men det er en måde for dig at køre din egen registre over Docker billeder som Docker 725 00:45:23,150 --> 00:45:28,970 Hub, men du kan også bare bruge Docker Hub som en måde at gøre det. 726 00:45:28,970 --> 00:45:32,955 >> Og, plot twist, du ser det kører i en container. 727 00:45:32,955 --> 00:45:34,830 Og det er, hvordan vi er distribuere vores dias. 728 00:45:34,830 --> 00:45:38,610 Hele denne præsentation er faktisk en HTML slide dæk. 729 00:45:38,610 --> 00:45:43,170 Og det kører i et container, som du kan få by-- 730 00:45:43,170 --> 00:45:45,596 >> NICOLA KABAR: Ja, så det er kører fuld tid på min Max. 731 00:45:45,596 --> 00:45:47,540 Og jeg præsentere fra det. 732 00:45:47,540 --> 00:45:50,910 Og du bare gøre Docker efter du installerer din værktøjskasse. 733 00:45:50,910 --> 00:45:57,340 Du kan bare gøre en havnearbejder køre og få det, og bruge dias. 734 00:45:57,340 --> 00:45:58,830 >> MANO MÆRKNING: Og det er det. 735 00:45:58,830 --> 00:46:02,160 Så vi takker jer alle for at komme. 736 00:46:02,160 --> 00:46:03,990 Og vi er glade for at besvare spørgsmål. 737 00:46:03,990 --> 00:46:07,810 Jeg bør nævne før nogen blade der er T-shirts derovre. 738 00:46:07,810 --> 00:46:10,940 Ked nogen, der holder øje dette på Livestream eller video, 739 00:46:10,940 --> 00:46:12,820 men vi har Docker T-shirts derovre. 740 00:46:12,820 --> 00:46:16,250 Og vi ved Docker studerende, og i min erfaring, 741 00:46:16,250 --> 00:46:18,940 professorer også, ligesom gratis tøj. 742 00:46:18,940 --> 00:46:22,490 >> Så tak alle for at komme ud. 743 00:46:22,490 --> 00:46:27,050 Og følg os på Twitter hvis du vil, eller ikke. 744 00:46:27,050 --> 00:46:27,910 Jeg er ligeglad. 745 00:46:27,910 --> 00:46:29,430 Følg også Docker på Twitter. 746 00:46:29,430 --> 00:46:31,890 Det er også interessant. 747 00:46:31,890 --> 00:46:32,990 Og så det er det. 748 00:46:32,990 --> 00:46:33,490 Docker.com. 749 00:46:33,490 --> 00:46:35,410 Tak. 750 00:46:35,410 --> 00:46:39,360 >> [BIFALD] 751 00:46:39,360 --> 00:46:41,625