[Musikwiedergabe] DAVID MALAN: Alles klar. Vielen, vielen Dank für Ihr Kommen. Dies ist CS50 Seminar über Docker ein Technologie, die uns selbst und CS50 we benutze seit einiger Zeit begonnen. Also mein Name ist David Malan, I lehren Harvard Einführung in die Informatik. Schon seit einigen Jahren, wir haben den Schülern herunterladbare Client-Seite virtuelle Maschinen auf denen sie ihre Probleme Sets. Dass wir nun umge zu einer Cloud-Umgebung dass tatsächlich nutzt diese Technologie genannt Docker, so daß alle CS50 Studenten haben jetzt ihre eigenen Docker Container dass Sie bald zu hören alles über. Darüber hinaus am CS50 des Servers Seiten Cluster, für viele Jahre waren wir mit Amazon Cloud-Server. Wir liefen Einzel virtuellen Maschinen. Das auch, haben wir begonnen, zu dem über diese Dinge genannt Docker Container so dass alle unsere Anwendungen sind jetzt perfekt voneinander isoliert. Also für das und vieles mehr, lassen Sie mich präsentieren unsere Freunde, Nico und Mano, von Docker sich. NICOLA kabar: Danke, David. Hallo, alle miteinander. Mein Name ist Nico und das ist Mano. Wir sind aus Docker. Wir werden about-- reden geben euch ein Intro zu Dockarbeiter, und hoffentlich gegen Ende dieses Vortrags Sie erkennen können wie viel man Arzt zu bedienen Oxalat Anwendungsentwicklung und Bereitstellung. Also, wir werden echte starten schnell mit einigen Hintergrundinformationen. Beschreiben Sie, was Docker geht. Wie funktioniert das? Wie kommt es, architektur? Ich werde tun, einige Demos. Und Mano sein wird die beschreiben, wie können Sie verwenden Docker und geben Ihnen konkrete Schritte wie können Sie loslegen. Ich würde mich freuen, wenn euch halten kann off für Ihre Fragen gegen Ende. Auf diese Weise, ich könnte Adressierung denen Fragen in der gesamten Präsentation. Also werden wir einige Zeit zu verlassen gegen Ende Fragen. Also nur sehr schnell, wer hat eigentlich jemals auf Docker arbeitete, wie mit ihr gespielt? Fantastisch. Cool. Groß. Also, ich werde beginnen mit etwas Geschichte. Also zurück in den 90er Jahren und Anfang der 2000er Jahre, im Grunde als Web-Entwickler, App-Entwickler, wenn sie gingen, um eine Anwendung bereitstellen sie gefesselt auf blankem Metall. Es war eines Servers. Es war einer Anwendung. Traditionell ein Beispiel wäre wie ein LAMP-Stack zu sein, wo man tatsächlich zu haben rufen Sie die Ressourcen-Pool. CPU, Speicher, Festplatte, Netzwerk, Installation Betriebssystem obendrein. Wenn Sie etwas, das gerade, wenn Sie tatsächlich mit Web-Server, Sie brauchen so etwas wie Apache, ihr zu dienen. Wenn Ihre Anwendung braucht Datenbank, Rückhand, Sie etwas installieren wie MySQL, und so weiter. Und wenn Sie die Laufzeit benötigen, PHPs PHP und Python Arbeiten waren da. Und so haben wir eigentlich hatten nehmen Sie diese Schritte, um Ihre Anwendung zum Laufen zu bringen. Wenn Sie mehr Rechenleistung benötigt man, im Grunde hatte, um Ihren Ops Kerl nennen oder gal, zu gehen und Rack bis eine neue Stück Hardware, schließen Sie es, und Sie müssen diejenigen wiederholen Prozessen wieder und wieder. So war dieser Prozess relativ teuer. War auf jeden Fall sehr langsam. Es war ineffizient. Und in vielen Fällen, Ihre Hardware wurde nicht ausgelastet. Also, in den späten 90ern und frühen 2000er Jahren, Hardware-Virtualisierung stieß. Und wie man hier in die sehen können, Bild, im Grunde, was sie taten, abstrahiert den Pool der freie Hardware-Ressourcen und Art serviert denen zu den oberen Schichten, in diesem Fall, den Betrieb eines Gastsystems. Und die ganze Idee virtuelle Maschinen gestoßen und dass wirklich geholfen Wolke Computing, wie wir sie heute kennen. Also, was das bedeutet ist, dass Sie können mehrere VMs, führen die bedeutete mehrere Stapel, Mehr Anwendung auf einem derselben physischen Maschine. Dies auf jeden Fall mit der geholfen Geschwindigkeit der Anwendungsbereitstellung. Auf jeden Fall mit Kosten. Sie müssen nicht zu gehen und verbringen Energie, Zeit und Ressourcen, um Rack mehr Server, um mehr Rechen zu bekommen. Und die Geschwindigkeit der tatsächlich bringen diese Ressourcen up ist viel schneller. Groß. So lösen wir Hunger in der Welt, nicht wahr? Nein nicht wirklich. Also, so viel wie es ist Virtualisierung tatsächlich geholfen, das Problem anzugehen, es tatsächlich eingeführt viele Herausforderungen. Der Hypervisor auf jeden Fall eingeführt viel Komplexität, Umgang mit diesen zugrunde liegenden Pool von Ressourcen. Es ist schwerer in dem Sinne, dass, bevor Sie ein einzelnes Betriebssystem hatten die ist wie drei, vier Konzerte auf der Festplatte. Nun, wenn Sie 10 Maschinen haben auf einer einzigen Hardware Sie vermehren sich, dass haben durch die Anzahl der Maschinen. Es ist auf jeden Fall mehr teuer in gewissem Sinne immer noch haben die Zulassung für zu bekommen Die Virtualisierungstechnologie wenn es nicht Open Source. Aber lassen Sie uns nicht nehmen alle Kredit von Virtualisierung. Denn das, was geschehen ist, ist es eine Menge von Stacks und viele Software- Technologien, die aktiviert wurden wie schnell Sie in der Lage zu bekommen, waren Ressourcen mit der Cloud-Boom. So, heute eine einzige App oder Service werden unter Verwendung von einem der folgenden Lauf oder Datenbanken. PHP, Python, MySQL, Redis, was nicht alles. Es gibt also eine Menge von Komplexität auf diesem Anzahl der Stapel, um tatsächlich bringen ein einzelner Service. Und zusammen mit, dass eine Menge musste man zugrunde liegenden Ressourcen oder Infrastruktur Typen bereitstellen zu testen und im Grunde zu ergreifen, um die Produktion diese Anwendungen dass Sie zu entwickeln. Vor allem, da Ihre Teams haben gewachsen Arbeit an dieser Anwendungen, es gibt eine Menge von Komplexität und Herausforderungen daß gebracht wurden, um sicherzustellen, dass die cycle-- grundsätzlich Anwendung Entwicklungszyklus ist tatsächlich erfolgreich. Also, die Tatsache, dass Ihre Anwendung wird lokal auf Ihrem lokalen VM arbeiten garantiert nicht, dass Ihr Kollege wird, um die gleichen Ergebnisse zu erwarten. Und wenn der Operations-Team ist in der Einnahme, was Sie haben beteiligt und Bereitstellen es in der Produktion Maßstab, auch gibt es keine Garantie Das ist eigentlich, dass passieren wird. So lässt diese uns mit einem wirklich big-- viele Fragezeichen, viele Herausforderungen tatsächlich ähnlich wie in den Tagen konfrontiert. Und das uns daran erinnert, von die Schifffahrt. So der Schifffahrt hatte eine Menge von Waren, wie Sie auf der linken Seite sehen können. Und auf der rechten Seite, es gibt eine Menge von, im Grunde, Möglichkeiten, diese Waren zu versenden. Und was passiert, als Paar Leute kamen zusammen und sagte: wir brauchen, um zu standardisieren, wie wir tatsächlich versenden diese Waren. Und boom, müssen Sie die intermodalen Transportbehälter. Also am meisten kamen sie überein, gängigen Größen für den Container. Wie man damit umgeht. Welche genaue Methode Sie brauchen um sie zu laden und zu entladen sie. Und deshalb, dass wirklich half der Schifffahrt. Jetzt mehr als 90% Schwerpunkt transportiert weltweit sind mit diesen Behältern. Und dass auf jeden Fall verringert die Aufwendungen sowie die Schäden, die auf Versandkosten. Also nehmen wir das gleiche Modell und wir gelten die beiden App-Entwicklung Software- Architektur im Sinne dass Containerisierung nahm die Virtualisierung eine Ebene nach oben. Also anstatt das zu tun, dass auf Hardware-Ebene, wurde es einer Bedien Systemebene Virtualisierung. Und das tun wir, indem jeweils Anwendung in einem eigenen leichten, isoliert, lauffähig, und tragbaren, am wichtigsten, ein Weg, um tatsächlich zu verpacken alles, was es braucht, um laufen. Überall kann es ausgeführt werden. Also, egal wenn Sie es sind auf lokale dev Umwelt, Ihre Produktion Umwelt, Staging oder Prüfung. Egal, welche zugrunde liegenden Infrastruktur ist da, Sie hatte eine funktionale Arbeits App. Also das ist genau das, was im Grunde Behälter tun, um dieses Problem. Sie richten es nach Verpackungs es in einer solchen Art und Weise dass sie gewährleisten, dass es im Einsatz erfolgreich, egal wo sie lebt. Also, wenn du gehst wie Bob es ist immer noch OK. Wenn Sie mit dem, was ich sage, verwirrt, Ich werde auf die Ausarbeitung werden. Wie funktioniert Docker selbst fit in diesem Bild? So Docker ist eine offene Plattform leicht, einfach zu betonen, zum Schiff zu bauen, führen, leichte, tragbare Selbst ausreichende App Behälter überall. Also, wenn Sie etwas von diesem zu nehmen talk, nehmen Sie sich bitte die folgenden. Wenn Sie Ihre Anwendung laufen haben vor Ort und Sie können es entwickelt bei der Verwendung der Docker-Plattform erwarten es erfolgreich eingesetzt werden. Egal, was ist das zugrunde liegenden Infrastruktur. Also, wenn Sie ein Docker haben Behälter und es funktioniert, dann so lange, wie es ist ein Docker Motor auf der anderen side-- wenn Ihr Betrieb Infrastruktur wird mit jeder Wolke, ob es ist AWS oder Google oder Microsoft, oder einen der öffentlichen Clouds, oder Ihre eigene Wolke, oder Ihre offenen Stapel Wolke, oder Ihre lokale Umgebung. Wenn Sie einen Motor haben, Laufen, das bedeutet Es wird dort erfolgreich im Einsatz. Es wird ausgeführt werden, genau das gleiche Verhalten wie Sie es architected sein. Also, wenn wir freuen at-- Ich werde durch das, was eigentlich gehen sind die Hauptbestandteile der Docker. So Motor ist das Herzstück der Hafenarbeiter. Es ist das Gehirn. Es orchestriert Gebäude, Versand, und die Bereitstellung und Verwaltung die Behälter selbst. Ich werde in das, was Motor nicht graben in mehr Details in einem zweiten. Im Grunde, weil Doktor gebaut wurde um die Client-Server-Architekturen, so, um mit dem zu interagieren Motor müssen Sie irgendeine Art von einem Client. Bilder sind die Vorlagen in Behältnisse aus gebaut. So Bilder sind im Grunde nur statische Dateien. Templates und Behälter ist eigentlich, was ist wird zur Laufzeit ausgeführt wird, dass verbüßt ​​Ihre Anwendung oder etwas mit den Daten zu tun. Registrierung wird als ein Problem der adressierten wie Sie tatsächlich verteilen Bilder. Also, wenn Sie ein Bild freigeben müssen dass Sie gearbeitet an einen Kollegen oder zum ops team, Sie verwenden Sie es mithilfe des Registrierungs. Sie können einen Open-Source-Download Version davon, dass Docker arbeitete an und öffnen Sie bezogen. Oder Sie können Docker Hilfe zu verwenden, das ist die Wolke Version zu drücken und Bilder herausziehen es. Das ist eine riesige Sache. Denn es gibt eine riesige Ökosystem rund um Docker und es ist wirklich stark aus dem Subteller. So, hier zu fassen, das ist, wie die minimalistischen Docker Workflow-Client. Sie interagieren mit dem Wirt, in diesem Fall ist es die Docker Dämonen. Es ist dasselbe, wie Motor. Sie tun Befehle wie Docker bauen, ziehen, laufen. Und der Motor selbst geht und tut diese Dinge. Also entweder mit interagiert Registrierung, um diese Bilder zu ziehen und die Schichten der Bilder. Egal ob Sie bereitstellen möchten, führen Container, töten sie, werfen sie nieder, was nicht alles. Also das den Arbeitsablauf fasst aller dieser Komponenten. Also, wenn Sie jeden nehmen Komponente allein. So Motor, es ist nur ein Dämon. Es wird Art von spielen zu unterstützen auf Linux, weil es funktioniert erfordern bestimmte Linux-Kernel-Funktionen. Aber Windows funktioniert auf das gleiche tun. Es soll unterstützt werden von Windows Server 2016. Also, noch einmal, die Verantwortlichkeiten mit dem Motor ist zu, oder sind, bauen Bilder. Bilder Ziehen Sie aus der Docker Hub oder Ihre eigenen Registry. Wenn Sie mit diesen Bildern gemacht oder Sie können eine neue Bilder zu schaffen, können Sie diese zurückdrängen, um Registrierungs um sie an andere Teams zu verteilen. Und versucht, es vor Ort enthalten und Verwaltung der Behälter-Lebenszyklus örtlich. Es ist rund HTTP REST API gebaut. Technisch möglich schreib eine Client- solange sie verwendet HTTP, das eine sehr ist Standardmechanismus, um den Motor zu sprechen und viele andere Dienstleistungen. Und Sie aus sehen können hier, dass unabhängig von dem, was die Infrastruktur ist, so lange wie Sie alle can-- Sie brauchen, ist ein Betriebs System, Linux spezifisch. Und Sie können Docker Engine installieren oben auf, dass und haben es läuft und orchestriert grundsätzlich alle diese app ein, zwei, und drei eigentlichen Behälter. Also das ist, Motor. Wie ich bereits erwähnte, weil Sie brauchen, um mit Motor zu interagieren, gibt es den Client. Aber eigentlich, wenn Sie installieren Docker, es wird mit ihm. So ist es installiert wird, so ist es eine einzelne binäre. Und Sie Ortsgespräche tun können um Ihre Docker Motor. Oder Remote-Aufrufe an entfernte Engines. Es spielt verwenden HTTP, wie Ich bereits erwähnt. Es gibt einen GUI-Client aufgerufen Kitematic von Docker. Und es gibt auf jeden Fall eine Menge anderer Leute , die den Aufbau einer Menge von GUIs, die im Grunde zu implementieren einige HTTP-Aufrufe an den Motor zu sprechen. Nur einige Beispielbefehle. Wenn Sie Docker-Version zu tun, wäre es zeigen Sie die Client-Version als auch die Server-Version. Wenn Sie Docker info tun, wird es Ihnen sagen alle Informationen, darüber, wie viele Container ausgeführt werden, oder geschaffen, wie viele Bilder Sie haben, und so weiter und so fort. Hier habe ich, in der neben letzte Feld, ich habe Doktor laufen. Also das ist, wie ich bin eigentlich Erstellen Container. Und ich gebe es zu Hallo Welt Echo und schlafen für eine zweite und so weiter. Und Sie können das sehen, Ergebnis. Es ist also noch nicht abgeschlossen. Und ähnlich wie Linux ps können Sie sehen, alle Prozesse, und in diesem Fall alle laufenden Behältern. Das hier ist unter Rückgriff auf der Behälter I gerade erstellt haben. Also, das ist wirklich wichtig, weil, wie kann es ein wenig verwirrend. So Bilder sind die Nur-Lese- Sammlung von Dateien, nicht wahr? Sie sind, was unsere Behälter basiert. Aber sie sind nur schreibgeschützt. So starten Sie mit einem Basis-Image. Es neigt dazu, OS-like zu imitieren, so Ubuntu, CentOS, was nicht alles Basis-Image. Und dann haben Sie den Aufbau auf der Oberseite zu starten daß bestimmte Schichten, das wird bis Ihrem Ende image, führen das Ende hier. Und jede dieser Schichten sollte eine übergeordnete Bild haben dass es verweist, wenn er eigentlich will zu schaffen. Sie sind unveränderlich, in dem Sinne, dass, weil sie schreibgeschützt, Sie können nicht wirklich Änderungen an ihnen. Sie können sie verwenden, um eine zu erstellen Behälter aus einem Bild, das rufen alle nachfolgenden erforderlichen Bilder darunter. Sie können Änderungen vornehmen auf eine andere Ebene, es ist ein Überschreibschicht werde ich sprechen in einer zweiten. Aber jede dieser Schichten nie geändert werden. Grundsätzlich Bilder verwenden etwas, genannt Union Dateisystem UFS. Und es gibt verschiedene Speicher Backends, die diese Technologie nutzen zu können. Und was das bedeutet, ist, dass es bringt verschiedene Dateisysteme zusammen , dass sie aussehen wie einer. So können Sie tatsächlich, aus Anwendungssicht, Sie eine Spitze einer Ansicht, die zeigt, haben alle anderen Dateisystem benötigt, für diese Anwendung zu laufen. Aber sie sind wirklich, auf dieser, sie sind tatsächlich in getrennten Orten und durch nutzt andere Behälter als auch. So wie Sie in hier sehen, dass wenn wir anfangen Bild Daemon mit als Basis-Image, und dann wir gehen in und fügen Sie [? emacs?] und dann ist das eine andere Schicht. Und fügen Sie dann Apache. Das ist eine andere Schicht. Und dann haben wir verbringen den Behälter von diesem. Jedes dieser Bilder, Jede dieser Schichten, unterscheidet und kann durch andere Behälter wiederverwendet werden. Wenn Sie am Behälter selbst suchen, sie sind irgendwie wie VM-like, jedoch nicht zur gleichen Zeit behandelt. Also, die sie nicht haben, technisch gesehen, die Vollbetriebssystem unter ihnen. Sie nutzen die einzelnen Kernel des Host-Betriebssystems. Und sie bauen obendrein. Sie ahmen in, wie sie aussehen. Sie ahmen ihren Root-Datei System des Betriebssystems. Aber sie sind tatsächlich nicht repliziert. Also, statt mit unveränderlichen Schichten, die letzte Schicht, die der Behälter selbst, es ist ein Schreib-Lese-Schicht. Das läuft auch die Prozesse Ihrer Anwendung. Und es hängt von den darunter liegenden Schichten. Jeder Behälter ist von einem Bild geschaffen. Und das Bild kann eine einzige sein oder mehrschichtigen Bild. Und ich möchte hier zu beachten dass Docker stark benutzt, oder auf Copy-on-Write-Mechanismus. So dass, tatsächlich, wenn Sie nicht Änderungen an dem Behälter, es wird nicht um mehr Platz zu nehmen. Also das ist im Grunde, wie Sie Zusammenfassend ein Copy-on-Write. Es wird auf jeden Fall beschleunigen Die Hochlaufzeit für den Behälter. Weil, wenn Sie nicht machen Änderungen an dem Container, es nutzen, was bereits vorhanden. So, wie es tatsächlich funktioniert. Teil es ist, gerade jetzt, es nutzt mindestens zwei Schlüssel Kernel Eigenschaften. Und das ist im Grunde, was erstellt, dass Niveau der Isolation für die Behälter selbst. Diese Merkmale sind Namespaces und Kontrollgruppen. So Namespaces sind eine Möglichkeit, erstellen isolierten Ressourcen, so daß innerhalb des Behälters selbst, nur Sie können bestimmte Ressourcen zu sehen. Wie beispielsweise die Netzwerkschnittstelle oder die bestimmte Benutzer oder Dingsbums. Und das sind nur sichtbar, und nur zugänglich innerhalb des Behälters. Kontrollgruppe auf der anderen Seitenbegrenzungen wie Sie diese Ressourcen zu nutzen. CPU, Speicher und Festplatte. Wenn Sie gehen in, I bedeuten, das sind tatsächlich Funktionen, die entwickelt wurden, nach-- sie sind Teil des Linux-Kernels. So dass sie nicht neu erfunden wurden von oder durch Docker neu erstellt. Docker nutzt sie. Welche Doktor wirklich Hier ist es tatsächlich orchestrierte Erstellung Namensräume für jeden Behälter und die Schaffung der Kontrollgruppen, so dass es lächerlich einfach zu Containern zu erstellen Verwendung dieser Funktionen. Natürlich, wie ich früher beschrieben, Union File Systems und Copy-on-Write wirklich hilft, die Geschwindigkeit und die Platte Verwendung von Containern. Und sobald Sie Ihre Hände um Dockarbeiter, Sie gehen zu sehen, wie schnell es ist, tatsächlich spin up Container und Tränen sie nieder. Also, wenn Sie fragen sich vielleicht, wie kann Sie tatsächlich Bilder zu bauen? Wir bauen Bilder von einem Prozess der Erstellung Container und Änderungen, Änderungs sie, und sie begehen in das Werden ein Bild. So ist es ein Huhn und Ei Referenz hier, da alle Behälter kommen von Bildern und Bilder kommen aus begangen Container, größtenteils. Es gibt drei Optionen um Bilder zu erstellen. Ich werde beschreiben, das erste und letzte. Sie können entweder manuell gehen und führen Sie den Behälter und stellen Sie diese Änderungen, wie Sie auf jedem VM tun würde, oder jedes Betriebssystem, wie wie die Installation von neuen Binärdateien, Hinzufügen von Dateisystemen, und so weiter. Und dann haben Sie zu verlassen, wie Sie können dort zu sehen. Ich Verlassen meiner Container. Und dann mache ich Docker begehen. Und ich bin verpflichtet, dass. Sie können, dass die Zahl hier zu sehen ist nur eine UUID oder die ersten 12 Bits der UUID. Oder Bytes der UUID. Und dann rufe ich es meinem Bild. Jetzt so Docker kümmert Aufnahme alles, was ich tat es und die Schaffung der neuen Bild basierend auf dem. Ich werde nicht über Tarball zu sprechen, aber es gibt eine Weise, die Sie ein einzelnes bekommen können, erstellen Sie eine einzelne, oder machen Sie einen einzelnen Schichtbild mit Tarballs. Was werde ich darüber reden und was heute meist verwendet, ist Dockerfile. Welches ist technisch die erste Schritt für Docker selbst automatisiert. So Dockerfiles gibt Dinge, die Sie gehen, um in einer Menge von GitHub Repo sehen heute. Es ist im Grunde nur ein Textdatei beschreibt genau, wie man ein Bild zu bauen. Und für jede Zeile, es tatsächlich schafft der Behälter, führt diese Linie, begeht diesen Behälter in einem neues Bild, und du, im Grunde, verwenden Sie es für alle nachfolgenden Operationen bis Sie zum letzten Bild. Das ist im Grunde das Ende Ziel ist hier, das Ende. Und nachdem Sie, nachdem Sie exec-- schreib Dockerfile, die rein in Text, ein Docker tun Sie Aufbau und den Namen des Bildes. Und Sie, dass dies darauf wo die Dockerfile ist. Und Sie können erwarten, um mein Bild zu sehen wie ein Bild, das Sie vor Ort. Also das ist nur eine visuelle Beispiel dafür, was weitergeht. Sie beginnen mit einem Basis-Image. Sie führen, dass in einen Behälter, der ist das Basisbild selbst nicht ändern. Sondern schafft ein umschreiben Schicht oben auf sie in dem Sie die Änderungen vornehmen, in denen Sie sich verpflichten und Sie den Vorgang, bis wiederholen Sie erhalten, Ihre endgültige Bild. Und dadurch jede weitere Build Prozess kann die gleichen Schichten zu verwenden und das im Grunde same-- Docker Caches diese Schichten. So dass, wenn ich tue, exakt das gleiche Prozess, aber anstelle der Installation PHP, Ich bin der Installation von Python. Es wird Apache und Ubuntu verwenden. So diese Weise Sie den Einsatz Ihrer Festplatte. Es ist unter Verwendung der Cache- und verfügbaren Bildern gibt. Das letzte Stück ist Registry, die ist, wie Sie Ihre Bilder zu verteilen. Und, wie ich bereits erwähnt, es gibt eine Wolke Version davon, Das ist Docker Hub. Sie können gehen und zu erkunden eine Menge, im Grunde es ist eine öffentliche SAS Produkt, Sie können immer noch über private Bilder, aber es gibt eine Menge von öffentlichen Bilder. Es ist eigentlich unbegrenzt, können Sie schieben es unbegrenzte öffentliche Bilder. Und das ist, wie Sie Zusammenarbeit mit Ihrem Team. Sie können sie nur darauf an Ihnen Repo und sie können es oder Ihr Bild herunterladen und sie können es herunterladen. Also genug mit der Diskussion. Wer will schon ein paar Demos ganz schnell sehen? Gut. Also hier habe ich. Ca euch sehen, mein Bildschirm? Gut. So habe ich Docker läuft hier, so dass ich kann it's-- Dieser Check ist die Version der Docker, die läuft. Kann Docker info zu tun. Überprüfen Sie alle Daten, wie viele Bilder, die sie haben, und so weiter und so fort. Docker PS, es gibt nichts läuft. Verkettet denen. Das erste, was ich tun möchte, ist Show Ihnen, wie Sie ganz einfach laufen auf einen Container. So ist die Schönheit über Doktor Sicht, wenn es tatsächlich kein Bild vor Ort zu finden, Standardmäßig ist es für den Arzt Hub spricht und versucht, sie dort zu finden und Downloads für Sie. So es eine Docker Pull-Befehl, natürlich. Also, wenn ich eine Docker Lauf, hallo-Welt zu tun. Also, zuerst, es wird zu versuchen, es zu lokalisieren. Ansonsten, wie Sie hier sehen können, sie konnte ihn nicht finden vor Ort. Gerade jetzt ist es gerade herausgezogen zwei Schichten das machte das Bild und ich lief es. Die Hallo-Welt ist im Grunde nur Ausgänge, was Sie getan haben. So ist dies die einfachste, eine der einfachsten Beispiele. So einfach um und lief beendet der Behälter ganz schnell. Wenn ich run-- und übrigens, wenn Ich möchte Zeit, dass, nur damit Sie wissen, Dies ist, wie lange es dauert, tatsächlich spin up und enthalten es. Wir messen es in Millisekunden. Wie viel, so dass Sie sehen können, kann dies eigentlich haben Sie nicht nur bei der Prüfung helfen, sondern auch Bereitstellung. Also das ist eine kurze Notiz auf, dass. Das nächste, was ich tun ist eigentlich laufen ein Bild habe ich schon vorbereitet. So Andockfenster Lauf. -d ist nur eine Flagge zu sagen, es im Hintergrund laufen. Und -p weist bestimmte Ports. Da standardmäßig die Container isoliert, so müssen Sie genau festlegen, wie sie darauf zugreifen können. Und in diesem Fall, ich sage Docker um einen zufälligen Port auf dem Host-Karte auf die angegebene Port innerhalb der Behälter selbst. Und das ist im Grunde, wo die image-- hoffentlich ist dies der richtige. So dass es parallele Downloads je dieser Schichten, wie Sie hier sehen können. Das sind der Schichten, Ende Bild, das ich gebaut. Es wird eine zweite zu nehmen. Und voila. So, jetzt, wenn ich eine docker ps, sollte ich etwas sehen, was läuft. Ich sollte die ID zu sehen, das Bild dass diese es wurde basierend, und der Befehl, der ausgeführt wurde. Und wie Sie darauf zugreifen, ist Grundsätzlich gehen Sie zu diesem Port. So werde ich zu-- diese gehen wird ich bin läuft es auf AWS. Ich werde um 32.769 zu gehen. Hoppla. Und es geht los. Das ist also eigentlich nur ein Web-Service, der zeigt, die Container es aus serviert. So können Sie sehen, dass es aus dem Behälter A9F. Und hier ist dies die Name des Containers. So kann euch sehen, wie schnell es war es tatsächlich nicht nur ziehen sondern auch bereitstellen Verpackung. Nun ist der nächste Schritt ist, Blick in Dockerfiles und wie können wir tatsächlich bauen neue Bilder. Ich werde einfach zu holen Klon ein sample-Dockerfile basierend auf dem vorher Schaltbild, das eine um Apache und PHP. Hoffentlich habe ich erinnere mich an meine Repo. So habe ich mein Repository jetzt. Und du wirst sehen, dieses viel eigentlich. Ich habe nicht installieren Baum. Also im Grunde wirst du sehen, wie Ihren Source-Code Dokumentation rund um , und dann ein auf Dockerfile wie man tatsächlich verpacken. So ist es nur ein Beispiel PHP dass Echos hallo CS50. Also, wenn ich will, um sie auszuführen, Ich werde docker Build zu tun. Ich habe es zuerst zu bauen. Ich werde es nennen demo_cs50. Und Sie einen Tag brauchen, um es zu. So nennen wir es v1 dot. So wie ich es früher beschrieben, was ich heute tun ist Ich sage Docker den Einsatz gehen dass-- wirklich, sorry, my bad. Wir haben nicht einen Blick zu nehmen am Dockerfile sich. Also das einzige, was hier drin sind index.php sowie der Readme-Datei und eine Dockerfile. Also, wenn Sie ein Blick in die Dockerfile, so ist es sehr ähnlich, was Ich früher beschrieben. Es ist nur ein Haufen von Schritte, die Docker ausführt durch die Schaffung und Abbau Container und [? Zählen?] sie in einem Bild. Und im Grunde kann man see-- [unverständlich] es hier-- aber dies ist aus dem lokalen Repo. Es wird gehen und sichern Sie index.php. Also das ist der einzige Quellcode, sind eigentlich Teil Ihrer Anwendung. All dies sind im Grunde Betriebssystem Sanitär-, die richtigen Pakete und Apache und PHP, und so weiter. Aber das ist eigentlich unter index.php und Begehen in den Behälter, in das Bild. Also, wenn Sie gehen Sie vor und führen die Befehl, indem Sie die folgende, es ist eigentlich going--, könnte dies ein wenig zu nehmen. Hoffentlich wird es nicht zu lange dauern. So können Sie die Schritte sehen. Und ich ermutige Sie, um zu gehen wieder nach Hause heute und versuchen Sie es. Und Mano beschreiben wie genau Sie das tun. Aber es ist wirklich toll, genau zu sehen was hinter den Kulissen passiert. Aber es ist lächerlich einfach zu bauen Bilder und stellen Sie sie mit Docker. Es nimmt ein wenig mehr als ich erwartet hatte. Mal sehen, was passiert, wenn Sie-- kühlen. So wie Sie, jeden dieser Schritte sehen können, stellen Linien im Dockerfile. Und es zeigt sich hier, dass es Dieses Bild erfolgreich aufgebaut. Also, wenn ich tun docker Bilder, ich bin zu gehen sehen Sie alle Bilder, die ich vor Ort. Und einer von ihnen genannt wird mein Benutzernamen und den Namen des Bildes, und das Tag representing-- vor allem ist es eine Version-Tag. So, jetzt, wenn ich laufen es, ich tue docker Lauf. Und ich möchte nur ein -d -P zu tun. Haben v1. So kann ich jetzt sehen, dass ich zwei haben Container ausgeführt wird, die, die ich gerade erstellt und die hallo Docker eine, die ich zuletzt. Und hier, dass es sehen können es ist ein anderer Port zugewiesen. Wenn ich also auf die gleiche IP, sondern weisen Sie eine andere port-- hoffentlich habe ich nicht. So, jetzt ist dies Anwendung dass ich gerade im Einsatz. Wenn ich will, um Änderungen vorzunehmen, I schnell den Quellcode bearbeiten und gehen Sie folgendermaßen vor. Lass uns hallo Harvard. So, jetzt, was los ist geschehen ist, dass ich gehen, um es mit einem Tag verschiedene version-- oh, nicht diese guy-- es markieren mit einer anderen Version. Und du bist zu gehen see-- kann euch erwarten, sie dieselbe Menge an Zeit in Anspruch nehmen um ihn zu bauen ein zweites Mal oder nicht? Alles klar, und jeder weiß, warum? Speak up. ZIELGRUPPE: [unverständlich] NICOLA kabar: Es ist im Grunde wir nur ändern, eine der späteren Schritten. Und damit es sich auf die Verwendung Cache und verwenden Sie jede dieser Schichten. Und das ist wirklich einige der Killer-Features von Docker ist, wie es tatsächlich nutzt und Wiederverwendungen übernehmen Ihre Festplatte für die gleiche genaue Stücke von Informationen. Also, wenn wir tun, die gleiche Sache, es dauerte nur ein paar Sekunden. Wenn wir so jetzt redeploy-- möchten Ich sollte drei Container haben. Aber dieses wird auf the-- Seven One serviert. So jetzt ist es der dritte Behälter. Jeder verstehen was ich gerade hier getan hat? So, jetzt, wenn Sie, dies zu teilen Behälter ganz schnell mit Ihren Freunden, können Sie einfach tun docker drücken Sie den Name des Containers, hoffentlich. So, jetzt, es wird zu schieben zu-- Ich bin nicht hier unterzeichnet. Bitten um Entschuldigung. Aber ich werde nicht beheben das jetzt. Aber im Grunde, dass ein Befehl ist nur hinauf schieben. Und du wirst in der Lage sein wirst sehen, wenn Sie Docker Hub gehen Und Sie melden Sie sich an, du bist in der Lage sein, es zu sehen. Und dann können Sie nur zeigen, wer wird , um dieses Bild zu verwenden, um zu gehen und ziehen Sie es. Und sie nutzen können. Damit hoffentlich Ich Art gezeigt wie einfach es ist, mit Docker zu arbeiten. Und ich werde einfach geben es zurück zu Mano. Und er wird nehmen Sie es von hier. MANO MARKS: Alle Rechte danke, danke Nico. Na und? Damit wird eines der Dinge, die ich tun wollte, zusammengesetzt Deshalb ist dies ein important-- warum Docker und warum Behälter ein solcher wichtige neue Entwicklung, eine neue Art von Software eigentlich macht. Und bevor ich das tue, werde ich den los nur vorstellen ein paar Statistiken. Ich werde nicht alle von diesen zu lesen. Aber das zeigt Ihnen viel darüber, wie populäres Dieses ist in der Gemeinde. Die Kern Docker Technologien sind Open Source. Also das ist, Docker Motor, Compose, Swarm, ein paar andere Sachen ist alles Open Source. Und wir haben, was habe ich sagen, 1.300 Mitwirkenden. Sie können nun sehen, wenn man sich den Blick Zahl der offenen Stellen, das letzte Mal, wir sahen, war es etwa 43.000 Job Öffnungen speziell erwähnens Vertrautheit mit Docker. Hunderte von Millionen von Bilder haben von Docker Hub heruntergeladen. Und, na ja, viel mehr große stats. Für diejenigen, die neugierig sind, es Ursprünglich wurde in Python geschrieben und dann in Go neu geschrieben. Und es ist erst öffnen source-- es nur seit ca. 2 1/2 Jahren veröffentlicht, was bedeutet, dass in 2 1/2 Jahren Wir haben eine enorme Menge gesehen des Wachstums und der Bedeutung davon in der Gemeinde. Und so möchte ich sprechen ein wenig darüber, warum. Also, nur um einige zu wiederholen Nicos wichtigsten Punkte ist Docker schnell. Es ist tragbar. Es ist reproduzierbar. Und es baut eine Standardumgebung. Und what-- dies ist mein crappy auszumerzen Monolithen slide-- was es hilft Menschen zu tun, die ein großer Teil der Software-Industrie angefangen in der Anfang der 2000er Jahre in Bewegung aus diesen monolithischen Einzelanwendungen wo jeder Abhängigkeits musste getestet, bevor die gesamte app hatte zum Einsatz kommen, die könnte eine Website bedeuten, nur noch einmal im Einsatz alle drei Monate oder mehr, zu einer viel Dienst orientierte Architektur oder komponenten andere Art Anwendungsarchitektur. Und so erlaubt diese Art von Architektur daß ausnutzen Docker in diese drei laufen Hauptbereiche der Entwicklung, die ist Entwicklungs Schreiben der eigentliche Code, Testen Sie Ihren Code und dem Einsatz von IT. Also, warum ist das wichtig? Wenn Sie a-- lassen Sie mich Ihnen ein Beispiel geben. Wenn Sie ein Website Geräteentwickler, du bist Entwicklung einer Website, die auf die auf der Basis ist Datenbank, die David produziert hier. Es tut uns leid David, ich rufe Sie aus. Wenn Sie bereitstellen wollte, die ganze Sache, würden Sie müssen unter einem traditionellen warten monolithischen Software-Entwicklung Umwelt, müssten Sie warten bis er mit der Datenbank durchgeführt bevor man tatsächlich machen Alle Änderungen an Ihrer Website. Sie müssten die Umschichtung gesamte Anwendung zu tun. Und was Docker hilft Ihnen tun, ist jeder Person, die Arbeit an verschiedenen Komponenten und aktualisieren Sie sie, wie sie gehen, nur machen Sie sicher, dass die Schnittstellen gleich bleiben. Also, was sie getan hat wird es verschoben Menschen zu tun, diese massiven monolithischen architected Software, die Einsatz jeden Monat zu einer kontinuierlichen Integration und kontinuierliche Entwicklung Umwelt. Nun ist dies nicht eindeutig zuzuordnen Dockarbeiter, aber Docker macht es so viel einfacher, das heißt, Sie sind im Grunde ständig bereitstellen. Wir sprechen mit Unternehmen, die sind Bereitstellung von öffentlich zugänglichen Anwendungen Tausende Male am Tag, weil sie nur machen sehen den Wert kleine Änderungen, und so lange wie es durch die Tests ausgeführt wird, lässt sie gehen in die Produktion. Nico wurde mir immer gesagt, früher, dass in vielen Umgebungen, die Standardlebenszyklus ein Behälter wird in Sekunden gemessen, der Erwägung, dass eine virtuelle Maschine vielleicht in Monaten gemessen werden. Ich wollte ein leichter zu nehmen biegen Sie hier, weil ich bin bei einer Bildungseinrichtung. Ich wollte ein Beispiel, wie zu geben Dies funktioniert in einer Bildungsforschung Lage. Es gibt also eine Organisation genannt bioboxes. Bioboxes tut DNA Analyse für Forscher. Nun, was sie fanden, war, dass, wenn a researcher-- und dies ist nicht die Schuld von einem bestimmten researcher-- aber wenn ein Forscher im Einsatz ein Algorithmus zur Analyse, In besonderer Weise wird eine DNA-Probe, sie würden die Software zu schreiben, zu veröffentlichen, dass, vielleicht, um GitHub oder irgendwo anders, und dann wurden sie getan. Nun das Problem war, dass es nicht unbedingt reproduzierbar. Denn um verstehen, die Software, sie würden sich für die festgelegt werden genaue Entwicklungsumgebung daß diese Forscher, gewöhnlich ihrem Laptop oder ein Server oder ein Daten zentrieren, dass sie mit. Und folglich war es sehr schwer zu Forschungsergebnissen, wenn zu reproduzieren Analyse von DNA-Proben, um zu suchen an Dinge wie incidence-- Inzidenz von Herzinfarkten vergleichen anhand von bestimmten Genen vorhanden sind, zum Beispiel, oder das Krebsrisiko, oder eine der anderen Arten von Dingen. Anstatt also das war, was sie taten, sie begannen Schaffung Containern. Und Sie gehen können, um bioboxes.org, es ist eine große Organisation. Und was sie tun, ist, die sie produzieren Container basierend auf Forschung. Und dann, wenn jemand sendet in ihrer Probe, können sie sie auszuführen. Und all die Umwelt hat erforderlich, dass die Algorithmus ausgeführt und produzieren die Ergebnisse. Und sie finden, dass sie viel eher und vieles schneller in der Lage, zurück Ergebnisse zu den Menschen. Und in der Tat, was die Menschen tun, sind auf den Betrieb ihrer eigenen DNA-Analyse, Senden, dass in den bioboxes und dann Biobox dauert nur die Daten, läuft es gegen die Vielzahl von verschiedenen Behältern um unterschiedliche Ergebnisse zu sehen auf der Basis verschiedener Forschung. Es ist also eine sehr starke Weise, in der Forscher kann eine einzige Instanz, die erlaubt zu machen anderen Menschen zu versuchen und zu reproduzieren die Ergebnisse. So, wie Sie anfangen sollen? Wir sind gut auf Linux unterstützt. Also, wenn Sie installieren möchten alles auf Linux, Ihr Standard verwenden Paket-Manager zu installieren. Wenn Sie eine Debian sind, ist es apt-get. CentOS ist yum. Fedora Red Hat ist rpm-- Ich erinnere mich nicht. Wie auch immer, es ist alles da. Wir unterstützen eine große Vielfalt Linux-Distributionen. Sie können diejenigen, auschecken. Wir haben auch Möglichkeiten, so dass Sie könnte man auf Mac oder Windows. Jetzt Nico bereits erwähnt, dass es war nur unter Linux unterstützt. Das ist wahr, weil es benötigt einen Linux-Kernel. Aber Sie können in einer virtuellen Maschine laufen. Und was die Docker Toolbox tut, die Sie herunterladen können, es gibt Ihnen diese virtuelle Maschine. Also nur eine schnelle 48 zweiten, denke ich, herunterladen. Sie haben auf Docker suchen Werkzeugkasten, laden Sie es auf dem Mac, und dieser Teil ist von Natürlich beschleunigt, weil die will einen Download-Signal zu sehen? Standard-Mac-Installation, und dann bist du gehen, um zu sehen Jerome legte in seinem Passwort. Das ist sehr spannend. Und dann installiert es ein ganze Reihe von Werkzeugen. Und vor allem, es wird installieren Sie eine Befehlszeile. Und dann konnte man sehen, Jerome testet seine Bilder. Und dann auf dieser Basis, Ihnen die YouTube sehen denkt, dass Nico interessiert sich Star Wars, The Jimmy Kimmel Show, und ich glaube, Ellen. Ich denke, das letzte ist ein Clip aus einem Ellen Show. So Docker Toolbox aber kommt mit mehr als nur Docker Machine. So Docker Machine ist die Sache, die hilft Sie ein virtuelles Set Maschine auf Ihrem Windows- oder Mac-- Ihrem Windows-Rechner oder Mac box-- und hilft Ihnen, die Bereitstellung zu tun, Aber es kommt auch mit Swarm und Compose, die entworfen, um Ihnen helfen, große zu tun weite Implementierung in Ihrer Anwendung. Also, wenn Sie verwalten möchten Cluster von Knoten, Cluster von Containern, Verfassen und Swarm sind der Weg, darüber zu gehen. Und natürlich kommt es mit Docker Motor und Kitematic, was diese Desktop-GUI. Ich sollte auch erwähnen Docker Registry, die nicht in Toolbox enthalten ist, aber es ist eine Möglichkeit für Sie, Ihre eigenen zu laufen Register der Docker Bilder wie Docker Hub, aber Sie können auch einfach Docker Hub als eine Möglichkeit, das zu tun. Und Plot Twist, werden Sie sehen, es in einen Behälter laufen. Und das ist, wie wir sind Vertrieb unserer Folien. Diese ganze Präsentation ist eigentlich eine HTML Schiebe Deck. Und es in eine ausgeführt wird Container, die Sie bekommen können nach-- NICOLA kabar: Ja, so ist es läuft in Vollzeit auf meinem Max. Und ich bin präsentiert von ihm. Und Sie gerade tun, Docker nach Sie Toolbox installieren. Sie können einfach eine docker Lauf und bekommen es, und verwenden Sie die Folien. MANO Markierungen: Und das ist es. So danken wir Ihnen allen für Ihr Kommen. Und wir freuen uns, Fragen zu beantworten. Ich sollte erwähnen, bevor jemand Blätter gibt es T-Shirts drüben. Es tut uns leid jeden, der gerade ist Diese auf Livestream oder Video, aber wir haben Docker T-Shirts drüben. Und wir wissen, Docker Studenten, und nach meiner Erfahrung, Professoren zu, wie kostenlose Kleidung. Ich danke Ihnen allen für Ihr Kommen heraus. Und folgen Sie uns auf Twitter wenn Sie wollen, oder nicht. Es ist mir egal. Beachten Sie auch Docker auf Twitter. Das ist auch interessant. Und dann das ist es. Docker.com. Vielen Dank. [BEIFALL]