[Bermain muzik] DAVID MALAN: Baiklah. Terima kasih banyak kerana datang. Ini adalah seminar CS50 pada buruh pelabuhan, yang teknologi yang kita sendiri dan CS50 telah mula menggunakan untuk beberapa waktu sekarang. Jadi nama saya David Malan, saya mengajar Pengenalan Harvard Sains Komputer. Untuk beberapa tahun, kita telah memberi peluang kepada pelajar boleh dimuat turun klien mesin maya di mana mereka melakukan set masalah mereka. Bahawa kita kini telah beralih kepada persekitaran yang Cloud yang benar-benar menggunakan teknologi ini dipanggil buruh pelabuhan, seperti yang semua CS50 pelajar kini mempunyai mereka bekas buruh pelabuhan sendiri yang anda tidak lama lagi akan mendengar semua tentang. Selain itu, pada pelayan CS50 kelompok sampingan, selama bertahun-tahun kita telah menggunakan pelayan Cloud Amazon. Kami sedang berlari individu mesin maya. Itu juga, kami telah mula beralih kepada perkara-perkara ini dipanggil bekas buruh pelabuhan supaya semua permohonan kami kini sempurna diasingkan daripada satu sama lain. Jadi untuk itu dan banyak lagi, izinkan saya memperkenalkan rakan-rakan kami, Nico dan Mano, dari buruh pelabuhan sendiri. NICOLA KABAR: Terima kasih, David. Hai semua. Nama saya Nico dan ini adalah Mano. Kami ini dari buruh pelabuhan. Kami akan bercakap about-- memberikan anda semua intro kepada buruh pelabuhan, dan diharapkan, menjelang akhir ceramah ini anda boleh merealisasikan berapa banyak yang anda boleh menggunakan doktor untuk oxalate pembangunan aplikasi anda dan penempatan. Jadi, kita akan mulakan sebenar cepat dengan beberapa maklumat latar belakang. Menggambarkan apa buruh pelabuhan adalah semua tentang. Bagaimanakah ia berfungsi? Bagaimana ia architected? Saya akan melakukan beberapa demo. Dan Mano akan menjadi menerangkan bagaimana anda boleh menggunakan buruh pelabuhan dan memberi anda langkah-langkah tertentu bagaimana anda boleh memulakan. Saya akan menghargai jika anda semua boleh memegang padang kerana soalan anda menjelang akhir. Dengan cara itu, saya mungkin akan menangani mereka soalan sepanjang persembahan. Oleh itu, kita akan meninggalkan sedikit masa pada akhir untuk soalan. Jadi hanya sebenar cepat, yang mempunyai sebenarnya pernah bekerja di limbungan, seperti bermain dengannya? Awesome. Sejuk. Yang besar. Oleh itu, saya akan memulakan yang mempunyai sejarah beberapa. Jadi kembali dalam 90-an dan awal tahun 2000, pada dasarnya sebagai pemaju web, pemaju aplikasi, apabila mereka pergi untuk menggunakan aplikasi ia terikat kepada melahirkan logam. Ia adalah salah satu pelayan. Ia adalah satu permohonan. Secara tradisinya, contoh akan menjadi seperti timbunan LAMP, di mana anda sebenarnya terpaksa membawa kumpulan sumber. CPU, memori, cakera, rangkaian, memasang sistem operasi di atas itu. Jika anda berkhidmat sesuatu, jika anda sebenarnya mempunyai pelayan web, anda memerlukan sesuatu seperti Apache untuk berkhidmat. Jika permohonan anda memerlukan pangkalan data, pukulan kilas, anda akan memasang sesuatu seperti MySQL, dan sebagainya. Dan jika anda memerlukan masa jangka masa, PHPs dan PHP Python kerja di sana. Dan dengan itu kita sebenarnya terpaksa mengambil langkah-langkah untuk untuk mendapatkan permohonan anda dan berjalan. Jika anda memerlukan lebih banyak kuasa pengiraan, anda pada dasarnya terpaksa memanggil Lelaki Ops anda atau gal pergi dan rak sehingga baru sekeping perkakasan, menyambung, dan anda perlu mengulang proses lagi dan lagi. Jadi proses ini adalah agak mahal. Memang sangat perlahan. Ia adalah tidak cekap. Dan dalam banyak kes, anda perkakasan telah digunakan sepenuhnya. Jadi, pada lewat tahun 90an dan awal tahun 2000, virtualisasi perkakasan terserempak. Dan seperti yang anda boleh lihat di sini di gambar, pada dasarnya apa yang mereka lakukan adalah cabutan kumpulan sumber perkakasan percuma dan jenis berkhidmat orang untuk lapisan atas, dalam kes ini, tetamu sistem operasi. Dan idea keseluruhan mesin maya terserempak dan yang benar-benar membantu Cloud pengkomputeran seperti yang kita tahu hari ini. Jadi apa yang dimaksudkan adalah anda boleh menjalankan pelbagai VMS, yang bermakna pelbagai susunan, pelbagai permohonan pada mesin fizikal yang sama. Ini pasti membantu dengan kelajuan penghantaran permohonan. Sudah pasti dengan perbelanjaan. Anda tidak perlu pergi dan menghabiskan tenaga, masa dan sumber untuk rak lebih pelayan untuk mendapatkan lebih pengiraan. Dan kelajuan sebenarnya membawa sumber mereka sehingga adalah lebih cepat. Yang besar. Oleh itu, kita diselesaikan kebuluran dunia, bukan? Tidak, tidak benar-benar. Jadi, virtualisasi sebanyak itu sebenarnya membantu, mengatasi masalah itu, ia sebenarnya diperkenalkan banyak cabaran. Hypervisor pasti memperkenalkan banyak kerumitan, pengendalian yang mendasari kumpulan sumber. Ia lebih berat dalam erti kata bahawa sebelum anda mempunyai sistem operasi tunggal yang adalah seperti tiga, empat persembahan pada cakera. Sekarang, jika anda mempunyai 10 mesin pada perkakasan tunggal anda perlu untuk membiak bahawa dengan jumlah mesin. Ia pasti lebih mahal dalam erti kata yang anda masih perlu mendapatkan lesen untuk teknologi pemayaan jika ia bukan sumber terbuka. Tetapi, jangan kita mengambil semua kredit daripada virtualisasi. Oleh kerana apa yang berlaku ialah terdapat banyak susunan dan banyak perisian teknologi yang membolehkan dengan berapa cepat anda mampu untuk mendapatkan kepada sumber-sumber dengan ledakan Awan. Jadi, hari ini aplikasi atau perkhidmatan boleh menggunakan mana-mana daripada yang berikut runtimes atau pangkalan data. PHP, Python, MySQL, Redis, barang kecil. Jadi ada banyak kerumitan pada ini beberapa susunan untuk benar-benar membawa perkhidmatan tunggal. Dan bersama-sama dengan itu, anda mempunyai banyak sumber asas atau infrastruktur jenis untuk menguji mengerahkan dan pada dasarnya ambil untuk pengeluaran aplikasi tersebut bahawa anda sedang membangun. Terutama kerana pasukan anda mempunyai berkembang bekerja pada aplikasi, ada banyak kerumitan dan cabaran yang dibawa untuk memastikan bahawa cycle-- pada dasarnya permohonan kitaran pembangunan, adalah sebenarnya berjaya. Jadi, hakikat bahawa permohonan anda bekerja secara setempat pada VM tempatan anda tidak menjamin bahawa rakan sekerja anda akan mengharapkan keputusan yang sama. Dan apabila pasukan operasi adalah terlibat dalam mengambil apa yang anda ada dan menggunakan dalam pengeluaran skala, juga tidak ada jaminan bahawa yang sebenarnya akan berlaku. Jadi ini meninggalkan kita dengan benar-benar big-- banyak tanda soal, banyak cabaran sebenarnya yang dihadapi begitu juga dalam zaman. Dan itu mengingatkan kita industri perkapalan. Jadi industri perkapalan mempunyai banyak barang-barang, seperti yang anda lihat di sebelah kiri. Dan di sebelah kanan, ada banyak, pada dasarnya, cara-cara untuk menghantar barang-barang. Dan apa yang berlaku sebagai pasangan orang datang bersama-sama dan berkata, kita perlu menyeragamkan bagaimana kita benar-benar menghantar barang-barang. Dan ledakan, anda mempunyai bekas penghantaran mod. Jadi mereka bersetuju pada yang paling saiz biasa bagi bekas. Bagaimana untuk mengendalikan mereka. Apakah kaedah tepat yang anda perlukan untuk memuatkan mereka dan memunggah mereka. Oleh itu, yang benar-benar membantu industri perkapalan. Sekarang, lebih daripada 90% tumpuan diangkut di peringkat global menggunakan orang-orang bekas. Dan yang pasti berkurangan perbelanjaan serta kerosakan akibat penghantaran. Oleh itu, kita mengambil model yang sama dan kami menggunakan perisian pembangunan dua aplikasi seni bina, dalam erti kata pengkontenaan yang mengambil virtualisasi sehingga satu tahap. Jadi, daripada melakukan itu di peringkat perkakasan, ia menjadi lebih daripada operasi yang virtualisasi peringkat sistem. Dan kami melakukannya dengan menyediakan setiap permohonan dalam ringan sendiri, terpencil, runnable, dan mudah alih, yang paling penting, cara untuk benar-benar pakej segala-galanya yang diperlukan untuk menjalankan. Di mana-mana ia boleh dijalankan. Jadi, tidak kira jika anda berjalan di atas persekitaran dev tempatan, pengeluaran anda alam sekitar, pementasan atau ujian anda. Tidak kira apa yang mendasari infrastruktur di sana, anda mempunyai aplikasi bekerja berfungsi. Jadi itulah apa yang pada dasarnya bekas lakukan untuk masalah ini. Mereka menanganinya dengan pembungkusan dengan cara seperti yang ia boleh menjamin bahawa ia digunakan berjaya tidak kira di mana ia hidup. Jadi jika anda akan seperti, Bob ia masih OK. Jika anda keliru dengan apa yang saya katakan, Saya akan menerangkan lebih lanjut mengenai perkara itu. Jadi bagaimana buruh pelabuhan sendiri muat dalam gambar ini? Jadi buruh pelabuhan adalah platform terbuka dengan mudah, menekankan dengan mudah, untuk membina kapal, berlari, ringan diri mudah alih bekas aplikasi yang mencukupi di mana sahaja. Jadi, jika anda mengambil sesuatu dari ini bercakap, sila ambil yang berikut. Jika anda mempunyai aplikasi anda berjalan negara dan anda memajukannya dalam menggunakan platform buruh pelabuhan, mengharapkan ia akan berjaya dikerahkan. Tidak kira apa yang infrastruktur asas. Jadi, jika anda mempunyai buruh pelabuhan bekas dan ia bekerja, maka selagi ada buruh pelabuhan yang enjin pada side-- yang lain jika infrastruktur operasi anda menggunakan apa-apa Cloud, sama ada ia adalah AWS, atau Google atau Microsoft, atau mana-mana Awan awam, atau Cloud anda sendiri, atau stack terbuka anda Cloud, atau alam sekitar tempatan anda. Jika anda mempunyai enjin berjalan, yang artinya ia akan menjadi berjaya dikerahkan ke sana. Ia akan berjalan tepat tingkah laku yang sama seperti yang anda architected ia menjadi. Jadi, jika kita melihat at-- Saya akan melalui apa yang sebenarnya berada di dalam komponen utama buruh pelabuhan. Jadi Engine adalah teras buruh pelabuhan. Ia adalah otak ini. Ia orchestrates bangunan, perkapalan, dan melaksana dan menguruskan bekas sendiri. Saya akan menggali ke dalam apa Engine tidak butir lanjut dalam satu saat. Pada asasnya, kerana Doktor telah dibina sekitar seni bina pelayan pelanggan, jadi untuk berinteraksi dengan Enjin anda memerlukan beberapa jenis pelanggan. Imej adalah template dalam yang bekas dibina dari. Supaya imej pada dasarnya fail hanya statik. Templat dan bekas sebenarnya apa yang sedang berjalan pada masa jalanan yang berkhidmat permohonan anda atau melakukan sesuatu dengan data. Pendaftaran ditujukan sebagai masalah bagaimana anda sebenarnya pembekalan imej. Jadi, jika anda perlu berkongsi imej anda bekerja ke rakan sekerja anda atau kepada pasukan ops, anda menggunakannya menggunakan Registry. Anda boleh memuat turun sumber terbuka versi mengatakan bahawa buruh pelabuhan bekerja pada dan membuka sumber. Atau anda boleh menggunakan buruh pelabuhan bantuan, yang merupakan versi Awan untuk menolak dan tarik imej di luar sana. Itu satu perkara yang besar. Kerana ada yang besar ekosistem sekitar buruh pelabuhan dan ia benar-benar banyak menggunakan hub. Jadi untuk meringkaskan sini, ini adalah bagaimana minimalis buruh pelabuhan pelanggan aliran kerja. Anda berinteraksi dengan tuan rumah, dalam kes ini ia adalah daemon buruh pelabuhan. Ia adalah perkara yang sama seperti enjin. Anda boleh melakukan perintah seperti Buruh pelabuhan membina, tarik, jangka. Dan enjin itu sendiri pergi dan melakukan perkara-perkara. Jadi, sama ada ia berinteraksi dengan Pendaftaran menarik imej-imej dan lapisan imej. Sama ada jika anda mahu untuk menggunakan, menjalankan bekas, membunuh mereka, membuang mereka ke bawah, barang kecil. Jadi ini meringkaskan aliran kerja semua komponen ini. Jadi, jika anda mengambil setiap komponen dengan sendirinya. Jadi enjin, ia hanya daemon. Ia jenis akan bermain untuk menyokong pada Linux kerana ia tidak memerlukan ciri-ciri tertentu kernel Linux. Tetapi Windows berfungsi untuk melakukan perkara yang sama. Ia sepatutnya disokong oleh Windows Server 2016. Jadi, sekali lagi, tanggungjawab dengan enjin adalah untuk, atau untuk, membina imej. Tarik imej daripada buruh pelabuhan Hub atau Pejabat Pendaftaran anda sendiri. Jika anda selesai dengan imej-imej atau anda membuat imej baru, anda boleh menolak mereka kembali ke registry mengedarkan ke pasukan lain. Dan cuba untuk membendungnya dalam negara dan menguruskan kitaran bekas hidup dalam negara. Ia dibina sekitar HTTP REST API. Jadi secara teknikal anda boleh menulis pelanggan anda sendiri selagi ia menggunakan HTTP, yang adalah sangat mekanisme standard untuk bercakap dengan Engine dan banyak perkhidmatan lain. Dan anda boleh lihat dari di sini bahawa tidak kira apa infrastruktur adalah, selagi anda can-- semua yang anda perlukan adalah operasi yang sistem, Linux secara khusus. Dan anda boleh memasang buruh pelabuhan Engine di atas itu dan telah ia berjalan dan ia orchestrates, pada dasarnya, semua aplikasi satu, dua, dan tiga orang bekas yang sebenar. Jadi itulah Engine. Seperti yang saya nyatakan sebelum ini kerana anda perlu berinteraksi dengan enjin, ada pelanggan. Tetapi sebenarnya apabila anda memasang Buruh pelabuhan, ia kapal dengannya. Jadi ia mendapat dipasang, maka ia adalah satu binari tunggal. Dan anda boleh melakukan panggilan tempatan untuk enjin buruh pelabuhan anda. Atau panggilan jauh untuk Engines jauh. Ia menggunakan HTTP, kerana Saya nyatakan sebelum ini. Ada pelanggan GUI dipanggil Kitematic dari buruh pelabuhan. Dan ada pasti banyak orang lain yang sedang membina banyak GUI yang pada dasarnya melaksanakan beberapa HTTP panggilan untuk bercakap dengan Engine. Hanya beberapa arahan sampel. Jika anda melakukan versi buruh pelabuhan, ia akan menunjukkan kepada anda versi pelanggan dan juga versi pelayan. Jika anda melakukan maklumat buruh pelabuhan ia akan memberitahu anda semua maklumat yang berapa ramai bekas menjalankan atau diwujudkan, berapa banyak imej yang anda ada, dan sebagainya dan sebagainya. Di sini saya mempunyai, di sebelah kotak lepas, saya mempunyai Doktor jangka. Jadi itulah bagaimana saya sebenarnya mewujudkan bekas. Dan saya memberi kepada echo Hello World dan tidur untuk kali kedua dan barang kecil. Dan anda boleh melihat hasil. Jadi ia berterusan. Dan sama dengan Linux ps, anda boleh melihat semua proses dan, dalam hal ini, semua bekas berjalan. Merujuk kembali ini seseorang kepada bekas yang saya buat. Jadi, ini adalah benar-benar penting kerana, seperti, ia boleh menjadi agak mengelirukan. Jadi imej adalah baca sahaja koleksi fail, bukan? Mereka adalah apa bekas kita adalah berdasarkan. Tetapi mereka hanya baca sahaja. Jadi, anda bermula dengan imej asas. Ia cenderung untuk meniru OS-seperti, jadi Ubuntu, CentOS, imej asas barang kecil. Dan kemudian anda mula membina di atas itu, lapisan tertentu, yang akan membentuk imej akhir anda, keputusan akhir di sini. Dan setiap orang-orang lapisan harus mempunyai imej ibu bapa bahawa ia merujuk apabila ia sebenarnya mahu mewujudkan. Mereka tidak berubah, dalam erti kata itu kerana mereka baca sahaja, anda tidak boleh benar-benar membuat perubahan kepada mereka. Anda boleh menggunakan mereka untuk mewujudkan bekas dari imej, yang akan memanggil semua yang berikutnya imej yang diperlukan di bawahnya. Anda boleh membuat perubahan kepada lapisan yang berbeza, ia adalah satu lapisan menulis semula saya akan bercakap tentang dalam satu saat. Tetapi setiap daripada mereka lapisan tidak pernah berubah. Pada asasnya imej menggunakan sesuatu dipanggil Kesatuan Fail Sistem, UFS. Dan ada simpanan yang berbeza hujung belakang yang menggunakan teknologi ini. Dan apa yang bermakna adalah bahawa ia membawa bersama-sama sistem fail yang berbeza untuk membuat mereka kelihatan seperti satu. Jadi, anda boleh sebenarnya, dari perspektif permohonan, anda mempunyai bahagian atas pandangan bahawa rancangan semua sistem fail yang berbeza diperlukan bagi aplikasi yang berjalan. Tetapi mereka sebenarnya, mengenai perkara ini, mereka benar-benar di tempat-tempat yang berasingan dan digunakan oleh bekas lain juga. Jadi seperti yang anda boleh lihat di sini bahawa jika kita bermula dengan imej daemon sebagai imej asas, dan kemudian kita masuk dan menambah [? emacs?] dan maka itulah lapisan lain. Dan kemudian menambah Apache. Itulah lapisan lain. Dan kemudian kita menghabiskan bekas itu. Setiap satu daripada imej-imej, setiap orang-orang lapisan, adalah berbeza dan boleh menjadi semula oleh bekas lain. Jika anda melihat bekas diri mereka sendiri, mereka entah bagaimana seperti VM-suka, tetapi tidak dirawat masa yang sama. Jadi, mereka tidak mempunyai, secara teknikal, sistem operasi penuh di bawahnya. Mereka menggunakan kernel tunggal sistem operasi tuan rumah. Dan mereka membina di atas itu. Mereka meniru dalam bagaimana mereka melihat. Mereka meniru fail akar mereka sistem sistem operasi. Tetapi mereka benar-benar tidak mereplikasi. Jadi, bukannya mempunyai lapisan tidak berubah, lapisan terakhir, yang merupakan bekas sendiri, ia adalah satu lapisan baca-tulis. Yang juga menjalankan proses permohonan anda. Dan ia bergantung kepada lapisan asas. Setiap bekas adalah dicipta daripada imej. Dan imej yang boleh menjadi satu lapisan atau imej multilayer. Dan saya mahu ambil perhatian di sini yang banyak menggunakan buruh pelabuhan, atau berasaskan kepada mekanisme Copy-On-Tulis. Supaya, sebenarnya, jika anda tidak membuat perubahan kepada bekas, ia tidak akan mengambil ruang tambahan. Jadi itulah pada asasnya bagaimana anda merumuskan Salinan-On-Tulis. Ia akan pasti mempercepatkan masa boot untuk bekas. Kerana jika anda tidak membuat perubahan kepada bekas, ia menggunakan apa yang sudah ada. Jadi, bagaimana ia sebenarnya berfungsi. Sebahagian daripada ia seperti, sekarang, ia menggunakan sekurang-kurangnya dua inti utama ciri-ciri. Dan itu adalah pada dasarnya apa dicipta bahawa tahap pengasingan bagi bekas sendiri. Ciri-ciri tersebut adalah ruang nama dan cgroups. Jadi ruang nama adalah satu cara untuk mewujudkan sumber terpencil, supaya dalam bekas itu sendiri, hanya anda boleh melihat sumber-sumber tertentu. Seperti antara muka rangkaian atau pengguna tertentu atau barang kecil. Dan orang-orang hanya boleh dilihat dan hanya boleh diakses dalam bekas. Cgroup pada had sampingan yang lain bagaimana anda menggunakan sumber-sumber. CPU, memori, dan cakera. Apabila anda boleh pergi, saya bererti mereka yang sebenarnya ciri-ciri yang telah dibangunkan oleh- mereka adalah sebahagian daripada kernel Linux. Jadi mereka tidak mencipta semula oleh atau dicipta semula oleh buruh pelabuhan. Buruh pelabuhan menggunakan mereka. Apa Doktor benar-benar telah di sini ialah sebenarnya ia yang mewujudkan Dirancang ruang nama untuk setiap bekas dan mewujudkan cgroups supaya ia sungguh mudah untuk membuat bekas menggunakan ciri-ciri tersebut. Sudah tentu, seperti yang saya diterangkan sebelum ini, Kesatuan Fail Sistem dan Salinan-On-Tulis benar-benar membantu kelajuan dan cakera penggunaan bekas. Dan apabila anda mendapat anda tangan sekitar buruh pelabuhan, anda akan melihat berapa cepat ia adalah untuk sebenarnya berputar ke bekas dan air mata mereka ke bawah. Jadi, jika anda mungkin bertanya, bagaimana boleh anda benar-benar membina imej? Kami membina imej melalui proses mewujudkan bekas dan membuat perubahan, mengubah mereka, dan melakukan mereka ke dalam menjadi imej. Jadi ia adalah ayam dan rujukan telur di sini, kerana semua bekas datang daripada imej dan imej datang daripada bekas dilakukan, untuk kebanyakan bahagian. Terdapat tiga pilihan untuk membuat gambar. Saya akan menerangkan pertama dan terakhir. Anda boleh sama ada secara manual pergi dan menjalankan bekas dan membuat perubahan itu, seperti yang akan anda lakukan di mana-mana VM atau mana-mana sistem operasi, seperti memasang binari baru, menambah sistem fail, dan barang kecil. Dan kemudian anda keluar, kerana anda boleh melihat di sana. Saya sedang keluar bekas saya. Dan kemudian saya melakukan buruh pelabuhan melakukan. Dan saya melakukan itu. Anda boleh melihat bahawa jumlah sini hanya UUID, atau 12 pertama cebisan UUID itu. Atau bait UUID itu. Dan kemudian saya memanggil imej saya. Jadi sekarang buruh pelabuhan menjaga rakaman semua yang saya lakukan dan mencipta yang baru imej berdasarkan itu. Saya tidak akan bercakap tentang tarball, tetapi ada satu cara yang anda boleh mendapatkan satu, mewujudkan tunggal, atau membuat satu imej lapisan menggunakan tarball. Apa yang saya akan bercakap tentang perkara ini dan apa yang paling banyak digunakan hari ini, adalah Dockerfile. Yang secara teknikal pertama melangkah automatik oleh buruh pelabuhan sendiri. Jadi Dockerfiles perkara-perkara yang anda berada akan lihat dalam banyak repo GitHub hari ini. Ia pada dasarnya hanya fail teks yang menerangkan bagaimana untuk membina imej. Dan bagi setiap baris, ia sebenarnya mewujudkan bekas, melaksanakan talian itu, melakukan bekas yang menjadi imej baru, dan anda, pada dasarnya, menggunakannya untuk semua operasi berikutnya sehingga anda sampai ke imej yang terakhir. Yang pada dasarnya yang berakhir matlamat sini, akhirnya. Dan selepas anda exec-- selepas anda menulis Dockerfile anda, yang adalah semata-mata di dalam teks, anda melakukan buruh pelabuhan membina dan nama imej. Dan anda menunjuk ke arah yang yang mana Dockerfile adalah di. Dan anda boleh mengharapkan untuk melihat imej saya sebagai imej yang anda ada dalam negara. Jadi itu hanya visual contoh apa yang berlaku di. Anda bermula dengan imej asas. Anda menjalankan itu ke dalam bekas yang tidak mengubah imej asas itu sendiri. Tetapi sebaliknya mewujudkan menulis semula lapisan di atasnya di mana anda membuat perubahan, di mana anda melakukan dan anda mengulangi proses sehingga anda mendapat imej akhir anda. Dan dengan berbuat demikian, setiap binaan lain proses boleh menggunakan lapisan sama dan same-- asasnya Buruh pelabuhan cache mereka lapisan. Supaya jika yang saya lakukan yang tepat yang sama proses, tetapi bukan memasang PHP, Saya memasang Python. Ia akan menggunakan Apache dan Ubuntu. Jadi cara bahawa anda menggunakan cakera anda. Ia menggunakan cache dan imej yang terdapat di sana. Bahagian terakhir adalah Registry, yang adalah bagaimana anda mengedarkan imej anda. Dan, seperti yang saya nyatakan sebelum ini, ada versi Cloud itu, yang merupakan buruh pelabuhan Hub. Anda boleh pergi dan meneroka banyak, pada dasarnya ia adalah satu produk SAS awam yang anda masih boleh mempunyai imej persendirian, tetapi ada banyak imej awam. Ini sebenarnya tidak terhad, anda boleh menolak imej awam yang tidak terhad di sana. Dan ini adalah bagaimana anda boleh bekerjasama dengan pasukan anda. Anda hanya boleh menunjukkan mereka pada anda repo dan mereka boleh memuat turun atau imej anda dan mereka boleh memuat turun. Jadi cukup dengan ceramah. Siapa yang mahu melihat beberapa demo sebenar cepat? Baiklah. Jadi di sini saya ada. Ca anda semua melihat skrin saya? Baiklah. Jadi saya mempunyai buruh pelabuhan berjalan di sini, jadi saya boleh menyemak it's-- Ini adalah versi daripada buruh pelabuhan yang sedang berjalan. Boleh melakukan maklumat buruh pelabuhan. Semak semua maklumat tentang berapa ramai imej yang mereka ada, dan sebagainya dan sebagainya. Buruh pelabuhan PS, tiada apa-apa berjalan. Concatenated mereka. Jadi perkara pertama yang saya mahu lakukan adalah menunjukkan anda bagaimana anda boleh dengan mudah berjalan bekas. Jadi keindahan tentang Doktor jangka, jika ia benar-benar tidak mencari imej negara, secara lalai ia bercakap kepada Doktor Hub dan cuba untuk mencari di sana dan muat turun untuk anda. Jadi ia termasuk buruh pelabuhan tarik arahan, secara semula jadi. Jadi, jika saya melakukan buruh pelabuhan jangka, hello dunia. Jadi, pertama ia akan cuba untuk mencarinya. Jika tidak, seperti yang anda boleh lihat di sini, ia tidak boleh merasa dalam negara. Buat masa ini ia hanya ditarik dua lapisan yang membuat gambar itu dan saya berlari. Hello di dunia adalah hanya pada dasarnya output, apa yang anda telah lakukan. Jadi ini adalah yang paling mudah, satu contoh yang paling mudah. Jadi sebenarnya saya hanya berlari dan ditamatkan bekas sangat cepat. Jika saya mahu run-- dan dengan cara itu, jika Saya hendak masa itu, hanya supaya anda tahu, ini adalah berapa lama yang diperlukan untuk sebenarnya berputar dan membendungnya. Kami berukuran dalam milisaat. Jadi, anda boleh melihat berapa banyak ini boleh benar-benar membantu anda bukan sahaja dalam ujian, tetapi juga walaupun kerahan. Jadi itulah nota yang cepat pada itu. Perkara seterusnya yang saya akan lakukan adalah sebenarnya menjalankan imej saya sudah bersedia. Jadi buruh pelabuhan jangka. -d hanya bendera untuk memberitahu ia berjalan di latar belakang. Dan p memberikan pelabuhan tertentu. Kerana dengan lalai, bekas yang terpencil, jadi anda perlu untuk menentukan dengan tepat bagaimana ia boleh mengaksesnya. Dan dalam kes ini, saya memberitahu buruh pelabuhan untuk memetakan port rawak pada tuan rumah ke pelabuhan yang ditetapkan dalam bekas itu sendiri. Dan itu pada dasarnya di mana image-- yang mudah-mudahan ini adalah yang betul. Jadi ia muat turun selari antara satu sama dari orang-orang lapisan seperti yang anda boleh lihat di sini. Mereka adalah daripada lapisan yang membuat imej akhir yang saya dibina. Ia akan mengambil kedua. Dan VoilĂ . Jadi sekarang jika saya melakukan ps buruh pelabuhan, saya perlu melihat sesuatu yang sedang berjalan. Perlu saya lihat ID, imej ini ia adalah berdasarkan di luar, dan arahan yang telah dilaksanakan. Dan bagaimana untuk mencapainya adalah pada dasarnya anda pergi ke pelabuhan itu. Oleh itu, saya akan pergi ke supaya- ini adalah saya berjalan di atas AWS. Saya akan pergi ke 32769. Maaf. Dan di sini kita pergi. Jadi ini sebenarnya hanya perkhidmatan web yang menunjukkan yang bekas ia disampaikan dari. Jadi, anda boleh melihat bahawa ia adalah dari a9f bekas. Dan di sini ini adalah menamakan bekas. Jadi anda semua boleh lihat berapa cepat ia adalah untuk benar-benar bukan sahaja menarik tetapi juga menggunakan bekas ini. Kini langkah seterusnya adalah untuk melihat ke dalam Dockerfiles dan bagaimana kita boleh sebenarnya membina imej baru. Saya hanya akan pergi mendapatkan klon, yang mencuba hidangan Dockerfile berdasarkan yang lebih awal rajah, satu untuk Apache dan PHP. Mudah-mudahan saya ingat repo saya. Jadi saya mempunyai repositori saya sekarang. Dan anda akan melihat banyak ini sebenarnya. Saya tidak memasang pokok. Jadi, pada asasnya anda akan melihat bagaimana dokumentasi kod sumber anda di sekitar , dan kemudian yang Dockerfile pada bagaimana untuk benar-benar pakej itu. Jadi ia hanya sampel PHP yang bergema hello CS50. Jadi jika saya mahu untuk menjalankannya, Saya akan melakukan buruh pelabuhan membina. Saya perlu membina terlebih dahulu. Saya akan nama itu demo_cs50. Dan anda perlu tanda nama juga. Jadi mari kita memanggilnya v1 dot. Jadi seperti yang saya diterangkan sebelum ini, apa yang saya lakukan hari ini adalah saya memberitahu buruh pelabuhan pergi penggunaan bahawa- sebenarnya, maaf, buruk saya. Kami tidak melihat dengan di Dockerfile sendiri. Jadi perkara-perkara sahaja di sini adalah index.php serta fail readme dan Dockerfile. Jadi, jika anda lihat pada yang Dockerfile, jadi ia hampir sama dengan apa yang Saya diterangkan sebelum ini. Ia hanya sekumpulan langkah-langkah yang buruh pelabuhan melaksanakan dengan mencipta dan meruntuhkan bekas dan [? mengira?] mereka ke dalam imej. Dan pada dasarnya anda boleh see-- [didengar] ia sini-- tetapi ini adalah dari repo tempatan. Ia akan pergi dan merebut index.php. Jadi itulah kod sumber itu sahaja sebenarnya sebahagian daripada permohonan anda. Semua ini pada dasarnya sistem operasi paip, mendapat pakej yang betul dan Apache dan PHP, dan barang kecil. Tetapi ini adalah benar-benar mengambil index.php dan melakukan jenayah itu ke dalam bekas, ke dalam imej. Jadi, jika anda pergi ke hadapan dan menjalankan arahan dengan melakukan yang berikut, ia going-- sebenarnya, ini mungkin mengambil masa sedikit. Mudah-mudahan ia tidak mengambil masa yang lama. Jadi, anda boleh melihat langkah-langkah. Dan saya menggalakkan anda untuk pergi pulang ke rumah hari ini dan mencubanya. Dan Mano akan menerangkan bagaimana sebenarnya anda berbuat demikian. Tetapi ia adalah benar-benar hebat untuk melihat dengan jelas apa yang berlaku di belakang tabir. Tetapi ia sungguh mudah untuk membina imej dan menggunakan mereka menggunakan buruh pelabuhan. Ia mengambil sedikit lebih lama daripada yang saya harapkan. Mari kita lihat apa yang berlaku apabila atasmu sejuk. Jadi seperti yang anda boleh lihat, setiap satu daripada langkah-langkah mewakili baris dalam Dockerfile. Dan ia menunjukkan di sini bahawa ia berjaya membina imej ini. Jadi, jika saya lakukan imej buruh pelabuhan, saya akan melihat semua imej yang saya ada dalam negara. Dan salah seorang daripada mereka dipanggil saya nama pengguna, dan nama imej, dan representing-- tag terutamanya ia adalah satu tag versi. Jadi sekarang jika saya mahu menjalankan , saya melakukan buruh pelabuhan jangka. Dan saya hanya mahu melakukan -P -d. Adakah v1. Jadi saya boleh lihat sekarang bahawa saya mempunyai dua bekas berjalan, salah satu yang saya dicipta dan khabar yang Buruh pelabuhan satu yang saya dapat lepas. Dan anda boleh lihat di sini bahawa ia ditugaskan pelabuhan yang berbeza. Jadi, jika saya pergi ke IP yang sama tetapi sediakan port-- yang lain mudah-mudahan saya tidak. Jadi sekarang ini adalah aplikasi bahawa saya hanya dikerahkan. Jika saya ingin membuat perubahan, saya cepat boleh mengedit kod sumber dan melakukan yang berikut. Mari kita buat hello Harvard. Jadi sekarang apa yang berlaku berlaku ialah saya akan menanda dengan berbeza version-- oh, Bukankah ini guy-- menanda dengan versi yang berbeza. Dan anda akan see-- adakah anda seorang lelaki mengharapkan untuk mengambil jumlah yang sama masa membinanya kali kedua atau tidak? Baiklah, dan sesiapa sahaja yang tahu mengapa? Bersuara. PENONTON: [didengar] NICOLA KABAR: Ia pada dasarnya kita hanya menukar salah satu langkah yang kemudian. Dan oleh itu ia akan menggunakan cache dan menggunakan setiap orang-orang lapisan. Dan itu benar-benar sebahagian daripada ciri pembunuh buruh pelabuhan adalah bagaimana ia sebenarnya menggunakan dan penggunaan semula yang mengambil alih cakera anda untuk yang sama keping tepat maklumat. Jadi, jika kita melakukan perkara yang sama, ia mengambil masa hanya beberapa saat. Jika kita mahu redeploy-- jadi sekarang Saya harus mempunyai tiga bekas. Tetapi yang satu ini sedang disampaikan kepada the-- tujuh satu. Jadi kini ia bekas ketiga. Semua orang faham apa yang saya hanya lakukan di sini? Jadi sekarang jika anda ingin berkongsi ini bekas sebenar cepat dengan rakan-rakan anda, anda hanya boleh melakukan buruh pelabuhan menolak menamakan bekas, mudah-mudahan. Oleh sebab itu ia akan menolak supaya- Saya tidak ditandatangani di sini. Maaf tentang itu. Tetapi saya tidak akan menyelesaikan masalah ini sekarang. Tetapi pada dasarnya arahan yang salah hanya naik menolaknya. Dan anda akan dapat lihat jika anda pergi ke buruh pelabuhan Hub Dan anda login, anda berada akan dapat melihatnya. Dan kemudian anda boleh hanya menunjukkan sesiapa yang akan untuk menggunakan imej yang pergi dan tarik. Dan mereka boleh menggunakannya. Dengan itu, mudah-mudahan Saya jenis menunjukkan betapa mudahnya adalah untuk bekerja dengan buruh pelabuhan. Dan saya hanya akan memberikan kembali kepada Mano. Dan dia akan mengambil dari sini. MANO MARKAH: Baiklah terima kasih, terima kasih Nico. Jadi apa? Jadi salah satu perkara yang saya mahu lakukan adalah meletakkan bersama-sama mengapa ini adalah important-- yang mengapa buruh pelabuhan dan mengapa bekas adalah apa-apa pembangunan baru yang penting, cara baru untuk benar-benar melakukan perisian. Dan sebelum saya lakukan, saya akan hanya memperkenalkan statistik beberapa. Saya tidak akan membaca semua ini. Tetapi ini menunjukkan anda banyak tentang bagaimana popular ini berada dalam masyarakat. Teknologi buruh pelabuhan teras adalah sumber terbuka. Jadi itulah buruh pelabuhan Engine, Karang, Swarm, sekumpulan barangan lain adalah semua sumber terbuka. Dan kita ada, apa yang saya lakukan berkata, 1,300 pencarum. Anda lihat sekarang, jika anda melihat penggunaan di beberapa jawatan kosong, kali terakhir kita melihat, ia adalah kira-kira 43,000 pekerjaan bukaan secara khusus menyebut kebiasaan dengan buruh pelabuhan. Beratus-ratus juta imej mempunyai dimuat turun dari buruh pelabuhan Hub. Dan, baik, statistik lebih besar. Bagi mereka yang ingin tahu, ia pada asalnya ditulis dalam Python dan kemudian ditulis semula ke dalam Go. Dan ia hanya berada membuka source-- ia hanya telah dikeluarkan untuk kira-kira 2 1/2 tahun, yang bermaksud bahawa pada 2 dan 1/2 tahun, kami telah melihat sejumlah besar pertumbuhan dan kepentingan ini dalam masyarakat. Oleh itu, saya mahu bercakap sedikit tentang mengapa. Jadi hanya mengulangi beberapa Perkara utama Nico kanak, buruh pelabuhan pantas. Ia adalah mudah alih. Ia adalah diulang. Dan ia menetapkan persekitaran yang standard. Dan what-- ini adalah buruk sekali saya membasmi monoliths slide-- apa ia membantu orang melakukan, yang banyak industri perisian mula melakukan dalam awal tahun 2000, bergerak daripada ini monolitik aplikasi tunggal di mana setiap pergantungan terpaksa diuji sebelum keseluruhan aplikasi mempunyai yang akan digunakan, yang boleh bermakna laman web hanya tidak perlu lagi digunakan sekali setiap tiga bulan, atau lebih, kepada perkhidmatan yang lebih seni bina berorientasikan atau jenis yang berbeza berkomponen seni bina aplikasi. Dan sebagainya yang membolehkan ini jenis seni bina yang mengambil kesempatan daripada Buruh pelabuhan berjalan di ketiga-tiga kawasan utama pembangunan, yang adalah pembangunan menulis kod yang sebenarnya, menguji kod anda, dan menggunakan ia. Jadi mengapa penting ini? Jika anda a-- biarlah saya memberikan contoh. Jika anda adalah sebuah laman web pemaju peranti, anda berada membangunkan sebuah laman web yang yang berdasarkan pangkalan data yang David dihasilkan di sini. Maaf David, saya memanggil anda keluar. Jika anda mahu menggunakan segala-galanya, anda akan perlu menunggu di bawah tradisional pembangunan perisian monolitik alam sekitar, anda akan perlu menunggu sehingga dia telah dilakukan dengan pangkalan data sebelum anda sebenarnya boleh membuat apa-apa perubahan kepada laman web anda. Anda harus menggunakan semula yang keseluruhan permohonan untuk berbuat demikian. Dan apa buruh pelabuhan membantu anda lakukan adalah setiap kerja orang bagi komponen yang berbeza dan mengemas kini mereka kerana mereka pergi, hanya membuat memastikan bahawa muka tetap sama. Jadi apa yang telah dilakukan adalah ia beralih orang daripada melakukan ini monolitik besar-besaran perisian architected yang digunakan setiap bulan untuk berterusan integrasi dan pembangunan yang berterusan alam sekitar. Sekarang ini tidak unik kepada buruh pelabuhan, tetapi buruh pelabuhan menjadikan ia lebih mudah, yang bermakna anda pada dasarnya sentiasa menggerakkan. Kita bercakap kepada perusahaan yang menggerakkan aplikasi menghadapi awam beribu-ribu kali sehari kerana mereka melihat nilai dalam hanya membuat perubahan kecil, dan selagi kerana ia berjalan melalui ujian, membiarkan ia keluar ke dalam pengeluaran. Nico sentiasa memberitahu saya sebelum ini bahawa dalam banyak persekitaran, kitaran hidup piawai bekas diukur dalam saat, manakala mesin maya boleh diukur dalam bulan. Saya mahu mengambil sedikit menghidupkan sini kerana saya di institusi pendidikan. Saya mahu memberikan contoh bagaimana ini kerja-kerja dalam penyelidikan pendidikan keadaan. Jadi ada organisasi dipanggil bioboxes. Bioboxes tidak DNA analisis untuk penyelidik. Sekarang apa yang mereka dapati adalah bahawa apabila yang researcher-- dan ini tidak kesalahan apa-apa butir researcher-- tetapi apabila seorang penyelidik dikerahkan algoritma untuk menganalisis, Dengan cara yang tertentu, sampel DNA, mereka akan menulis perisian, menerbit, mungkin untuk GitHub atau tempat lain, dan kemudian mereka telah dilakukan. Baik masalah ini adalah bahawa ia tidak semestinya diulang. Kerana untuk memahami perisian, mereka akan ditubuhkan untuk persekitaran pembangunan yang tepat bahawa penyelidik yang digunakan, biasanya komputer riba mereka, atau pelayan, atau data yang tertumpu bahawa mereka telah menggunakan. Dan akibatnya, ia adalah amat sukar untuk mengeluarkan semula hasil penyelidikan apabila menganalisis sampel DNA untuk melihat perkara-perkara seperti incidence-- membandingkan kejadian serangan jantung berdasarkan gen tertentu yang hadir, misalnya, atau risiko kanser, atau mana-mana jenis lain perkara. Jadi apa yang mereka lakukan sebaliknya adalah mereka mula mencipta bekas. Dan anda boleh pergi ke bioboxes.org, ia adalah satu organisasi yang besar. Dan apa yang mereka lakukan ialah mereka menghasilkan bekas berdasarkan penyelidikan. Dan kemudian apabila seseorang menghantar dalam sampel mereka, mereka boleh menjalankannya. Dan ia mempunyai semua alam sekitar diperlukan untuk menjalankan algoritma yang dan menghasilkan keputusan. Dan mereka mendapati bahawa mereka berada lebih cenderung dan banyak lebih cepat dapat mengembalikan hasil kepada rakyat. Dan sebenarnya, apa yang orang lakukan menjalankan analisis mereka sendiri pada DNA, hantar yang masuk ke bioboxes, dan kemudian biobox hanya mengambil data, berjalan ia terhadap pelbagai bekas yang berbeza untuk melihat hasil yang berbeza berdasarkan kajian yang berbeza. Jadi ia adalah satu yang sangat kuat cara di mana penyelidik boleh membuat contoh tunggal yang membolehkan orang lain untuk mencuba dan menghasilkan semula keputusan. Jadi bagaimana anda bermula? Kami juga disokong pada Linux. Jadi, jika anda mahu untuk memasang apa-apa pada Linux, anda menggunakan standard anda pengurus pakej untuk dipasang. Jika anda menggunakan Debian, ia mendapatkan apt. CentOS adalah yum. Fedora Red Hat adalah rpm-- saya tidak ingat. Bagaimanapun, ia adalah semua di sana. Kami menyokong pelbagai jenis edaran Linux. Anda boleh menyemak mereka keluar. Kami juga mempunyai pilihan supaya anda boleh dijalankan pada Mac atau Windows. Sekarang Nico menjelaskan sebelum ini ia hanya disokong pada Linux. Itu betul kerana ia memerlukan kernel Linux. Tetapi, anda boleh berjalan di mesin maya. Dan apa yang Toolbox buruh pelabuhan tidak, yang anda boleh memuat turun, ia memberi anda bahawa mesin maya. Jadi hanya yang cepat 48 kedua, saya fikir, dimuat turun. Anda hanya mencari pada buruh pelabuhan Toolbox, muat turun kepada Mac, dan bahagian ini adalah tentu dipercepatkan kerana yang mahu menonton isyarat muat turun? Pemasangan standard Mac, dan kemudian anda akan melihat Jerome dimasukkan ke dalam kata beliau. Itulah yang sangat menarik. Dan kemudian ia memasang sejumlah besar alat. Dan terutamanya ia akan memasang baris arahan. Dan kemudian anda boleh melihat Jerome menguji imej beliau. Dan kemudian berdasarkan ini, anda boleh melihat bahawa YouTube berpendapat bahawa Nico berminat Star Wars, The Jimmy Kimmel menunjukkan, dan saya rasa Ellen. Saya rasa yang terakhir adalah klip dari sebuah rancangan Ellen. Jadi buruh pelabuhan Toolbox walaupun datang dengan lebih daripada sekadar Mesin buruh pelabuhan. Jadi buruh pelabuhan Machine ialah Perkara yang membantu anda menyediakan maya mesin Windows anda atau Mac-- kotak Windows atau Mac anda box-- dan membantu anda melakukan peruntukan, Tetapi ia juga datang dengan Swarm dan Karang, yang direka untuk membantu anda melakukan besar penugasan permohonan anda. Jadi, jika anda mahu untuk menguruskan kelompok nod, kelompok bekas, Karang dan Swarm adalah cara untuk pergi tentang itu. Dan sudah tentu ia datang dengan Buruh pelabuhan Enjin dan Kitematic, yang GUI desktop ini. Saya juga perlu menyebut buruh pelabuhan Registry, yang tidak termasuk dalam Toolbox, tetapi ia adalah satu cara untuk anda untuk menjalankan anda sendiri pejabat pendaftaran buruh pelabuhan Images seperti buruh pelabuhan Hub, tetapi anda juga boleh hanya menggunakan Buruh pelabuhan Hub sebagai satu cara untuk berbuat demikian. Dan, plot twist, anda lihat ia berjalan di dalam bekas. Dan itulah bagaimana kita mengedarkan slaid kami. Ini seluruh persembahan adalah sebenarnya dek slaid HTML. Dan ia sedang berjalan di sebuah bekas, yang anda boleh mendapatkan oleh- NICOLA KABAR: Ya, jadi ia berjalan penuh masa di Dagangan saya. Dan saya menyampaikan daripadanya. Dan anda hanya melakukan buruh pelabuhan selepas anda memasang Toolbox anda. Anda hanya boleh melakukan buruh pelabuhan jangka dan mendapatkannya, dan menggunakan slaid. MANO MENANDAKAN: Dan itu sahaja. Oleh itu, kita mengucapkan terima kasih kepada anda semua kerana datang. Dan kami gembira untuk menjawab soalan. Saya perlu menyebut sebelum sesiapa daun ada T-shirt di sana. Maaf sesiapa yang menonton ini di Livestream atau video, tetapi kita mempunyai buruh pelabuhan T-shirt di sana. Dan kita tahu pelajar buruh pelabuhan, dan dalam pengalaman saya, profesor juga, seperti pakaian percuma. Jadi terima kasih semua untuk keluar. Dan mengikuti kami di Twitter jika anda mahu, atau tidak. Saya tidak peduli. Juga ikuti buruh pelabuhan di Twitter. Itulah juga menarik. Dan kemudian itu sahaja. Docker.com. Terima kasih. [Tepuk tangan]