[MUZIKO Ludante] DAVID Malan: Bone. Dankon tiom por veni. Jen CS50 seminario pri Docker, a teknologio ke ni mem kaj CS50 ili komencis uzi por iu tempo nun. Do mia nomo estas David Malan, mi instrui Harvard Enkonduko Computer Science. Por sufiĉe iuj jaroj, ni estis donanta studentoj elŝuteblaj kliento-flanko virtualaj maŝinoj sur kiu ili fari iliajn problemojn aroj. Ke ni nun transitioneis al Nubo medio ke reale uzas tiun teknologion nomata Docker, tia ke ĉiuj CS50 studentoj nun havas sian propra Docker ujoj ke vi baldaŭ aŭdos ĉion. Plie, sur CS50 la servilo flanko grapolo, dum multaj jaroj ni uzis Amazon Cloud servilo. Ni kuradis individua virtualaj maŝinoj. Ankaŭ tio, ni komencis al transiro al tion nomis Docker ujoj por ke ĉiuj niaj aplikoj estas nun perfekte izolita de unu la alian. Do por tio kaj pli, permesi min enkonduki niajn amikojn, Nico kaj Mano, el Docker mem. Nicola Kabar: Dankon, David. Saluton al ĉiuj. Mia nomo estas Nico kaj tiu estas la Mano. Ni estas el Docker. Ni tuj parolos about-- donante vin uloj intro por Docker, Kaj espereble, al la fino de tiu diskuto vi povas realigi kiom vi povas uzi kuracisto oxalato via apliko disvolviĝo kaj deplojo. Do, ni tuj dividi reala rapida kun iu fono informo. Priskribi kion Docker temas. Kiel ĝi funkcias? Kial architected? Mi estos faranta kelkajn demonstraĵojn. Kaj Mano tuj estos priskribante kiel vi povas uzi Docker kaj donante al vi specifajn paŝojn kiel vi povas komenci. Mi aprezus se vi infanoj povas teni ekstere por viaj demandoj al la fino. Tiel, mi estu alparolante tiuj demandoj tra la prezento. Do ni restigos tempo direkte al la fino por demandoj. Do ĝuste reala rapida, kiuj havas fakte iam laboris sur Docker, kiel ludis kun ĝi? Imponega. Malvarmeta. Granda. Do, mi tuj komencos kun iu historio. Do reen en la '90aj jaroj kaj fruaj 2000-aj jaroj, esence kiel desarrolladores retejo, app programistoj, Ili iris al disfaldi apliko ĝi estis ligita al naskis metalo. Ĝi estis unu servilo. Ĝi estis unu apliko. Tradicie, ekzemplo estus kiel LAMP stack, kie vi efektive devis alportu la lageton de rimedoj. CPU, memoro, disko, reto, instalo operaciumo Aldonigxis. Se vi servanta ion, se vi fakte havante retservilo, vi bezonas iun kiel Apache servi ĝin. Se via aplikaĵo bezonas datumbazon, Backhand, vi instalus ion kiel MySQL, kaj tiel plu. Kaj se vi bezonas la tempo de ekzekuto, PHPs kaj PHP Python laboro estis tie. Kaj do ni efektive devis preni tiujn paŝojn por akiri vian aplikon supre kaj kuranta. Se vi bezonas pli komputas potencon, vi resume devis nomi vian Ops ulo aŭ gal iri kaj rako supre nova peco de aparataro, konektantaj, kaj vi devas ripeti tiujn procezoj denove kaj denove. Do tiu procezo estis relative multekostaj. Estis sendube tre malrapida. Estis ineficiente. Kaj en multaj kazoj, via aparataro estis infrautilizadas. Do, en la malfruaj 90'oj kaj fruaj 2000-aj jaroj, aparataro virtualización renkontis. Kaj kiel vi povas vidi tie en la bildo, esence kion ili faris estas distrita la lageto libera aparataro rimedoj kaj ia funkciis tiuj al la supraj tavoloj, tiukaze, gasta operaciumo. Kaj la tuta ideo de virtualaj maŝinoj trovis kaj tio vere helpis Nubo komputado kiel ni konas ĝin hodiaŭ. Do kion tio signifas estas vi povas kuri multnombraj VMS, kiu signifis multoblajn stakojn, multoblaj apliko sur sama fizika maŝino. Tiu sendube helpis kun la rapido de apliko deplojo. Definitive kun elspezoj. Vi ne devas iri kaj pasigi energion, tempon kaj rimedojn al rako pli serviloj atingi pli komputi. Kaj la rapido de reale alportanta tiujn rimedojn supre estas multe pli rapida. Granda. Do ni solvita monda malsato, dekstra? Ne, ne vere. Do, virtualización kiom ĝi estas vere helpis, la problemon, ĝi fakte enkondukis multajn defiojn. La hypervisor definitive enkondukis multajn komplekseco, manipuli tiujn subkuŝanta pool de rimedoj. Ĝi estas pli peza en la senco ke antaŭe vi havis solan mastruman sistemon kiu estas kiel tri, kvar koncertoj surdiske. Nun, se vi havas 10 maŝinoj sur ununura aparataro vi devas multipliki ke laux la nombro de maŝinoj. Ĝi estas sendube pli multekosta iusence vi ankoraŭ devas akiri licencoj por la virtualización teknologio se ĝi ne estas malferma fonto. Sed, ni ne prenos la tutan kredito de virtualización. Ĉar kio okazis estas ekzistas multaj stakoj kaj multan programaro teknologioj kiuj ebligis per kiom rapide vi povis ricevi al rimedoj kun la Nubo eksplodo. Do, hodiaŭ ununuran app aŭ servo povas estos uzante ajnan el la sekvaj runtimes aŭ datumbazoj. PHP, Python, MySQL, Redis, whatnot. Do ekzistas multaj komplekseco sur tiu nombro de stakoj por fakte elvoku sola servo. Kaj kune kun tio, vi havis multan suba rimedoj aŭ infrastrukturo tipoj testi disfaldi kaj esence preni al produktado tiuj aplikoj ke vi evoluiganta. Precipe cxar viaj teamoj havas kreskinta laboras pri tiuj apps, ekzistas multe de komplekseco kaj defioj kiuj elkreskis certigi ke la cycle-- esence apliko disvolviĝo ciklo, estas fakte sukcesa. Do, la fakto ke via aplikaĵo laboras loke sur via loka VM ne garantias ke via kolego tuj atendas la samajn rezultojn. Kaj kiam la operacioj teamo estas implikita en preni kion vi havas kaj deplojante ĝin en produktado skalo, ankaŭ ne estas garantio ke tio efektive okazos. Do tiu nin lasas kun vere big-- multajn demandosignojn, multajn defiojn reale alfrontis simile reen en la tagoj. Kaj tio memorigis nin pri la ekspeda industrio. Do la ekspeda industrio havis multajn posedaĵojn, kiel vi povas vidi sur la maldekstra flanko. Kaj sur la dekstra flanko, ekzistas multe de, esence, manierojn sxipo tiuj varoj. Kaj kio okazas kiel paro uloj kunvenis kaj diris: ni devas normigi kiel ni fakte sxipo tiuj varoj. Kaj eksplodo, vi havas la Intermodal shipping ujo. Do ili interkonsentis pri la plej komunaj grandecoj por la ujo. Kiel manipuli ilin. Kio ĝusta metodo vi bezonas ŝarĝi ilin kaj malŝarĝi ilin. Kaj tial, ke vere helpis la ekspeda industrio. Nun pli ol 90% fokuso transportis tutmonde abonas tiujn kontenerojn. Kaj tio sendube malpliigas la elspezoj tiel kiel la damaĝoj pro sendokosto. Do ni prenu la sama modelo kaj ni aplikas la du app disvolviĝo programaro arkitekturo, en la senco ke containerization prenis la virtualización supren unu nivelon. Do anstataŭ fari ke ĉe la aparataro nivelo, ĝi iĝis pli de mastruma sistemo nivelo virtualización. Kaj ni faras tion per provizi ĉiun aplikon en lia propra malpeza, izolita, ajn estas ebla, kaj portable, plej grave, maniero por fakte paki ĉiu kiu bezonu por funkcii. Ie ĝi povas kuri. Do, sendepende se vi uzas gxin sur lokaj dev medio, via produktado medio, vian surscenigo aŭ testado. Neniu gravi kion subkuŝanta infrastrukturo estas tie, vi havis funkcian labori programon. Do jen precize kio esence ujoj faru al tiu problemo. Ili traktas ĝin pakita ĝin en tia maniero ke ĝi povas garantii ke ĝi estas disfaldita sukcese negrave kie vivas. Do se vi tuj kiel, Bob estas ankoraŭ OK. Se vi konfuzita kun kion mi diras, Mi tuj estos ellabori sur tio. Do kiel faras Docker mem konveni en tiu bildo? Do Docker estas malferma platformo facile, elstari facile, konstrui ŝipon, kuri, malpeza porteblaj memo sufiĉa app ujoj ie. Do se vi prenos ion el ĉi diskuto, bonvolu preni la sekvan. Se vi havas via app kurado loke kaj vi evoluigis ĝin en uzi la platformon Docker, atendi ĝi esti sukcese deplojita. Ne gravas kio estas la subesta infrastrukturo. Do se vi havas Docker ujo kaj ĝi laboras, tiam dum ekzistas Docker motoro sur la alia side-- se via operacio infrastrukturo estas uzanta ajnan Nubo, ĉu ĝi estas AWS, aŭ Google aŭ Microsoft, aŭ iu el la publikaj Nuboj, aŭ via propra Nubo, aŭ via malferma pilo Nubo aŭ via loka medio. Se vi havos motoron kurante, ke pere ĝi tuj estu sukcese deplojis tie. Ĝi tuj estos kurante ĝuste la sama konduto kiel vi architected ĝin esti. Do se ni rigardas at-- Mi tuj iri tra kio reale estas en la ĉefaj komponantoj de Docker. Do Engine estas ĉe la kerno de Docker. Estas la cerbo. Ĝi orchestrates konstruaĵo, ekspedo, kaj deploji kaj administri la ujoj mem. Mi elfosos en kio Engine faras en pli detaloj en sekundo. Esence, ĉar doktoro estis konstruita ĉirkaŭ la kliento servilo arkitekturoj, do por interagi kun la Engine vi bezonas iun specon de kliento. Bildoj estas la ŝablonoj en kiun ujoj estas konstruita el. Do bildoj estas esence nur statika dosierojn. Ŝablonoj kaj ujoj estas fakte kio estas kuras je ekzekuto ke servas via aplikaĵo aŭ fari iun kun la datumoj. Registro estas adresita kiel problemo de kiom vi efektive distribui bildoj. Do se vi bezonas dividi bildon ke vi laboris sur al via kolego nek ops teamo, vi uzi ĝin uzante Registro. Vi povas elŝuti malferman fonton versio de ĝi ke Docker prilaboris kaj malfermos fontmarkitaj. Aŭ vi povas uzi Docker helpo, kiu estas la Nubo versio puŝi kaj tiri bildojn tie. Tio estas grandega afero. Ĉar estas grandega ekosistemo ĉirkaŭ Docker kaj ĝi estas vere peze utiliganta la nabo. Do por resumi tie, jen kiel la minimalista Docker laborfluo kliento. Vi interagi kun la gastiganto, en tiu kazo ĝi estas la Docker demonoj. Estas la sama afero kiel Engine. Vi do komandojn kiel Docker konstrui, tiri, run. Kaj la motoro mem iras kaj faras tion. Do ĉu ĝi interagas kun Registro tiri tiujn bildoj kaj la mantelojn de la bildoj. Ĉu se vi volas disfaldi, kuri ujoj, mortigi ilin, ĵeti ilin malsupren, whatnot. Do tiu resumas la laborfluo de ĉiuj ĉi tiuj komponantoj. Do se vi prenas ĉiun komponanto per sin. Do Engine, estas nur daemon. Ĝi devos speco de ludi ĝin subteni ĝin sur Linukso ĉar ĝi faras postulas iujn Linuksan kernon karakterizaĵoj. Sed Vindozo laboras sur faranta la saman aferon. Ĝi estas supozita esti apogita vindozaj Servilo 2016. Do, denove, la respondecoj kun la motoro estas, aŭ estas al, konstrui bildojn. Pull bildojn el la Docker Hub aŭ via propra Registro. Se vi faris kun tiuj bildoj aŭ vi kreas novajn bildojn, vi povas premi tiujn reen al la registro disdoni ilin al aliaj teamoj. Kaj provante enhavi ĝin loke kaj administri la ujoj vivociklo loke. Ĝi estas konstruita ĉirkaŭ HTTP REST API. Do teknike vi povas skribi vian propran kliento kiel longe kiel ĝi uzas HTTP, kiu estas tre norma meĥanismo paroli al Engine kaj multajn aliajn servojn. Kaj vi povas vidi de tie ke senkonsidere de kio la infrastrukturo estas, tiel longe kiel vi can-- ĉiuj vi bezonas estas mastruma sistemo, Linukso specife. Kaj vi povas instali Docker Engine Aldonigxis kaj ĝi kuras kaj ĝi orchestrates, esence, ĉiuj tiuj app unu, du, kaj tri estas fakta ujoj. Do jen Engine. Kiel mi menciis antaŭe ĉar vi bezonas interagi kun Engine, Tie estas la kliento. Sed fakte kiam vi instalas Docker, ĝi ŝipoj kun ĝi. Do gets instalita, do estas sola duuma. Kaj vi povas fari lokaj alvokoj al viaj Docker Engine. Aŭ malproksima vokojn al foraj Engines. Ĝi uzas HTTP, kiel Mi menciis antaŭe. Ekzistas GUI kliento nomis Kitematic de Docker. Kaj estas definitive multe de aliaj uloj kiuj konstruas multajn GUI-oj kiuj esence efektivigu iuj HTTP nomas paroli al Engine. Nur kelkaj specimenaj komandojn. Se vi faras Docker versio, estus montri vin la kliento versio tiel kiel la servilo versio. Se vi faras Docker info ĝi volo diri al vi ĉiujn informojn pri kiom da ujoj kuras aŭ kreita, kiom da bildoj vi havas, kaj tiel plu kaj tiel plu. Jen mi havas, en la flanko de lasta skatolo, mi havas Doktoro run. Do jen kiel mi reale kreanta ujo. Kaj Mi donos gxin al eĥon Saluton Mondo kaj dormi dum sekundo kaj whatnot. Kaj vi povas vidi la rezulto. Do estas daŭranta. Kaj simila al Linukso ps, vi povas vidi ĉiuj procezoj kaj, en tiu kazo, ĉiuj kurado ujoj. Ĉi onia raportante reen al la ujo mi ĵus kreis. Do, tiu estas vere grava ĉar, kiel, povas esti iom konfuza. Do bildoj estas la nurlega kolekton de dosieroj, ĉu ne? Ili estas kion niaj ujo estas bazita sur. Sed ili estas nur legas-nur. Do vi dividus kun baza bildo. Ĝi inklinas imiti VIN-kiel, tiel Ubuntu, CentOS, whatnot bazo bildo. Kaj tiam vi komencos konstrui supre sur ke certaj tavoloj, kiuj konsistigas via fino bildo, la fina rezulto tie. Kaj ĉiu el tiuj tavoloj devus havi gepatro bildo ke referenceas kiam fakte volas krei. Ili estas neŝanĝeblaj, en la senco ke ĉar ili estas nurlega, vi ne povas reale fari ŝanĝojn al ili. Vi povas uzi ilin por krei ujo de bildo, kiu alvokos cxiujn posta Bezonata bildoj sub tio. Vi povas fari ŝanĝojn al malsama tavolo, ĝi estas reverki tavolo Mi timige raportas en sekundo. Sed ĉiu el tiuj tavoloj neniam ŝanĝiĝis. Esence bildoj uzi ion nomita Unio Dosiera Sistemo, UFS. Kaj ekzistas diverseco de stokado backends kiuj uzas ĉi tiun teknologion. Kaj kion tio signifas estas ke kunvenigas distingaj dosiersistemojn fari ilin rigardi kiel unu. Do vi efektive povas, de apliko perspektivo, vi havas supro de vido kiu elmontras ĉiuj malsamaj dosiersistemo bezonis por ke apliko kuri. Sed ili estas vere, sur tiu, ili estas reale en apartaj lokoj kaj estante utiligita fare aliaj ujoj ankaŭ. Do kiel vi povas vidi en ĉi tiu se ni starti kun daemon bildo kiel bazon bildo, kaj tiam ni iros kaj aldonu [? emacs?] kaj tiam tio estas alia tavolo. Kaj tiam aldoni Apache. Tio estas alia tavolo. Kaj poste ni pasigas la ujo el tio. Ĉiu de tiuj bildoj, ĉiu de tiuj manteloj, estas distingaj kaj povas esti reuzataj de aliaj ujoj. Se vi rigardas ujoj aparte ili estas iel kiel VM-simila, sed ne traktis la sama tempo. Do, ili ne havas, teknike, la plena mastruma sistemo sub ili. Ili uzas la solan kernon de la gastiganto mastruma sistemo. Kaj ili konstruu sur supro de tiu. Ili imitas en ilia aspekto. Ili imitas ilian radikon dosieron sistemo de la mastruma sistemo. Sed ili efektive ne repliki. Do, anstataŭ havi neŝanĝeblaj tavoloj, la lasta tavolo, kiu estas la ujo mem, estas legado registran tavolo. Kiu ankaŭ kuras la procezoj de via apliko. Kaj ĝi dependas de la subaj tavoloj. Ĉiu kontenero estas kreita de bildo. Kaj tio bildo povas esti ununura tavolo aŭ multilayer bildo. Kaj mi volas noti ĉi tie ke Docker peze uzas, aŭ baziĝas sur Copy-On-Write mekanismo. Tial, fakte, se vi ne estas farante ŝanĝojn al la ujo, ĝi ne tuj preni ekstra spaco. Do jen esence kiel vi resumi kopion-On-Write. Ĝi tuj definitive rapidigi la lanĉtempo por la ujo. Ĉar se vi ne faras ŝanĝoj al la ujo, ĝi estas utiliganta kio estas jam tie. Do, kiel ĝi efektive funkcias. Parto de ĝi estas kiel, nun, ĝi ekspluatas almenaŭ du ŝlosilaj kerno ĉefaĵoj. Kaj tio estas esence kio kreita tiu nivelo de izolado por la ujoj mem. Tiuj karakterizaĵoj estas nomspacoj kaj cgroups. Do nomspacoj estas maniero por krei izolitajn rimedoj, por ke ene de la ujo mem, nur vi povas vidi iujn rimedojn. Kiaj la interkonektanta interfaco aŭ certaj uzantoj aŭ whatnot. Kaj tiuj estas nur videbla kaj nur atingebla ene de la ujo. Cgroup aliflanke limoj kiel vi uzas tiujn rimedojn. CPU, memoro kaj disko. Kiam vi povas eniri, mi signifas tiuj estas fakte trajtoj kiuj disvolvis by-- ili estas parto de la Linuksa kerno. Do ili ne estis reinventó per aŭ amuzita de Docker. Docker uzas ilin. Kio Doktoro vere faris tie estas reale ĝi orquestada kreado nomspacoj por ĉiu ujo kaj kreante la cgroups tiel ke ĝi estas ridinde facila krei kontenerojn uzante tiuj karakterizaĵoj. Kompreneble, kiel mi priskribis antaŭe, Unio Dosiera Sistemoj kaj Kopiu-On-Write vere helpi la rapidon kaj la disko utiligo de ujoj. Kaj unufoje vi akiras vian manoj ĉirkaŭ Docker, vi tuj vidos kiel rapide ĝi estas fakte turnadi supren ujoj kaj larmo ilin suben. Do, se vi povus demandi, kiel povas vi fakte konstrui bildojn? Ni konstruu bildoj de procezo de kreado ujoj kaj farante ŝanĝojn, ŝanĝante ili, kaj la fari ilin en igi bildon. Do estas kokido kaj ovo referencon tie, ĉar ĉiuj ujoj venu el bildoj kaj bildoj venis de faritaj ujoj, plejparte. Estas tri ebloj krei bildojn. Mi tuj priskribi la unua kaj lasta. Vi povas ĉu permane iri kaj kuri la ujo kaj fari tiujn ŝanĝojn, kiel vi farus en ajna VM aŭ ajna mastruma sistemo, kiel instali novan binaroj, aldonante dosiersistemojn, kaj whatnot. Kaj poste vi eliras, kiel vi povas vidi tie supre. Mi eliranta mia ujo. Kaj tiam mi faras Docker commit. Kaj mi fari tion. Vi povas vidi ke la numero ĉi tie estas nur UUID, aŭ la unua 12 bitojn de la UUID. Aŭ bajtoj de la UUID. Kaj poste mi nomante ĝin mia bildo. Do nun Docker prizorgas registranta ĉiun tamen tio kaj kreante la novan bildo bazita sur tio. Mi ne tuj paroli pri tarball, sed ekzistas trairejo vi povas akiri sola, krei ununuran, aŭ fari sola tavolo bildo uzanta tarballs. Kion mi tuj paroli pri tio kaj kio plejparte uzita hodiaŭ, estas Dockerfile. Kiu estas teknike la unua paŝi aŭtomatigita Docker mem. Do Dockerfiles estas aferoj kiujn vi tuj vidos en multajn GitHub Repos hodiaŭ. Ĝi estas esence nur tekstdosiero priskribante ĝuste kiel konstrui bildon. Kaj por ĉiu linio, ĝi fakte kreas la ujo, ekzekutu tiun linion, kompromitas ke ujo en nova bildo, kaj vi, esence, uzi ĝin por ĉiuj postaj operacioj ĝis vi akiras al la lasta bildo. Kiu estas esence la fini celo tie, fine. Post vi exec-- post vi skribu vian Dockerfile, kiu estas pure en teksto, vi fari Docker konstrui kaj la nomon de la bildo. Kaj vi montras en tiu kiu estas kie la Dockerfile estas ĉe. Kaj vi povas atendi vidi mian bildon kiel bildo, ke vi havas loke. Do tio estas nur vida ekzemplo de kio okazas. Vi komencas kun bazo bildo. Vi kuras ke en ujo kiu ne ŝanĝas la bazon bildo mem. Sed anstataŭe kreas reskribi tavolo aldone al ĝi kie fari la ŝanĝojn, en kiu vi faras kaj vi ripetas la procezon ĝis Vi akiras vian fina bildo. Kaj per tio, ĉiu alia konstruo procezo povas uzi la saman tavoloj kaj la same-- esence Docker cachés tiuj tavoloj. Tiel ke se mi faras la saman ĝusta procezo, sed anstataŭ instali PHP, Mi instali Python. Ĝi tuj uzos Apache kaj Ubuntu. Por ke maniero vi utiliganta via disko. Ĝi estas utiliganta la kaŝmemoron kaj disponeblaj bildoj tie. La fina peco estas Registro, kiu Tiel vi disdoni viajn bildojn. Kaj, kiel mi menciis antaŭe, Tie estas Nubo versio de ĝi, kio estas Docker Nabo. Vi povas iri kaj esplori multajn, esence ĝi estas publika SAS produkto kiu Vi ankoraŭ povas havi privatajn bildojn, sed tie estas multe da publika bildoj. Ĝi estas fakte senlima, vi povas puŝi senlima publika bildojn tie. Kaj jen kiel vi povas kunlabori kun via teamo. Vi povas simple atentigi ilin ĉe vi Repo kaj ili povas elŝuti ĝin aŭ via bildo kaj ili povas malŝarĝi ŝin. Do sufiĉas la diskutpaĝo. Kiu volas vidi iujn donas realan rapidan? Bone. Do jen mi havas. Ca vi uloj vidi mia ekrano? Bone. Do mi havas Docker kurante tie, do mi povas kontroli it's-- Jen la versio de Docker ke estas kurante. Ne faru Docker info. Kontrolu ĉiujn informojn pri kiom da bildojn ili havas, kaj tiel plu kaj tiel plu. Docker PS, nenio estas kurado. Kroĉitaj tiuj. Do la unua afero Mi volas fari estas spektaklo vin kiel vi povas facile kuri ujo. Do la belecon ĉirkaŭ Doktoro run, se ĝi reale ne trovas bildon loke, defaŭlte ĝi parolas al Doktoro Nabo kaj provas trovi ŝin tie kaj malŝarĝoj por vi. Do ĝi inkludas Docker tiri komando, nature. Do se mi faras Docker run, saluton-mondo. Do, unue ĝi tuj provi lokalizi ĝin. Alie, kiel vi povas vidi ĉi tie, ĝi povus ne trovi ĝin loke. Ĝuste nun ĝi ĵus tiris du tavoloj kiu faris tiun bildon kaj mi kuris ĝin. La saluton-mondo estas nur resume eliroj, kion vi faris. Do tiu estas la plej facila, unu la plej facilaj ekzemploj. Do efektive mi nur kuris kaj eksigita la ujo reala rapida. Se mi volas run-- kaj sur la vojo, se Mi volas fojon ke, nur do vi scias, jen kiel longe ĝi prenas por fakte turnadi supren kaj enhavas. Ni mezuras ĝin en milisekundoj. Do vi povas vidi kiom tiu povas reale helpi vin ne nur en testado, sed ankaŭ eĉ deplojo. Do jen rapidan noton sur tio. La sekva afero mi estas tuj faros estas reale kuri bildon mi jam preparis. Do Docker run. -d estas ĝuste flagon diri ĝi kuras en la fono. Kaj -p asignas certaj havenoj. Ĉar defaŭlte, la ujoj estas izolitaj, tiel vi devas specifi ĝuste kiel povas aliri ilin. Kaj en ĉi tiu kazo, mi diras Docker mapi hazarda haveno sur la gastiganto al specifa haveno ene la ujo mem. Kaj tio estas esence kie la image-- espereble tio estas la ĝusta unu. Do ĝi faras paralelajn elŝutoj ĉiu de tiuj manteloj kiel vi povas vidi ĉi tie. Tiuj estas de la manteloj farante Fine bildo kiun mi konstruis. Ĝi tuj prenu duan. Kaj voila. Do nun se mi faras Docker ps, mi devus vidi iun kiu kuras. Mi devus vidi la ID, la bildo ke ĝi estis bazita for, kaj la komando kiu estis ekzekutita. Kaj kiel aliri estas esence vi iros al tiu haveno. Do mi tuj iras to-- ĉi Estas Mi kuras sur AWS. Mi tuj iros al 32769. Oops. Kaj tie ni iru. Do tiu estas fakte nur reta servo kiu montras kiu ujo ĝi estas estanta servita de. Do vi povas vidi ke ĝi estas el ujo a9f. Kaj tie ĉi estas la nomo de la ujo. Do vi infanoj povas vidi kiom rapide estis efektive ne nur tiri sed ankaŭ deploji tiu ujo. Nun la sekva paŝo estas rigardi en Dockerfiles kaj kiel ni povas reale konstrui novajn bildojn. Mi simple tuj iros akiri klonon, a Specimeno Dockerfile bazita sur la pli frua diagramo, la de Apache kaj PHP. Espereble mi memoras mian repo. Do mi havas mian dosieraro nun. Kaj vi tuj vidos tiu multe reale. Mi ne instalis arbo. Do esence vi tuj vidos kiel via fontkodo dokumentado ĉirkaŭ ĝin, kaj tiam Dockerfile sur kiel reale paki ĝin. Do estas nur specimeno PHP ke eĥoj saluton CS50. Do se mi volas kuri ĝin, Mi faros Docker muntaĵo. Mi devas konstrui ĝin unue. Mi tuj ajn demo_cs50. Kaj vi bezonas etikedon al ĝi ankaŭ. Do ni nomas ĝin v1 pentras. Do kiel mi priskribis antaŭe, kion mi faras hodiaŭ estas fakton mi Docker iri uzo that-- reale, pardonon, mia malbona. Ni ne rigardu ĉe la Dockerfile mem. Do la solaj aĵoj en ĉi tie estas index.php tiel kiel la README dosiero kaj Dockerfile. Do se vi prenas rigardi la Dockerfile, do estas tre simila al kio Mi priskribis antaŭe. Ĝi estas nur aro de paŝoj kiuj Docker ekzekutas kreante kaj ŝirante malsupren ujoj kaj [? rakonti?] ilin en bildon. Kaj esence vi povas Konsideru [inaudible] ĝi here-- sed tiu estas de la loka repo. Ĝi tuj iros kaj kroĉi index.php. Do tio estas la sola fonto kodo kiu estas reale parto de via apliko. Ĉiuj ĉi estas resume operaciumo fontanería, akiranta la dekstra pakojn kaj Apache kaj PHP, kaj whatnot. Sed tiu estas efektive prenanta index.php kaj kompromitante ĝin en la kontenero, en la bildo. Do se vi iras antaŭen kaj kuri la komando de faranta la sekvantaron, ĝi estas going-- reale, tiu povus preni iom. Espereble ĝi ne prenas tro longe. Do vi povas vidi la paŝojn. Kaj mi kuraĝigas vin iri hejmen hodiaŭ kaj provi ĝin. Kaj Mano priskribos kiom precize vin fari tion. Sed estas vere granda vidi ekzakte kio okazas malantaŭ la scenoj. Sed estas ridinde facila konstrui bildoj kaj deploji ilin uzante Docker. Ĝi prenas iom longe ol mi atendis. Ni vidu kio okazas kiam you-- malvarmigi. Do kiel vi povas vidi, ĉiu el tiuj ŝtupoj reprezenti liniojn en la Dockerfile. Kaj ĝi montras ĉi tie ke sukcese konstruis ĉi bildo. Do se mi faras Docker bildoj, mi tuj vidi ĉiujn bildojn kiuj mi havas loke. Kaj unu el ili nomas mia salutnomo, kaj la nomon de la bildo, kaj la etikedo representing-- ĉefe ĝi estas versio etikedo. Do nun, se mi volas kuri ĝin, mi faras Docker run. Kaj mi nur volas fari -d -P. Ĉu v1. Do mi povas vidi nun ke mi havas du ujoj kurante, kiu mi ĵus kreita kaj la saluton Docker kiu mi ricevis lastan. Kaj vi povas vidi ĉi tie ke ĝi atribuis malsama haveno. Do, se mi iros al la sama IP sed atribui ĝin malsama port-- espereble mi ne. Do nun tiu estas apliko ke mi ĵus deplojiĝis. Se mi volas fari ŝanĝojn, mi povas rapide redakti la fontkodon kaj fari la sekvan. Ni faru saluton Harvard. Do nun kio okazas okazi estas ke mi tuj etikedi ĝin per malsamaj version-- ho, Ne ĉi guy-- etikedu ĝin kun malsama versio. Kaj vi tuj Konsideru do vi uloj atendas ĝi preni la sama kvanto de tempo konstrui ĝin duafoje aŭ ne? Bone, kaj iu scias kial? Parolu supren. Spektantaro: [inaudible] Nicola Kabar: Estas esence ni nur ŝanĝas unu el la postaj paŝoj. Kaj do ĝi estas tuj uzi la kaŝmemoro kaj uzi ĉiun el tiuj tavoloj. Kaj tio estas vere iuj de la murdisto trajtoj de Docker Tiel ĝi fakte ekspluatas kaj reutiliza transprenado via disko por la sama ĝusta pecoj de informo. Do se ni faros la samon, ĝi prenis nur paron sekundoj. Se ni volas redeploy-- tiel nun Mi devus havi tri ujojn. Sed ĉi tiu estas estanta servis sur the-- sep unu. Do nun estas la tria ujo. Ĉiuj kompreni kion mi ĵus faris ĉi tie? Kaj nun se vi volas dividi ĉi ujo reala rapida kun viaj amikoj, vi povas nur fari Docker puŝi la nomo de la ujo, espereble. Do nun ĝi tuj puŝi ĝin to-- Mi ne subskribis tien. Pardonu pri tio. Sed mi ne tuj solvi tiun jam. Sed esence ke unu komando Estas ĝuste tuj supren puŝi ĝin. Kaj vi tuj povos vidi ĝin se vi iras por Docker Nabo Kaj vi ensalutas, vi estas tuj povos vidi ĝin. Kaj tiam vi povas simple atentigi ajn tuj uzi tiun bildon por iri kaj tiri gxin. Kaj ili povas uzi ĝin. Kun tiu, espereble Mi specon de pruvis kiel facile estas labori kun Docker. Kaj mi simple tuj donu ĝin al la Mano. Kaj li tuj prenos ĝin de tie. Mano markoj: Bone dankon, dankon Nico. Do kio? Do unu el la aĵoj mi volis fari estas kunmeti kial ĉi estas important-- kial Docker kaj kial ujoj estas tia grava noveco, nova maniero de fakte faras programaro. Kaj antaŭ mi faras, mi tuj nur enkonduki kelkajn statistikojn. Mi ne tuj legi ĉiujn tiujn. Sed ĉi montras vin tre pri kiom populara ĉi estas en la komunumo. La kerno Docker teknologioj estas malferma fonto. Do jen Docker Engine, Verki, Swarm, faskon de aliaj aĵoj estas ĉiuj malferma fonto. Kaj ni havas, kion faris mi diri, 1.300 kontribuantoj. Vi vidas nun, se vi rigardas la numeron de laborposteno malfermoj, lastfoje ni rigardis, ĝi estis proksimume 43,000 laboron malfermoj specife menciante familiareco kun Docker. Centoj de milionoj de bildoj havas estis elŝutita de Docker Nabo. Kaj, nu, multe pli grandaj statistikojn. Por tiuj kiu estas scivola, ĝi estis origine skribita en Python kaj tiam reskribita en Iru. Kaj ĝi estas nur malfermi source-- ĝi estas nur estis liberigita dum ĉirkaŭ 2 kaj 1/2 jaroj, kio signifas, ke en 2 kaj 1/2 jaroj, ni vidis treegan kvanton de kresko kaj graveco de ĉi tio en la komunumo. Kaj tial mi volas paroli iomete pri kial. Do ĝuste ripeti iuj de Nico ŝlosilaj punktoj, Docker estas rapida. Ĝi estas portebla. Ĝi estas reproduktebla. Kaj starigas normon medio. Kaj what-- ĉi estas mia crappy elradikigi monolitoj slide-- kio ĝi estas helpanta homojn fari, kiu multa la programaro industrio ekfaris en la fruaj 2000-aj jaroj, estas movanta el tiuj monolita sola aplikoj kie ĉiu dependeco devis esti provita antaŭ la tuta app havis esti deplojitaj, kiu povus signifi paĝaro nur got deplojitaj iam ĉiu tri monatoj, aŭ pli, al multe pli servo orientita arkitekturo aŭ componentized malsama tipo de apliko arkitekturo. Kaj tiel permesanta tiujn speco de arkitekturoj ke utiligi Docker kuri en ĉi tiuj tri precipaj areoj de disvolviĝo, kiun estas disvolviĝo skribi vian realan kodo, elprovanta via kodo, kaj deplojante ĝin. Do kial estas tiu grava? Se vi estas a-- lasu min doni ekzemplon. Se vi estas retejo aparato desarrollador, vi estas evoluantaj retejo kiu estas bazita sur la datumbaza ke Davido produktis super tie. Pardonu David, Mi vokas vin. Se vi deziris deploji la tuta afero, oni kredus atendi sub tradicia monolita softvarigo medio, vi devus atendi ĝis estis farinta kun la datumbazo antaŭe vi povis fari ajna ŝanĝojn al via retejo. Vi devus redeploji la tuta apliko fari tiel. Kaj kio Docker helpas vin fari estas ĉiu persono laboro sur malsamaj komponantoj kaj ĝisdatigi ilin kiel ili iras, nur farante certa ke la interfacoj resti la sama. Do kion ĝi faris estas ĝi estas ŝanĝita personoj de faranta ĉi tiujn amasajn monolita architected programaro kiu deplojitaj ĉiumonate al kontinua integriĝo kaj kontinua disvolviĝo medio. Nun ĉi tio ne estas unika por Docker, sed Docker faras tiel multe pli facila, kio signifas ke vi estas esence konstante deploji. Ni parolu al entreprenoj, kiuj estas disfaldante publika Facing aplikoj milfoje tage ĉar ili vidas la valoron en nur farante malgrandaj ŝanĝoj, kaj tiel longe kiel ĝi kuras tra la provoj, lasante ĝin eliri en produktado. Nico estis ĉiam diras al mi pli frue ol en multaj medioj, la normo vivociklo de ujo estas mezurita en sekundoj, dum virtuala maŝino povus esti mezurita en monatoj. Mi volis preni iometan turni tie ĉar mi estas ĉe eduka institucio. Mi volis doni ekzemplon de kiel tio funkcias en eduka esploro situacio. Do ekzistas organizo nomata bioboxes. Bioboxes faras ADN analizo por esploristoj. Nun kion ili trovis estis ke kiam a researcher-- kaj tio ne la kulpo de iu speciala researcher-- sed kiam esploristo deplojis algoritmon por analizi, En aparta maniero, specimenon de ADN, ili skribus la programaron, eldoni tiun, eble por GitHub aŭ alie, kaj tiam ili estis faritaj. Nu la problemo estis ke ne nepre reproduktebla. Ĉar por kompreni la programaro, ili estus starigita por la ĝusta disvolviĝo medio ke tiu esploristo uzita, kutime ilia tekkomputilo aŭ servilo, aŭ datumoj centri ke ili uzis. Kaj konsekvence, ĝi estis tre malfacila reprodukti esplorrezultoj kiam analizi DNA specimenoj rigardi ĉe aĵoj kiel incidence-- kompari efiko de koro atakoj bazitaj sur certaj genoj ĉeestante, ekzemple, aŭ kanceron risko, aŭ iu el la aliaj specoj de aferoj. Do kion ili faris estis anstataŭe ili komencis krei kontenerojn. Kaj vi povas iri al bioboxes.org, estas granda organizo. Kaj kion ili faras estas ili produktas ujoj bazitaj sur esplorado. Kaj poste kiam ajn iu sendas en ilia provaĵo, ili povas ruli ĝin. Kaj ĝi havas la tutan medion bezonis kuri ke algoritmo kaj produkti la rezultojn. Kaj ili estas trovanta ke ili estas multe pli verŝajna kaj multe pli rapide povis reveni rezultojn al homoj. Kaj fakte, kion homoj faras kuras sian propran analizon sur ADN, sendado ke en al bioboxes, kaj tiam biobox nur prenas la datumojn, kuras kontraŭ la vario de malsamaj ujoj vidi malsamajn rezultojn bazitaj sur malsamaj esploroj. Do estas tre potenca maniero en kiu esploristoj povas fari unu ekzemplon kiu permesas aliaj homoj por provi kaj reprodukti la rezultoj. Do kiel vi komenci? Ni bone apogitaj sur Linukso. Do se vi volas instali ion sur Linukso, vi uzas vian normo pako direktisto instali. Se vi uzas Debian, estas apt get. CentOS estas yum. Fedora RedHat estas rpm-- mi ne memoras. Ĉiukaze estas ĉio tie. Ni apogas grandan gamon de dissendoj Linukso. Vi povas kontroli tiujn el. Ni ankaŭ havas eblojn por vi povis kuri sur Mac aŭ Windows. Nun Nico menciis antaŭe ke ĝi estis nur apogita sur Linukso. Tio estas vera ĉar ĝi bezonas Linuksa kerno. Sed, vi povas kuri en virtuala maŝino. Kaj kion la Docker Iloj faras, kion vi povas elŝuti, ĝi donas al vi, ke virtuala maŝino. Do nur rapidan 48 dua, mi opinias, elŝuti. Vi nur serĉu per Docker Iloj, elŝutu ĝin al la Mac, kaj tiu parto estas de Kompreneble akcelis pro kiu volas spekti download signalo? Norma Mac instalado, kaj tiam vi tuj vidos Jerome metis en sian pasvorton. Tio estas tre ekscita. Kaj tiam ĝi instalas tuta aro da iloj. Kaj aparte ĝi volo instali komandlinio. Kaj tiam vi povus vidi Jerome elprovanta liajn bildojn. Kaj tiam bazita sur tio, vi povas vidi ke YouTube pensas ke Nico estas interesita en Star Wars, The Jimmy Kimmel spektaklo, kaj mi pensas Ellen. Mi pensas ke tiu lasta estas klipon el Ellen spektaklo. Do Docker Iloj kvankam venas kun pli ol nur Docker Maŝino. Do Docker Maŝino estas Jenon helpas vin starigi virtualan maŝino sur via Windows aŭ Mac-- via Windows skatolo aŭ via Mac box-- kaj helpas vin fari provizoj, Sed ĝi ankaŭ venas kun Swarm kaj Compose, kiu estas desegnita helpi vin fari grandajn skalo deplojoj de via apliko. Do se vi volas administri grapoloj de nodoj, kukojn ujoj, Verki kaj Swarm estas la vojo iri pri tio. Kaj kompreneble ĝi venas kun Docker Engine kaj Kitematic, Kiu estas tiu labortablo GUI. Mi devus mencii ankaŭ Docker Registro, kiu ne estas inkludita en Iloj, sed estas vojo por vi kuras viajn proprajn registroj de Docker Bildoj kiel Docker Nabo, sed vi povas ankaŭ simple uzi Docker Hub kiel vojo fari tion. Kaj, intrigo tordi, vi vidas ĝi kuras en ujo. Kaj tiel estas kiel ni estas disdoni niajn diapozitivojn. Ĉi tuta prezento estas fakte HTML glito ferdeko. Kaj ĝi kuras en ujo, kiun vi povas akiri by-- Nicola Kabar: Jes, tiel ĝi estas kuranta plenan tempon sur mia Max. Kaj mi prezenti gxin. Kaj vi nur faru Docker post vi instalas viajn Iloj. Vi povas simple fari Docker run kaj akiri ĝin, kaj uzi la diapozitivoj. Mano Marks Kaj jen ĝi. Do ni dankas vin ĉiujn pro veni. Kaj ni estas feliĉaj por respondi demandojn. Mi devus mencii antaŭ iu lasas ekzistas ĉemizoj tie. Pardonu iu ajn kiu rigardas tio sur Livestream aŭ video, sed ni havas Docker T-ĉemizoj tie. Kaj ni scias Docker studentoj, kaj en mia sperto, profesoroj ankaŭ, kiel libera vesto. Do dankon pro veni eksteren. Kaj sekvi nin en Twitter se vi volas, aŭ ne. Mi ne zorgas. Ankaŭ sekvi Docker en Twitter. Jen ankaŭ interesa. Kaj poste jen ĝi. Docker.com. Dankon. [Aplaŭdo]