[MUSIC JOC] DAVID MALAN: Bine. Vă mulțumesc foarte mult pentru că ați venit. Acest lucru este seminar pe CS50 Docker, un tehnologie care noi înșine și pe le CS50 au inceput sa foloseasca de ceva timp acum. Deci numele meu este David Malan, am preda Introducere Harvard la Informatică. De ceva ani, am fost avertizat de studenți downloadable client-side masini virtuale pe care le face problemele lor seturi. Că am trecut de acum la un mediu Cloud care folosește de fapt, această tehnologie numit Docker, astfel că toate CS50 elevii au acum de recipiente proprii Docker pe care le veți auzi în curând despre toate. Mai mult decât atât, pe serverul lui CS50 grup lateral, de mai mulți ani am fost folosind serverul Amazon Cloud. Am fost difuzate individuală masini virtuale. Asta, am început să tranziția la aceste lucruri numite containere Docker astfel încât toate aplicațiile noastre sunt acum perfect izolat una de alta. Deci, pentru că și mai mult, permiteți-mi să să introducă prietenii noștri, Nico și Mano, din Docker sine. NICOLA Kabar: Mulțumesc, David. Buna tuturor. Numele meu este Nico și acest lucru este Mano. Suntem din Docker. Vom vorbi about-- oferindu-vă voi un intro la Docker, și, sperăm, spre sfârșitul din această discuție, puteți realiza cât de mult puteți utiliza medic pentru a oxalat de dezvoltare aplicația și de implementare. Deci, vom începe reale rapid cu unele informații de fond. Descrie ceea ce Docker este despre toate. Cum functioneazã? Cum se proiectat? Voi face unele demo-uri. Și Mano va fi descrie cum puteți folosi Docker și oferindu-vă măsuri specifice cum puteți începe. Aș aprecia dacă voi poate deține off pentru întrebările dvs. spre sfârșitul. În acest fel, s-ar putea să fie abordarea celor întrebări în întreaga prezentare. Așa că vom lăsa ceva timp spre sfârșitul de întrebări. Deci, doar repede, care are lucrate efectiv vreodată pe Docker, ca a jucat cu ea? Incredibil. Misto. Grozav. Deci, am de gând să încep cu unele de istorie. Deci, înapoi în anii '90 și începutul anilor 2000, practic ca dezvoltatorii web, dezvoltatorilor de aplicații, când s-au dus pentru a implementa o aplicație a fost legat de goale de metal. A fost un singur server. A fost o singură cerere. In mod traditional, un exemplu ar fi ca o stivă LAMP, în cazul în care ați avut de fapt la aduce la piscina de resurse. CPU, memorie, disc, rețea, instalarea sistem de operare pe deasupra. Dacă sunteți de servire ceva, dacă întâmpinați de fapt server de web, aveți nevoie de ceva de genul Apache pentru a servi. În cazul în care cererea dumneavoastră are nevoie de baze de date, backhand, v-ar instala ceva cum ar fi MySQL, și așa mai departe. Și dacă ai nevoie de timp alerga, PHPs și munca PHP Python au fost acolo. Și astfel am avut de fapt la ia aceste măsuri pentru să se ridice de cerere și să fie difuzate. Dacă ai nevoie de mai multă putere de calcul de tine, practic avut de a apela Ops tipul tău sau gal pentru a merge și rack o nouă bucată de hardware, conectați-l, și va trebui să repetați cele procesele nou și din nou. Deci, acest proces a fost relativ scump. A fost cu siguranta foarte lent. A fost ineficient. Și într-o mulțime de cazuri, dvs. hardware a fost insuficient. Deci, la sfârșitul anilor '90 și începutul anilor 2000, de virtualizare hardware a venit peste. Și, după cum puteți vedea aici, în imagine, practic ceea ce au făcut este captată la piscina de resurse hardware gratuit și un fel de a servit celor pentru straturile superioare, În acest caz, sistemul de operare oaspete. Și ideea de masini virtuale a venit peste și că într-adevăr a ajutat Cloud de calcul cum o știm astăzi. Deci, ceea ce a însemnat că este de tine poate rula mai multe masini virtuale, care a însemnat mai multe stive, multiple aplicație pe o mașină fizică aceeași. Acest siguranta a ajutat la Viteza de implementarea aplicațiilor. Categoric cu cheltuielile. Nu trebuie să mergi și petrece energie, timp și resurse pentru a rack- mai multe servere pentru a ajunge la mai mult de calcul. Și viteza de fapt aduce Aceste resurse up este mult mai rapid. Grozav. Deci am rezolvat foametei în lume, nu? Nu, nu chiar. Deci, virtualizare fel de mult ca este de fapt a ajutat, rezolva problema, a introdus de fapt o mulțime de provocări. Hypervisor siguranta a introdus o mulțime de complexitate, manipulare cei care stau la baza bazin de resurse. E mai greu în sensul că, înainte de ai avut un singur sistem de operare pe care este ca trei, patru concerte pe disc. Acum, dacă aveți 10 de mașini pe un singur hardware aveți pentru a se multiplica că de numărul de mașini. Este cu siguranta mai mult scump într-un sens încă trebuie să te licențiere pentru tehnologia de virtualizare dacă nu e open source. Dar, să nu ia toate credit de la virtualizare. Pentru că ceea ce sa întâmplat este există o mulțime de stive și o mulțime de software tehnologii care au fost activate de cât de repede au putut pentru a obține la resursele cu boom-ul Cloud. Deci, astăzi o singură aplicație sau serviciu poate folosi oricare dintre următoarele runtime sau baze de date. PHP, Python, MySQL, Redis, fleacuri. Deci, există o mulțime de complexitate pe acest numărul de stive pentru a aduce de fapt, un singur serviciu. Și, împreună cu faptul că, ai avut o mulțime de resurse care stau la baza sau infrastructura Tipuri de a testa practic implementat și ia la producția aceste cereri că sunteți în curs de dezvoltare. Mai ales ca echipele au Cultivate de lucru cu privire la aceste aplicații, există o mulțime de complexitatea și provocările care au fost aduse pentru a se asigura că cycle-- practic de aplicare ciclu de dezvoltare, este de fapt de succes. Deci, faptul că cererea dumneavoastră este de lucru la nivel local pe dumneavoastră VM locală nu garantează că colegul dvs. este de gând să aștepte aceleași rezultate. Și când echipa de operațiuni este implicat în luarea ceea ce ai și implementarea în producție scară, de asemenea, nu există nici o garanție că de fapt se va întâmpla. Deci, acest lucru ne lasă cu un adevărat big-- o mulțime de semne de întrebare, o mulțime de provocări, de fapt cu care se confruntă în mod similar înapoi în zilele. Și asta ne-a amintit de industria navală. Deci industria navală a avut o mulțime de bunuri, după cum puteți vedea pe partea stângă. Și pe partea dreaptă, există o mulțime de, practic, modalități de a livra aceste produse. Și ce se întâmplă ca un cuplu oamenii s-au adunat și au zis: avem nevoie pentru a standardiza modul în care am expediat de fapt aceste produse. Și boom-ul, aveți intermodal container. Deci, au fost de acord asupra cel mai Dimensiunile obișnuite pentru container. Cum să se ocupe de ei. Ce exact metoda aveți nevoie pentru a le încărca și descărca lor. Și, prin urmare, că într-adevăr a ajutat industria navală. Acum, mai mult de 90% se concentreze transportat la nivel global sunt utilizarea acestor containere. Și care scade cu siguranta cheltuielile, precum și pagubele datorate de transport maritim. Așa că am să ia același model și noi se aplică software-ul de dezvoltare două app arhitectura, în sensul că conteinerizare a luat virtualizare sus cu un nivel. Deci, în loc de a face asta la nivel hardware, a devenit mai mult o exploatare nivel de sistem de virtualizare. Și facem asta prin furnizarea de fiecare aplicarea în propriul său ușor, izolat, runnable, și portabil, cel mai important, o modalitate de a pachet de fapt tot ceea ce are nevoie pentru a rula. Oriunde se poate rula. Deci, indiferent dacă sunteți-l rulează pe mediu dev local, productia mediu, intermediere sau de testare dumneavoastră. Indiferent de ceea ce stă la baza Infrastructura este acolo, ai avut o aplicatie de lucru funcțional. Deci, asta e exact ceea ce, practic, containere face la această problemă. Ei i se adreseze cu ambalaje în așa fel că se poate garanta că este implementat cu succes, indiferent unde trăiește. Deci, dacă ai de gând cum ar fi, Bob e încă OK. Daca te confundat cu ceea ce vreau să spun, Am de gând să fie elaborarea cu privire la acest. Deci, cum face Docker sine se potrivesc în această imagine? Deci Docker este o platformă deschisă la ușurință, sublinia cu usurinta, pentru a construi nave, alerga, auto ușor portabil suficiente containere app oriunde. Deci, dacă iei ceva de la acest Discuție, vă rugăm să luați următoarele. Dacă aveți de funcționare app la nivel local și sa dezvoltat în utilizarea platformei Docker, se așteaptă acesta să fie instalat cu succes. Indiferent de ceea ce este infrastructura de bază. Deci, dacă aveți un Docker container și este de lucru, atunci atâta timp cât există o Docker motor, pe de altă side-- în cazul în care infrastructura de funcționare este folosind orice Cloud, fie că este AWS, sau Google, Microsoft sau, sau la oricare dintre nori publice, sau propriul Cloud, sau stivă deschis Nor, sau mediul local. Dacă aveți un motor funcționare, înseamnă că se va fi implementat cu succes acolo. O să fie difuzate exact același comportament cum îl proiectat să fie. Deci, dacă ne uităm at-- am de gând pentru a merge prin ceea ce de fapt sunt în principalele componente ale Docker. Deci motorului este la baza Docker. Este creierul. Acesta orchestrează clădire, de transport maritim, și implementarea și gestionarea containerele înșiși. Voi săpa în ceea ce face Motor în mai multe detalii într-o secundă. Practic, pentru că doctorul a fost construit în jurul valorii de arhitecturi de server client, astfel încât, în scopul de a interacționa cu Motorul ai nevoie de un fel de client. Imaginile sunt șabloanele din care containerele sunt construite din. Deci, imaginile sunt de fapt fișiere doar statice. Template-uri și containere este, de fapt ceea ce este se execută în timpul rulării pe care este de servire aplicația sau de a face ceva cu datele. Registrul este abordată ca o problemă de cum de fapt distribuiți imagini. Deci, dacă aveți nevoie pentru a partaja o imagine care a lucrat pe colegul dumneavoastră sau la echipa ops, tu l utilizați utilizând Registry. Puteți descărca o sursă deschisă versiune a acestuia care a lucrat pe Docker și deschideți surse. Sau puteți folosi Docker ajutor, care este versiunea Cloud pentru a împinge și trage imagini acolo. Asta e un lucru foarte mare. Pentru că există o mare ecosistem în jurul Docker și este într-adevăr puternic folosind hub. Deci, pentru a rezuma aici, acest lucru este modul în care minimalist client flux de lucru Docker. Interacționați cu gazda, în acest caz este de daemon docher. Este același lucru ca și motor. Puteți face comenzi, cum ar fi Docker construi, trage, a alerga. Și motorul în sine merge și face acele lucruri. Deci, fie că interacționează cu Registru pentru a trage acele imagini și straturile ale imaginilor. Fie dacă doriți să implementați, rulați containere,-i omoare, arunca-le în jos, fleacuri. Deci acest rezumă fluxul de lucru de toate aceste componente. Deci, dacă luați în fiecare componente de la sine. Deci Motor, e doar un demon. Va fel de-l joace pentru a sprijini l pe Linux, pentru că nu necesită anumite caracteristici kernelul Linux. Dar Windows funcționează pe a face același lucru. Ar trebui să fie sprijinite de Windows Server 2016. Deci, din nou, responsabilitățile cu motorului este de a, sau sunt, construi imagini. Trageți imagini din Docker Hub sau propria Registry. Dacă ai terminat cu acele imagini sau creați o nouă imagini, te poate împinge cele înapoi la registru pentru a le distribui la alte echipe. Și încearcă să-l conțină pe plan local și de a gestiona ciclul de viață containere la nivel local. Acesta este construit în jurul HTTP REST API. Deci tehnic puteți scrie propria client atâta timp cât acesta folosește HTTP, care este un foarte mecanism standard pentru a vorbi cu motor și o mulțime de alte servicii. Și puteți vedea de la aici că, indiferent de ce infrastructurii este, atâta timp cât toate can-- aveți nevoie este o operare sistem, Linux special. Și puteți instala Docker Motor pe partea de sus de care și l-au rulează și orchestrează, practic, toate acestea app unul, doi, și trei sunt containere reale. Așa că e Engine. Așa cum am menționat mai devreme, deoarece aveți nevoie pentru a interacționa cu motor, e clientul. Dar, de fapt atunci când instalați Docher, IT nave cu o. Așa că este instalat, deci este un singur binar. Și tu poți face apeluri locale pentru Docker motorul. Sau apeluri de la distanță de la distanță. Motoare Ea folosește HTTP, ca Am menționat mai devreme. Există un client GUI numit Kitematic din Docker. Și acolo sunt cu siguranta o mulțime de alte persoane care sunt construirea o mulțime de GUI care implementeaza practic unele HTTP solicită să vorbească cu motor. Doar unele comenzi de probă. Dacă veți face versiunea Docker, ar fi vă arăta versiunea client, precum și versiunea de server. Dacă veți face multe informatii Docker se va să vă spun toate informațiile despre cât de multe containere se execută sau create, cât de multe imagini aveți, și așa mai departe și așa mai departe. Aici am, în următorii să Ultima box, am doctore alerga. Deci, asta e cum eu sunt de fapt crearea container. Și eu l dau ecou Hello World și să doarmă pentru un al doilea și fleacuri. Și puteți vedea rezultat. Deci e în curs de desfășurare. Și similar cu PS Linux, puteți vedea toate procesele și, în acest caz, toate containerele de funcționare. Înapoi trimitere Acesta a containerul am creat. Deci, acest lucru este foarte important, deoarece, cum ar fi, poate fi un pic confuz. Deci, imaginile sunt numai pentru citire-the colecție de fișiere, nu? Ele sunt ceea ce containerul noastră se bazează pe. Dar acestea sunt doar în citire numai. Astfel încât să începeți cu o imagine de bază. Acesta tinde să imite-OS cum ar fi, așa Ubuntu, CentOS, imaginea de bază fleacuri. Și apoi începe construirea pe partea de sus a că, anumite straturi, care va face până imaginea final, rezultatul final aici. Și fiecare dintre aceste straturi ar trebui să aibă o imagine părinte că face referire atunci când de fapt, vrea să creeze. Ele sunt imuabile, în sensul că numai-citire, deoarece acestea sunt, nu poți de fapt face modificări la acestea. Le puteți folosi pentru a crea un container de la o imagine, care va apela tot ulterioare imagini cerute sub acesta. Puteți face modificări la un alt strat, este un strat de rescriere Voi vorbim despre un al doilea. Dar fiecare dintre aceste straturi nu sunt niciodată modificate. Practic imagini folosi ceva numit System, UFS Uniunii fișier. Și acolo sunt diferite de stocare backend care utilizează această tehnologie. Și asta înseamnă că reunește sisteme de fișiere diferite pentru a le face arate ca unul. Astfel încât să puteți de fapt, de la o perspectivă cerere, aveți un top al o vedere care arată toate sistemul de fișiere diferite necesar pentru ca aplicarea să ruleze. Dar sunt de fapt, în acest sens, ele sunt de fapt, în locuri separate și de a fi utilizate de către alte recipiente, precum și. Deci, după cum puteți vedea aici că dacă vom începe cu imaginea daemon ca o imagine de bază, și apoi mergem în și se adaugă [? emacs?] și apoi acesta este un alt strat. Și apoi adăugați Apache. Asta e un alt strat. Și apoi ne petrecem container din care. Fiecare dintre aceste imagini, fiecare dintre aceste straturi, este distinct și poate fi reutilizate de alte recipiente. Dacă te uiți la containere sine, sunt într-un fel ca VM-cum ar fi, dar nu este tratată în același timp. Deci, nu au, de vedere tehnic, sistem de operare complet sub ele. Ei folosesc kernel unic a sistemului de operare gazdă. Și au construit pe deasupra. Ei imita in modul in care arata. Ei imita fișier lor rădăcină al sistemului de operare. Dar ei de fapt nu sunt replicarea. Deci, în loc de a avea straturi imuabile, ultimul strat, care este recipientul în sine, este un strat de citire-scriere. Care ruleaza, de asemenea, procesele cererii dumneavoastră. Și depinde de straturile de bază. Fiecare container este creat de la o imagine. Și că imaginea poate fi un singur strat sau multistrat imagine. Și vreau să rețineți aici că Docker foloseste puternic, sau se bazează pe mecanismul Copy-On-scriere. Așa că, de fapt, dacă nu sunteți efectuarea de modificări la container, nu este de gând să ia spațiu suplimentar. Deci, asta e, practic cum rezuma un Copy-On-scriere. Se va accelera cu siguranta timpul de boot pentru container. Pentru că, dacă nu faci modificări ale containerului, este utilizarea ceea ce este deja acolo. Deci, cum funcționează de fapt. O parte din ea e ca, chiar acum, folosește cel puțin două kernel-cheie caracteristici. Și asta este de fapt ceea ce creat acest nivel de izolare pentru containerele înșiși. Aceste caracteristici sunt spațiile de nume și cgroups. Deci, spații de nume sunt o modalitate de a crea resurse izolate, astfel încât interiorul containerului în sine, Numai tu poți vedea anumite resurse. Precum interfața de rețea sau anumiți utilizatori sau fleacuri. Și acestea sunt doar vizibile și numai accesibil în interiorul containerului. Cgroup pe de altă limitele laterale cum utilizați aceste resurse. CPU, memorie, și disc. Când poți merge în, am înseamnă acele sunt de fapt caracteristici care au fost dezvoltate by-- acestea sunt o parte a kernel-ului Linux. Deci, ei nu au fost reinventate prin sau recreat de Docker. Docher le folosește. Ce Doctor făcut într-adevăr aici este de fapt Crearea orchestrată spații de nume pentru fiecare container și crearea cgroups astfel că este ridicol de ușor de a crea containere folosind aceste caracteristici. Desigur, așa cum am descris mai devreme, Uniunea Fișier Sisteme și Copy-On-Scrie adevărat ajuta viteza și discul utilizării containerelor. Și odată ce te dumneavoastră mâini în jurul valorii de Docker, veti vedea cât de repede este de a de spin de fapt, containere și lacrimă le în jos. Deci, dacă s-ar putea întreba, cum poate de fapt construi imagini? Construim imagini printr-un proces de creare a containere și fac modificări, modificarea le, și le comite în a deveni o imagine. Deci, este un pui și referință ou aici, pentru că toate containerele veni de la imagini și imagini vin din containere comise, în majoritatea cazurilor. Există trei opțiuni pentru a crea imagini. Am de gând să descrie prima și ultima. Puteți fie manual du-te și executați recipientul și de a face aceste modificări, ca tine ar face pe orice VM sau orice sistem de operare, cum ar ca instalarea de noi binare, adăugând sisteme de fișiere, și fleacuri. Și apoi iesiti, ca puteți vedea acolo. Sunt ieșirea container mea. Și apoi fac Docker comite. Și eu comiterea asta. Puteți vedea că numărul aici este doar un UUID, sau primele 12 biți de UUID. Sau bytes de UUID. Și apoi am sunat-l imaginea mea. Deci, acum Docker are grija de înregistrare tot ceea ce am făcut-o și crearea noii Imaginea pe baza acestei. Nu am de gând să vorbesc despre tar, dar există un fel puteți obține o singură, a crea un singur, sau de a face un singur imagine strat folosind arhive tar. Ceea ce am de gând să vorbesc despre asta și ceea ce este cel mai des folosit astăzi, este Dockerfile. Care este primul punct de vedere tehnic pas automat de Docker sine. Deci Dockerfiles sunt lucruri pe care sunteți vom vedea într-o mulțime de operațiuni repo github astăzi. Este practic doar un fișier text care descrie exact cum să construiască o imagine. Și pentru fiecare linie, se creează de fapt container, executa această linie, angajează că într-un container noua imagine, și tu, practic, l utilizați pentru toate operațiunile ulterioare până când ajunge la ultima imagine. Care este, în principiu Scopul final aici, la sfârșitul. Și după ce exec-- după ce scrie Dockerfile ta, care este pur în text, faci un Docker construi și numele imaginii. Și tu punct la care aceasta este în cazul în care Dockerfile este la. Și vă puteți aștepta pentru a vedea imaginea mea ca o imagine care aveți la nivel local. Așa că e doar un vizual exemplu de ceea ce se întâmplă. Începi cu o imagine de bază. Aveți o că într-un recipient care nu modifică imaginea de bază în sine. Dar creează în schimb un rescrie strat pe partea de sus a acesteia în cazul în care face schimbări, în care comite și repetați procesul până vei ajunge la imaginea finală. Și de a face acest lucru, orice alt construi proces poate folosi aceleași straturi și same-- practic Docker cache aceste straturi. Așa că, dacă fac același lucru exact proces, dar în loc de a instala PHP, Am instala Python. Se va folosi Apache și Ubuntu. Deci în acest fel te folosind disk. Este utilizarea cache și imagini disponibile acolo. Piesa finală este Registry, care este modul în care distribuiți imagini. Și, după cum am menționat mai devreme, există o versiune nor de ea, care este Docker Hub. Puteți merge și de a explora o mulțime de, practic este un produs care publică SAS puteți încă imagini privat, dar există o mulțime de imagini publice. Este de fapt nelimitat, puteți împinge imagini publice nelimitate acolo. Și acest lucru este modul în care puteți colabora cu echipa ta. Puteți doar să le arate la tine repo si ei pot sau imaginea sa descarcati și pot descărca. Deci, destul cu discuția. Cine vrea să vadă niște demo-uri foarte repede? In regula. Deci, aici am. Ca voi vedea ecranul meu? In regula. Deci, am Docker rulează aici, asa ca am poate verifica it's-- Aceasta este versiunea de Docker care rulează. Pot face info Docker. Verificați toate informațiile cu privire la cât de multe imaginile pe care le au, și așa mai departe și așa mai departe. Docker PS, nu e nimic de rulare. Concatenate cele. Deci, primul lucru pe care vreau să faceți este să spectacol vă cum puteți rula cu ușurință un container. Deci frumusețea despre Alerga medic, în cazul în care de fapt nu găsi o imagine la nivel local, în mod implicit se vorbește de Doctor Hub și încearcă să-l găsească acolo și descărcări pentru tine. Deci, aceasta include un Docker trage comanda, in mod natural. Deci, dacă am face o Docker run, salut lume. Deci, în primul rând se va pentru a încerca să-l localizeze. În caz contrar, după cum puteți vedea aici, nu a putut găsi pe plan local. Acum doar tras două straturi care a făcut această imagine și am fugit. -Lume salut este doar practic ieșiri, ceea ce au făcut. Deci aceasta este cea mai ușoară, unul cele mai simple exemple. Deci, de fapt, doar am fugit și încheiată containerul foarte repede. Dacă vreau să run-- și de modul în care, în cazul în Vreau să timp în care, doar ca să știi, acest lucru este cât de mult timp este nevoie pentru a de spin de fapt, și conțin o. Suntem o măsurare în milisecunde. Astfel încât să puteți vedea cât de mult acest lucru poate ajuta de fapt, nu numai în testare, dar, de asemenea, chiar de implementare. Deci asta este o notă de rapid pe care. Urmatorul lucru sunt de gând să faci este de fapt rula o imagine l-am pregătit deja. Deci, docher alerga. -d este doar un steag pentru a spune l să ruleze în fundal. Și -p atribuie anumite porturi. Pentru că de implicit, containere sunt izolate, deci va trebui să specificați exact cum le pot accesa. Și în acest caz, eu spun Docker pentru a mapa un port aleator pe gazdă la un port specificat în containerului. Și asta e de fapt în cazul în care image-- Sperăm că acest lucru este cel potrivit. Deci, ce face descărcări paralele fiecare de acele straturi după cum puteți vedea aici. Acestea sunt de straturile face imaginea final pe care am construit. O să ia un al doilea. Și voila. Deci, acum, dacă am face o PS docher, aș vezi ceva care se execută. Ar trebui să văd ID-ul, imaginea că acest lucru a fost bazat pe, și comanda care a fost executat. Și modul de accesare este practic te duci la acel port. Deci, am de gând să merg sa-- acest e că sunt o rulează pe AWS. Am de gând să merg la 32,769. Oops. Și aici vom merge. Deci, aceasta este de fapt doar un serviciu web care arată care container este fiind servit la. Deci, puteți vedea că face parte din container a9f. Și aici este Numele containerului. Deci, voi puteti vedea cât de repede se a fost de fapt de a trage nu numai, ci și implementa acest container. Acum următorul pas este de a uite în Dockerfiles și cum o putem de fapt construi noi imagini. Mă duc să iau clona, ​​un eșantion Dockerfile bazat pe mai devreme diagrama, cel de a Apache și PHP. Sperăm că îmi amintesc repo meu. Așa că am depozit mea acum. Și ai de gând să vezi acest mult de fapt. Nu am instalat copac. Deci, practic veti vedea cum documentația cod sursă în jurul valorii de l, iar apoi o Dockerfile pe cum să-l pachet de fapt. Deci e doar o mostră PHP care ecouri salut CS50. Deci, dacă vreau să îl rulați, Voi face docher construi. Trebuie să-l construiască mai întâi. Am de gând să-l numească demo_cs50. Și ai nevoie de un tag de prea. Deci, haideți să numim V1 dot. Deci, așa cum am descris mai devreme, ceea ce fac azi este să spun Docker să meargă utilizare that-- de fapt, îmi pare rău, greșeala mea. Noi nu a luat o privire la Dockerfile sine. Deci, singurele lucruri de aici sunt index.php precum și fișierul readme și un Dockerfile. Deci, dacă aruncăm o privire la Dockerfile, asa ca este foarte similar cu ceea ce Am descris mai devreme. E doar o grămadă de măsuri care Docker execută prin crearea și rupere jos containere şi [? numărare?] ele într-o imagine. Și, practic puteți see-- [inaudibil] ea here-- dar acest lucru este de la repo locale. Se va merge și apuca index.php. Deci, asta e codul sursă numai că sunt de fapt parte a cererii dumneavoastră. Toate acestea sunt în esență Sisteme tehnica de operare, obtinerea pachetele potrivite și Apache, PHP și, și fleacuri. Dar acest lucru este de a lua de fapt index.php și comiterea acestora in conteinerul, în imaginea. Deci, dacă te duci mai departe și a alerga comandă de a face următoarele, este de fapt going--, acest lucru ar putea dura un pic. Să sperăm că nu ia prea mult timp. Deci, puteți vedea pașii. Și eu vă încurajez să mergeți înapoi acasă astăzi și încercați să-l. Și Mano va descrie cum anume faci asta. Dar e foarte mare pentru a vedea exact ce se întâmplă în spatele scenei. Dar e ridicol de ușor de a construi imagini și să le implementeze cu ajutorul Docker. Durează un pic mai mult decât m-am așteptat. Să vedem ce se întâmplă atunci când Tu-- răcească. Deci, după cum puteți vedea, fiecare dintre aceste etape reprezintă linii în Dockerfile. Și arată că aici construit cu succes această imagine. Deci, dacă fac imagini docher, am de gând să vezi toate imaginile pe care le am la nivel local. Și unul dintre ei se numește meu numele de utilizator, precum și numele a imaginii, și representing-- tag în principal este o etichetă versiune. Deci, acum, dacă vreau să rulați ea, am alerga docher. Și vreau doar să fac un -P -d. Face V1. Deci, eu pot vedea acum că am două containere de funcționare, cel care tocmai am a creat și Hello Docker unul care am primit ultima. Și puteți vedea aici că atribuie un alt port. Deci, dacă mă duc la acelasi IP, dar atribuie un port-- diferit Să sperăm că nu am făcut-o. Deci, acum acest lucru este aplicație care tocmai am implementat. Dacă vreau să fac schimbări, am poate edita rapid codul sursă și de a face următoarele. Să facem salut Harvard. Deci, acum ce se întâmplă să se întâmple este că eu sunt gând să-l eticheta cu un diferite version-- oh, acest lucru nu-l eticheta guy-- cu o altă versiune. Și ai de gând să see-- face voi aștepta să ia aceeași cantitate de timp să-l construiască a doua oară sau nu? Bine, și oricine știe de ce? Vorbeste. Audiența: [inaudibil] NICOLA Kabar: Este practic ne doar schimba una dintre etapele ulterioare. Și, prin urmare, o să utilizați cache și de a folosi fiecare dintre aceste straturi. Și care este cu adevărat o parte din caracteristici criminal de Docker este modul în care utilizează de fapt și reutilizări preluarea disk pentru același piese exacte de informații. Deci, dacă vom face același lucru, a fost nevoie de doar câteva secunde. Dacă vrem să redeploy-- asa ca acum Am ar trebui să aibă trei containere. Dar aceasta este în curs de servit pe the-- șapte unul. Deci, acum este al treilea container. Toată lumea înțelege ce am făcut aici? Deci, acum, dacă doriți să partajați această container repede cu prietenii tăi, puteți face doar docher împingeți Numele containerului, sperăm. Deci, acum o să-l împingă sa-- Eu nu semnat aici. Îmi pare rău pentru asta. Dar eu nu am de gând depana această acum. Dar în esență că o comandă este doar merge în sus împingeți-l. Și ai de gând să fie în măsură să l vezi dacă te duci la Docker Hub Și vă conectați, esti va fi capabil să-l vadă. Și apoi puteți doar punctul oricine se întâmplă de a folosi imaginea pentru a merge și trageți-l. Si ei pot folosi. Cu asta, sperăm Am facut un fel de demonstrat cât de ușor este de a lucra cu Docker. Și eu doar de gând să da-l înapoi la Mano. Și el va lua o de aici. MANO MARKS: Bine Mulțumesc, mulțumesc Nico. Şi ce dacă? Deci, unul din lucrurile pe care le a vrut să facă este pus împreună de ce acest lucru este un important-- de ce și de ce Docker containere sunt astfel de noi de dezvoltare importante, un nou mod de a face de fapt software. Și înainte să fac, am de gând să doar să introducă câteva statistici. Eu nu am de gând să citească toate acestea. Dar acest lucru vă arată o mulțime de lucruri despre modul în care populară acest lucru este în comunitate. Miezul tehnologii Docker sunt open source. Deci asta e Docker Motor, Compose, Roi, o grămadă de alte chestii este tot open source. Și avem, ceea ce am făcut spune, 1.300 contribuabili. Ce vezi acum, dacă te uiți la Numărul de locuri de muncă deschideri, ultima dată ne-am uitat, a fost vorba despre 43.000 de locuri de muncă deschideri menționând în mod special familiarizarea cu Docker. Sute de milioane de imagini au A fost descărcat de Docker Hub. Și, ei bine, statistici mult mai mari. Pentru cei care sunt curioși, ea a fost scrisă inițial în Python și apoi rescrise în Go. Și a fost doar deschide source-- e doar fost eliberate timp de aproximativ 2 și 1/2 ani, ceea ce înseamnă că, în 2 și 1/2 ani, am văzut o cantitate enorma de creștere și importanță de acest lucru în cadrul Comunității. Și așa vreau să vorbesc un pic de ce. Deci, doar pentru a reitera unele dintre Puncte-cheie Nico lui, Docker este rapid. Este portabil. Acesta este reproductibilă. Și stabilește un standard de mediu. Și acest lucru este what-- nasol meu depistarea monoliți slide-- ce se ajuta oamenii fac, care o mulțime de industria de software a inceput cauta in începutul anilor 2000, este în mișcare din aceste monolit aplicații unice unde fiecare dependență a trebuit să fie testate înainte întreaga aplicația avut să fie desfășurate, care ar putea însemna un site web doar am desfășurat o dată fiecare trei luni, sau mai mult, la un serviciu mult mai arhitectura orientata sau de tip modular diferite de arhitectura aplicare. Și permițând astfel acestea fel de arhitecturi care profita de Docher pentru a rula în aceste trei domenii principale de dezvoltare, care este dezvoltarea scris codul actual, testarea codul, și implementarea acesteia. Deci, de ce este important acest lucru? Daca esti un-- permiteți-mi să dau un exemplu. Dacă sunteți un site web dispozitiv dezvoltator, ești dezvoltarea unui site web care este bazat pe baza de date care David a produs aici. Îmi pare rău David, te cheamă. Dacă ați fi dorit să implementați totul, ai trebuie să aștepte în cadrul unui tradițional dezvoltare de software monolit mediu, ai avea să așteptați până când a fost făcut cu baza de date înainte de ai putea face de fapt orice modificare a site-ului. Ar trebui să reimplementați întreaga cerere a face acest lucru. Și ce Docker te ajută să faci este fiecare lucru persoană pe diferite componente și le actualizează ca se duc, doar ceea ce face sigur că interfețele rămâne la fel. Deci, ceea ce a făcut este este mutat oameni de la a face aceste monolit masiv software-ul proiectat ca desfășurate în fiecare lună la un continuu integrare și dezvoltare continuă mediu. Acum, acest lucru nu este unic pentru Docker, dar Docker face atât de mult mai ușor, ceea ce înseamnă că ești de fapt în mod constant implementarea. Vorbim întreprinderilor care sunt implementarea aplicațiilor fața orientată publice de mii de ori pe zi, deoarece ei văd valoarea în doar face mici modificări, și, atâta timp deoarece trece prin teste, lăsa să iasă în producție. Nico a fost întotdeauna mi-a spus mai devreme că, în multe medii, ciclul de viață al unui standard de container se măsoară în secunde, întrucât o mașină virtuală ar putea fi măsurată în luni. Am vrut să iau o ușoară rândul său, pentru că sunt aici la o instituție de învățământ. Am vrut să dau un exemplu de cum acest lucru funcționează într-o cercetare de invatamant situaţie. Deci există o organizație numite bioboxes. Bioboxes face ADN-ul analiză pentru cercetători. Acum ceea ce au descoperit a fost ca, atunci cand un researcher-- iar acest lucru nu este din vina un anumit researcher-- dar atunci când un cercetator desfășurat un algoritm pentru a analiza, În mod deosebit, o mostră de ADN, ei ar scrie software-ul, publica care, poate să GitHub sau în altă parte, iar apoi au terminat. Ei bine, problema a fost că nu a fost neapărat reproductibil. Pentru că, în scopul de a înțelege software-ul, acestea vor fi stabilite pentru mediu de dezvoltare exactă că această cercetător folosit, de obicei, laptop lor, sau un server, sau un de date centru care au folosit. Și, în consecință, a fost foarte dificil de a reproduce rezultatele cercetării atunci când analiza mostre de ADN pentru a căuta la lucruri, cum ar fi incidence-- compara incidenta de atacuri de inima bazată pe anumite gene fiind prezent, de exemplu, sau riscul de cancer, sau oricare dintre celelalte tipuri de lucruri. Deci, în loc ceea ce au făcut a fost au început crearea de containere. Si puteti merge la bioboxes.org, este o organizație mare. Și ceea ce fac ei este ca ei produc containerele bazate pe cercetare. Și apoi ori de câte ori cineva trimite în proba lor, ei pot rula. Si are toate mediului necesar pentru a rula că algoritmul și să producă rezultate. Și ei au constatat ca acestea sunt mult mai probabil și mai mult mai repede capabil să returna rezultate la oameni. Și, de fapt, ceea ce oamenii fac se execută propria lor analiză ADN-ului, trimiterea că, în a bioboxes, și apoi biobox durează doar datele, ruleaza împotriva soiul recipiente de diferite pentru a vedea rezultate diferite bazate pe cercetare diferite. Deci, este un foarte puternic mod în care cercetătorii poate face un singur exemplu care să permită alte persoane pentru a încerca și de a reproduce rezultatele. Deci, cum să începeți? Suntem bine sprijinite pe Linux. Deci, dacă doriți să instalați nimic pe Linux, utilizați standardul managerul de pachete pentru a instala. Dacă utilizați un Debian, e get apt. CentOS este yum. Fedora Red Hat este rpm-- Nu-mi amintesc. Oricum, totul e acolo. Sprijinim o mare varietate de distribuții Linux. Puteți verifica cele afară. Avem, de asemenea opțiuni, astfel încât să ar putea rula pe Mac sau Windows. Acum Nico menționat mai devreme că a fost acceptată numai pe Linux. Asta e adevărat, pentru că are nevoie de un kernel Linux. Dar, puteți rula într-o mașină virtuală. Și ceea ce Docker Toolbox nu, pe care o puteți descărca, îți dă ca mașină virtuală. Deci, doar o scurtă 48 în al doilea rând, cred că, descărca. Trebuie doar sa cautati pe Docker Cutie de unelte, descărcați-l la Mac, și această parte este de Desigur accelerat deoarece care vrea sa ma uit la un semnal de descărcare? Standard de instalare Mac, și apoi ești O să văd Jerome pună în parola. Asta e foarte interesant. Și apoi se instalează un grămadă de instrumente. Și în special se va instala o linie de comandă. Și apoi ai putea vedea Jerome testarea imaginile sale. Și apoi pe această bază, puteți vedea că YouTube crede că Nico este interesat de Star Wars, Jimmy Kimmel spectacol, și cred că Ellen. Cred că ultima dintre ele este un clip de la un spectacol de Ellen. Deci, Docker Toolbox vine, deși cu mai mult decât mașină Docker. Deci Docker Masina este lucru care ajută să configurați un virtuală mașină pe Windows dumneavoastră sau Mac-- caseta de Windows sau Mac box-- și vă ajută să faci de provizionare, Dar, de asemenea, vine cu Swarm și compuneți, care sunt concepute pentru a vă ajuta să faceți mare implementările la scară cererii dumneavoastră. Deci, dacă doriți să gestionați clustere de noduri, grupuri de containere, compune și Swarm sunt mod de a merge despre asta. Și, desigur, vine cu Docker motorului și Kitematic, care este acest desktop GUI. Trebuie să menționez, de asemenea, Docker Registry, care nu este inclusă în Toolbox, dar este o modalitate de a rula propriul dvs. registre de docher Imagini cum ar fi Docker Hub, dar puteți, de asemenea, pur și simplu utiliza Docker Hub ca o modalitate de a face acest lucru. Și, complot poftă de mâncare, ce vezi se execută într-un container. Și așa suntem distribuirea diapozitive noastre. Toată prezentare este de fapt, o punte de diapozitive HTML. Și se execută într-un container, pe care o puteți obține by-- NICOLA Kabar: Da, așa e rulează cu normă întreagă pe Max meu. Și eu prezentarea de la ea. Și faci Docker după instalați Toolbox dumneavoastră. Puteți face doar o centrare docher și-l, și de a folosi diapozitive. MANO MĂRCI: Și asta e. Așa că am vă mulțumesc tuturor pentru venirea. Și suntem bucuroși să răspundă la întrebări. Ar trebui să menționez înainte de cineva frunze există T-shirt acolo. Ne pare rău cineva care se uita acest lucru pe Livestream sau video, dar avem docher tricouri acolo. Și știm studenți docher, și în experiența mea, profesori de asemenea, ca îmbrăcăminte gratuit. Deci vă mulțumesc tuturor pentru care ies. Și urmați-ne pe Twitter dacă vrei, sau nu. Nu-mi pasă. De asemenea urmați Docker pe Twitter. Asta e, de asemenea, interesant. Și apoi asta e. Docker.com. Multumesc. [APLAUZE]