[MUSIC PLAYING] DAVID Malan: Baiklah. Terima kasih banyak untuk datang. Ini adalah seminar CS50 pada Docker, sebuah teknologi yang we diri kita sendiri dan CS50 sudah mulai menggunakan untuk beberapa waktu sekarang. Jadi nama saya David Malan, saya mengajar Pengantar Harvard untuk Ilmu Komputer. Untuk beberapa tahun, kami telah memberikan siswa client-side download mesin virtual di mana mereka melakukan masalah set mereka. Bahwa kita sekarang telah dialihkan untuk lingkungan Cloud yang benar-benar menggunakan teknologi ini disebut Docker, sehingga semua CS50 siswa sekarang memiliki mereka Docker wadah sendiri Anda akan segera mendengar semua tentang. Selain itu, pada server CS50 ini klaster sisi, selama bertahun-tahun kami menggunakan Cloud Server Amazon. Kami sedang berlari individu mesin virtual. Itu juga, kita sudah mulai transisi ke hal-hal ini disebut Docker wadah sehingga semua aplikasi kami sekarang sempurna terisolasi dari satu sama lain. Jadi untuk itu dan lebih, memungkinkan saya untuk memperkenalkan teman-teman kita, Nico dan Mano, dari Docker sendiri. Nicola KABAR: Terima kasih, David. Halo semua. Nama saya Nico dan ini Mano. Kami dari Docker. Kami akan berbicara about-- memberikan kalian intro untuk Docker, dan mudah-mudahan, menjelang akhir pembicaraan ini Anda dapat mewujudkan berapa banyak Anda dapat menggunakan dokter untuk oksalat pengembangan aplikasi Anda dan penyebaran. Jadi, kita akan memulai nyata cepat dengan beberapa informasi latar belakang. Jelaskan apa Docker adalah semua tentang. Bagaimana cara kerjanya? Bagaimana cara architected? Saya akan melakukan beberapa demo. Dan Mano akan menjadi menjelaskan bagaimana Anda dapat menggunakan Docker dan memberikan Anda langkah-langkah spesifik bagaimana Anda bisa memulai. Saya sangat menghargai jika kalian dapat menahan off untuk pertanyaan Anda menjelang akhir. Dengan begitu, saya bisa mengatasi mereka pertanyaan seluruh presentasi. Jadi kita akan meninggalkan beberapa waktu menjelang akhir untuk pertanyaan. Jadi hanya nyata cepat, yang memiliki benar-benar pernah bekerja pada Docker, seperti bermain dengan itu? Mengagumkan. Keren. Besar. Jadi, aku akan mulai dengan beberapa sejarah. Jadi kembali di tahun 90-an dan awal 2000-an, pada dasarnya sebagai pengembang web, pengembang aplikasi, ketika mereka pergi untuk menyebarkan aplikasi itu diikat telanjang logam. Itu satu server. Itu adalah salah satu aplikasi. Secara tradisional, contoh akan seperti LAMP stack, di mana Anda benar-benar harus memunculkan kolam sumber daya. CPU, memori, disk, jaringan, instalasi sistem operasi di atas itu. Jika Anda melayani sesuatu, jika Anda benar-benar memiliki server web, Anda perlu sesuatu seperti Apache untuk melayani. Jika aplikasi Anda membutuhkan database backhand, Anda akan menginstal sesuatu seperti MySQL, dan sebagainya. Dan jika Anda memerlukan waktu berjalan, PHPs dan PHP Python bekerja di sana. Dan jadi kita benar-benar harus mengambil langkah-langkah dalam rangka untuk mendapatkan aplikasi Anda dan berjalan. Jika Anda membutuhkan lebih banyak daya komputasi, Anda pada dasarnya harus memanggil pria Ops Anda atau gal untuk pergi dan rak atas baru hardware, menghubungkannya, dan Anda harus mengulang proses lagi dan lagi. Jadi proses ini adalah relatif mahal. Pasti sangat lambat. Itu tidak efisien. Dan dalam banyak kasus, Anda hardware yang kurang dimanfaatkan. Jadi, di tahun 90-an dan awal 2000-an, virtualisasi hardware datang di. Dan seperti yang Anda lihat di sini di gambar, pada dasarnya apa yang mereka lakukan disarikan kolam sumber informasi gratis hardware dan jenis disajikan mereka ke lapisan atas, dalam hal ini, tamu sistem operasi. Dan seluruh gagasan mesin virtual datang di dan yang benar-benar membantu Cloud komputasi seperti yang kita kenal sekarang. Jadi apa artinya adalah Anda dapat menjalankan beberapa VMS, yang berarti beberapa tumpukan, beberapa aplikasi pada mesin fisik yang sama. Ini pasti membantu dengan kecepatan penyebaran aplikasi. Pasti dengan biaya. Anda tidak harus pergi dan menghabiskan energi, waktu, dan sumber daya untuk rak lebih server untuk mendapatkan lebih menghitung. Dan kecepatan benar-benar membawa sumber daya up jauh lebih cepat. Besar. Jadi kita memecahkan kelaparan dunia, bukan? Tidak terlalu. Jadi, virtualisasi sebanyak itu benar-benar membantu, mengatasi masalah, sebenarnya diperkenalkan banyak tantangan. Hypervisor pasti memperkenalkan banyak kompleksitas, penanganan yang mendasari pool sumber daya. Ini lebih berat dalam arti bahwa sebelum Anda memiliki sistem operasi tunggal yang adalah seperti tiga, empat pertunjukan pada disk. Sekarang, jika Anda memiliki 10 mesin pada hardware tunggal Anda harus kalikan dengan jumlah mesin. Hal ini pasti lebih mahal dalam arti Anda masih harus mendapatkan lisensi untuk teknologi virtualisasi jika tidak open source. Tapi, mari kita tidak mengambil semua kredit dari virtualisasi. Karena apa yang terjadi adalah ada banyak tumpukan dan banyak perangkat lunak teknologi yang memungkinkan oleh seberapa cepat Anda bisa mendapatkan ke sumber daya dengan booming Cloud. Jadi, hari ini aplikasi atau layanan dapat menggunakan salah satu runtimes berikut atau database. PHP, Python, MySQL, Redis, entah apa lagi. Jadi ada banyak kompleksitas pada ini jumlah tumpukan untuk benar-benar memunculkan layanan tunggal. Dan bersama dengan itu, Anda memiliki banyak sumber yang mendasari atau infrastruktur jenis untuk menguji menyebarkan dan pada dasarnya ambil untuk produksi aplikasi tersebut bahwa Anda sedang mengembangkan. Terutama karena tim Anda memiliki tumbuh yang bekerja pada aplikasi tersebut, ada banyak kompleksitas dan tantangan yang dibawa untuk memastikan bahwa yang cycle-- dasarnya aplikasi siklus pengembangan, adalah sebenarnya sukses. Jadi, fakta bahwa aplikasi Anda bekerja secara lokal di VM lokal Anda tidak menjamin bahwa rekan Anda akan mengharapkan hasil yang sama. Dan ketika tim operasi adalah yang terlibat dalam mengambil apa yang Anda miliki dan menyebarkan dalam produksi skala, juga tidak ada jaminan bahwa yang benar-benar akan terjadi. Jadi ini meninggalkan kita dengan benar big-- banyak tanda tanya, banyak tantangan sebenarnya dihadapi sama kembali hari-hari. Dan itu mengingatkan kita industri pelayaran. Jadi industri perkapalan memiliki banyak barang, seperti yang Anda lihat di sisi kiri. Dan di sisi kanan, ada banyak, pada dasarnya, cara untuk kapal barang-barang. Dan apa yang terjadi bersama pasangan Orang-orang datang bersama-sama dan berkata, kita perlu standarisasi bagaimana kita benar-benar kapal barang-barang. Dan boom, Anda memiliki intermodal kontainer pengiriman. Jadi mereka menyepakati paling ukuran umum untuk wadah. Bagaimana menangani mereka. Apa metode yang tepat yang Anda butuhkan untuk memuat mereka dan membongkar mereka. Dan karena itu, yang benar-benar membantu industri perkapalan. Sekarang, lebih dari 90% fokus diangkut global menggunakan wadah tersebut. Dan yang pasti berkurang biaya serta kerusakan akibat pengiriman. Jadi kita mengambil model yang sama dan kami menerapkan pengembangan perangkat lunak aplikasi dua arsitektur, dalam arti containerization yang mengambil virtualisasi naik satu tingkat. Jadi, bukannya melakukan itu di tingkat perangkat keras, menjadi lebih dari sebuah operasi virtualisasi tingkat sistem. Dan kami melakukannya dengan memberikan masing-masing aplikasi dalam ringan sendiri, terisolasi, runnable, dan portabel, yang paling penting, cara untuk benar-benar paket segala sesuatu yang dibutuhkan untuk menjalankan. Di mana saja itu dapat dijalankan. Jadi, tidak peduli apakah Anda menjalankan pada lingkungan dev lokal, produksi Anda lingkungan, pementasan atau pengujian. Tidak peduli apa yang mendasari infrastruktur yang ada, Anda memiliki aplikasi yang bekerja fungsional. Jadi itulah yang pada dasarnya kontainer lakukan untuk masalah ini. Mereka mengatasi dengan kemasan itu sedemikian rupa yang dapat menjamin bahwa itu dikerahkan berhasil tidak peduli di mana ia hidup. Jadi jika Anda akan seperti, Bob itu masih OK. Jika Anda bingung dengan apa yang saya katakan, Saya akan mengelaborasi itu. Jadi bagaimana Docker sendiri cocok dalam gambar ini? Jadi Docker adalah sebuah platform terbuka dengan mudah, menekankan mudah, untuk membangun kapal, menjalankan, ringan diri portabel aplikasi yang cukup kontainer di mana saja. Jadi jika Anda mengambil sesuatu dari ini bicara, mohon berikut. Jika Anda memiliki aplikasi Anda berjalan lokal dan Anda dikembangkan dalam menggunakan platform Docker, mengharapkan itu harus berhasil dikerahkan. Tidak peduli apa infrastruktur dasar. Jadi jika Anda memiliki Docker kontainer dan itu bekerja, maka asalkan ada Docker sebuah mesin pada side-- lainnya jika infrastruktur operasi Anda adalah menggunakan Cloud, apakah itu adalah AWS, atau Google, atau Microsoft, atau salah satu Awan publik, atau Cloud Anda sendiri, atau tumpukan terbuka Anda Awan, atau lingkungan setempat. Jika Anda memiliki mesin berjalan, yang berarti itu akan menjadi berhasil ditempatkan di sana. Ini akan berjalan perilaku yang sama persis Anda architected untuk menjadi. Jadi jika kita melihat at-- aku akan untuk pergi melalui apa yang sebenarnya berada di komponen utama Docker. Jadi Mesin adalah inti dari Docker. Ini adalah otak. Ini orchestrates bangunan, pengiriman, dan menyebarkan dan mengelola wadah sendiri. Aku akan menggali apa Mesin di rincian lebih dalam satu detik. Pada dasarnya, karena Dokter dibangun sekitar arsitektur client server, sehingga untuk berinteraksi dengan Mesin Anda perlu semacam klien. Gambar adalah template di yang kontainer dibangun dari. Jadi gambar pada dasarnya file hanya statis. Template dan kontainer sebenarnya apa berjalan pada runtime yang adalah melayani aplikasi Anda atau melakukan sesuatu dengan data. Registry ditujukan sebagai masalah bagaimana Anda benar-benar mendistribusikan gambar. Jadi jika Anda perlu berbagi gambar Anda bekerja untuk rekan Anda atau untuk tim ops, Anda menggunakannya menggunakan Registry. Anda dapat men-download open source versi itu yang Docker bekerja pada dan membuka bersumber. Atau Anda dapat menggunakan Docker bantuan, yang merupakan versi Cloud untuk mendorong dan menarik gambar di luar sana. Itu hal yang besar. Karena ada besar ekosistem di sekitar Docker dan itu benar-benar sangat memanfaatkan hub. Jadi untuk meringkas di sini, ini adalah bagaimana minimalis Docker alur kerja klien. Anda berinteraksi dengan tuan rumah, di hal ini itu daemon Docker. Ini hal yang sama seperti mesin. Anda melakukan perintah seperti Docker membangun, tarik, run. Dan Engine itu sendiri berjalan dan melakukan hal-hal. Jadi baik itu berinteraksi dengan Registry untuk menarik gambar-gambar dan lapisan gambar. Apakah jika Anda ingin menyebarkan, menjalankan kontainer, membunuh mereka, melemparkan mereka ke bawah, yang lainnya. Jadi ini merangkum alur kerja dari semua komponen ini. Jadi jika Anda mengambil setiap komponen dengan sendirinya. Jadi Mesin, itu hanya daemon. Ini akan jenis memainkannya untuk mendukung di Linux karena tidak memerlukan fitur kernel Linux tertentu. Tapi Windows bekerja melakukan hal yang sama. Ini seharusnya didukung oleh Windows Server 2016. Jadi, sekali lagi, tanggung jawab dengan mesin adalah untuk, atau untuk, membangun citra. Tarik gambar dari Docker Hub atau Registry Anda sendiri. Jika Anda sudah selesai dengan gambar-gambar atau Anda membuat gambar baru, Anda dapat mendorong mereka kembali ke registry untuk mendistribusikan mereka untuk tim lain. Dan mencoba untuk menampungnya lokal dan mengelola siklus hidup kontainer lokal. Hal ini dibangun di sekitar HTTP REST API. Jadi secara teknis Anda bisa menulis klien Anda sendiri asalkan menggunakan HTTP, yang merupakan sangat mekanisme standar untuk berbicara dengan Mesin dan banyak layanan lainnya. Dan Anda dapat melihat dari di sini bahwa terlepas apa infrastruktur adalah, selama Anda can-- semua Anda butuhkan adalah sebuah operasi sistem, Linux khusus. Dan Anda dapat menginstal Docker Mesin di atas itu dan telah berjalan dan orchestrates, pada dasarnya, semua ini app satu, dua, dan tiga kontainer yang sebenarnya. Jadi itu mesin. Seperti yang saya sebutkan sebelumnya karena Anda perlu berinteraksi dengan mesin, ada klien. Tapi sebenarnya ketika Anda menginstal Docker, kapal dengan itu. Jadi terinstal, jadi biner tunggal. Dan Anda dapat melakukan panggilan lokal untuk Anda Docker Mesin. Atau panggilan jarak jauh ke Mesin terpencil. Itu menggunakan HTTP, sebagai Saya sebutkan sebelumnya. Ada klien GUI disebut Kitematic dari Docker. Dan ada pasti banyak orang lain yang sedang membangun banyak GUI yang pada dasarnya menerapkan beberapa HTTP panggilan untuk berbicara dengan mesin. Hanya beberapa perintah sampel. Jika Anda melakukan versi Docker, itu akan menampilkan versi klien serta versi server. Jika Anda melakukannya Info Docker itu akan memberitahu Anda semua informasi tentang berapa kontainer yang berjalan atau diciptakan, berapa banyak gambar yang Anda miliki, dan seterusnya dan seterusnya. Di sini saya punya, di sebelah kotak terakhir, saya harus Dokter run. Jadi itulah bagaimana aku benar-benar menciptakan wadah. Dan aku memberikannya echo Hello World dan tidur untuk kedua dan yang lainnya. Dan Anda dapat melihat hasil. Jadi itu yang sedang berlangsung. Dan mirip dengan Linux ps, Anda dapat melihat semua proses dan, dalam kasus ini, semua kontainer berjalan. Merujuk kembali satu ini untuk wadah Saya baru saja membuat. Jadi, ini benar-benar penting karena, seperti, itu dapat sedikit membingungkan. Sehingga gambar adalah read-only kumpulan file, kan? Mereka adalah apa wadah kami didasarkan pada. Tapi mereka hanya read-only. Jadi Anda memulai dengan gambar dasar. Hal ini cenderung untuk meniru OS-seperti, sehingga Ubuntu, CentOS, gambar dasar yang lainnya. Dan kemudian Anda mulai membangun di atas itu, lapisan tertentu, yang akan membuat gambar akhir Anda, hasil akhir di sini. Dan masing-masing lapisan harus memiliki gambar orang tua bahwa itu referensi ketika benar-benar ingin membuat. Mereka yang berubah, dalam arti itu karena mereka read-only, Anda tidak bisa benar-benar membuat perubahan pada mereka. Anda dapat menggunakannya untuk membuat kontainer dari gambar, yang akan memanggil semua berikutnya gambar yang diperlukan bawahnya. Anda dapat melakukan perubahan untuk lapisan yang berbeda, itu lapisan menulis ulang aku akan berbicara tentang dalam satu detik. Tapi masing-masing lapisan tidak pernah berubah. Pada dasarnya gambar menggunakan sesuatu disebut Union File System, UFS. Dan ada penyimpanan yang berbeda backends yang memanfaatkan teknologi ini. Dan apa artinya adalah bahwa hal itu menyatukan file sistem yang berbeda untuk membuat mereka terlihat seperti satu. Jadi Anda benar-benar bisa, dari perspektif aplikasi, Anda memiliki atas pandangan yang menunjukkan semua sistem file yang berbeda dibutuhkan untuk aplikasi yang berjalan. Tapi mereka benar-benar, ini, mereka benar-benar di tempat terpisah dan dimanfaatkan oleh wadah lain juga. Jadi seperti yang Anda lihat di sini bahwa jika kita mulai dengan gambar daemon sebagai gambar dasar, dan kemudian kita masuk dan menambahkan [? emacs?] dan kemudian itu lapisan lain. Dan kemudian menambahkan Apache. Itu lapisan lain. Dan kemudian kita menghabiskan kontainer itu. Masing-masing gambar, masing-masing lapisan, berbeda dan dapat digunakan kembali oleh wadah lainnya. Jika Anda melihat kontainer sendiri, mereka entah bagaimana seperti VM-seperti, tetapi tidak diobati saat yang sama. Jadi, mereka tidak memiliki, secara teknis, sistem operasi penuh di bawah mereka. Mereka menggunakan kernel tunggal dari sistem operasi host. Dan mereka membangun di atas itu. Mereka meniru bagaimana mereka terlihat. Mereka meniru file root mereka sistem dari sistem operasi. Tapi mereka benar-benar tidak mereplikasi. Jadi, alih-alih memiliki lapisan berubah, lapisan terakhir, yang merupakan wadah itu sendiri, itu adalah lapisan baca-tulis. Yang juga menjalankan proses aplikasi Anda. Dan itu tergantung pada lapisan yang mendasari. Setiap kontainer adalah dibuat dari sebuah gambar. Dan gambar yang dapat menjadi tunggal layer atau gambar multilayer. Dan saya ingin untuk dicatat di sini yang Docker berat menggunakan, atau didasarkan pada mekanisme Copy-On-Write. Sehingga, sebenarnya, jika Anda tidak membuat perubahan ke wadah, itu tidak akan mengambil ruang ekstra. Jadi itulah dasarnya bagaimana Anda meringkas Copy-On-Write. Ini akan pasti mempercepat waktu boot untuk wadah. Karena jika Anda tidak membuat perubahan wadah, itu memanfaatkan apa yang sudah ada. Jadi, bagaimana benar-benar bekerja. Bagian dari itu seperti, sekarang, menggunakan setidaknya dua kernel kunci fitur. Dan yang pada dasarnya apa yang menciptakan tingkat isolasi untuk wadah sendiri. Fitur tersebut adalah ruang nama dan cgroups. Jadi ruang nama adalah cara untuk menciptakan sumber daya terisolasi, sehingga dalam wadah itu sendiri, hanya Anda dapat melihat sumber daya tertentu. Seperti antarmuka jaringan atau pengguna atau entah apa lagi tertentu. Dan orang-orang yang hanya terlihat dan hanya diakses dalam wadah. Cgroup pada batas sisi lain bagaimana Anda menggunakan sumber daya tersebut. CPU, memori, dan disk. Ketika Anda bisa masuk, saya berarti mereka sebenarnya fitur yang dikembangkan by-- mereka bagian dari kernel Linux. Jadi mereka tidak diciptakan kembali oleh atau diciptakan oleh Docker. Buruh pelabuhan menggunakan mereka. Apa Dokter benar-benar melakukan di sini adalah sebenarnya menciptakan diatur ruang nama untuk setiap kontainer dan menciptakan cgroups sehingga itu ridiculously mudah untuk membuat wadah menggunakan fitur tersebut. Tentu saja, seperti yang saya jelaskan sebelumnya, Union File Systems dan Copy-On-Write benar membantu kecepatan dan disk pemanfaatan kontainer. Dan setelah Anda mendapatkan Anda tangan sekitar Docker, Anda akan melihat seberapa cepat itu adalah untuk sebenarnya berputar ke atas kontainer dan air mata mereka. Jadi, jika Anda mungkin bertanya, bagaimana bisa Anda benar-benar membangun gambar? Kami membangun citra dengan proses penciptaan kontainer dan membuat perubahan, mengubah mereka, dan melakukan mereka untuk menjadi sebuah gambar. Jadi itu adalah ayam dan referensi telur di sini, karena semua kontainer datang dari gambar dan gambar datang dari wadah berkomitmen, sebagian besar. Ada tiga pilihan untuk membuat gambar. Aku akan menjelaskan pertama dan terakhir. Anda dapat secara manual pergi dan menjalankan wadah dan membuat perubahan-perubahan tersebut, seperti yang akan Anda lakukan pada setiap VM atau sistem operasi, seperti menginstal binari baru, menambahkan file sistem, dan yang lainnya. Dan kemudian Anda keluar, sebagai Anda dapat melihat di sana. Saya keluar wadah saya. Dan kemudian aku melakukan Docker komit. Dan aku melakukan itu. Anda dapat melihat bahwa jumlah sini hanya UUID, atau yang pertama 12 bit UUID. Atau byte UUID. Dan kemudian aku menyebutnya gambar saya. Jadi sekarang Docker mengurus merekam semua yang saya lakukan itu dan menciptakan baru gambar berdasarkan itu. Saya tidak akan berbicara tentang tarbal, tapi ada cara Anda bisa mendapatkan satu, membuat tunggal, atau membuat satu layer gambar menggunakan tarball. Yang saya akan berbicara tentang ini dan apa yang kebanyakan digunakan saat ini, adalah Dockerfile. Yang secara teknis pertama langkah otomatis oleh Docker sendiri. Jadi Dockerfiles hal-hal yang Anda akan melihat di banyak GitHub repo hari ini. Itu pada dasarnya hanya file teks yang menggambarkan persis bagaimana membangun sebuah gambar. Dan untuk setiap baris, itu benar-benar menciptakan wadah, mengeksekusi baris tersebut, melakukan wadah yang menjadi gambar baru, dan Anda, pada dasarnya, menggunakannya untuk semua operasi berikutnya sampai Anda mendapatkan gambar terakhir. Yang pada dasarnya adalah mengakhiri tujuan di sini, akhirnya. Dan setelah Anda exec-- setelah Anda menulis Dockerfile Anda, yang adalah murni dalam teks, Anda melakukan Docker membangun dan nama gambar. Dan Anda menunjuk pada saat itu yang dimana Dockerfile di. Dan Anda dapat mengharapkan untuk melihat gambar saya sebagai gambar yang Anda miliki secara lokal. Jadi itu hanya visual contoh apa yang terjadi di. Anda mulai dengan gambar dasar. Anda menjalankan ke dalam wadah yang tidak mengubah gambar dasar itu sendiri. Tapi bukannya menciptakan menulis ulang lapisan di atasnya di mana Anda membuat perubahan, di mana Anda berkomitmen dan Anda ulangi proses sampai Anda bisa gambar akhir Anda. Dan dengan demikian, setiap membangun lainnya Proses dapat menggunakan lapisan yang sama dan same-- pada dasarnya Docker cache layer tersebut. Sehingga jika saya melakukan hal yang sama persis proses, tapi bukannya menginstal PHP, Saya menginstal Python. Ini akan menggunakan Apache dan Ubuntu. Sehingga cara Anda menggunakan disk Anda. Ini memanfaatkan cache dan gambar yang tersedia di sana. Bagian akhir adalah Registry, yang adalah bagaimana Anda mendistribusikan gambar Anda. Dan, seperti yang saya sebutkan sebelumnya, ada versi Cloud itu, yang Docker Hub. Anda dapat pergi dan menjelajahi banyak, pada dasarnya itu produk SAS publik yang Anda masih dapat memiliki gambar pribadi, tapi ada banyak gambar publik. Ini sebenarnya terbatas, Anda bisa mendorong gambar publik terbatas di sana. Dan ini adalah bagaimana Anda dapat berkolaborasi dengan tim Anda. Anda hanya bisa mengarahkan mereka pada Anda repo dan mereka dapat men-download atau gambar Anda dan mereka dapat men-download itu. Jadi cukup dengan pembicaraan. Yang ingin melihat beberapa demo nyata cepat? Baiklah. Jadi di sini saya punya. Ca kalian melihat layar saya? Baiklah. Jadi saya memiliki Docker berjalan di sini, jadi saya dapat memeriksa it's-- ini adalah versi Docker yang berjalan. Dapat melakukan Info Docker. Periksa semua informasi tentang berapa gambar yang mereka miliki, dan seterusnya dan seterusnya. Docker PS, tidak ada yang berjalan. Concatenated mereka. Jadi hal pertama yang saya ingin lakukan adalah acara Anda bagaimana Anda dapat dengan mudah menjalankan sebuah wadah. Jadi keindahan sekitar Dokter run, jika itu benar-benar tidak menemukan gambar secara lokal, secara default itu berbicara ke Dokter Hub dan mencoba untuk menemukan di sana dan download untuk Anda. Jadi itu termasuk Docker menarik perintah, secara alami. Jadi jika saya melakukan Docker run, hello-dunia. Jadi, pertama itu akan mencoba untuk menemukan itu. Jika tidak, seperti yang Anda lihat di sini, itu tidak bisa menemukannya secara lokal. Sekarang ini hanya menarik dua lapisan yang membuat gambar itu dan aku berlari itu. Hello-dunia hanya pada dasarnya output, apa yang telah Anda lakukan. Jadi ini adalah yang paling mudah, salah satu contoh yang paling mudah. Jadi sebenarnya saya hanya berlari dan dihentikan wadah cepat. Jika saya ingin run-- dan omong-omong, jika Aku ingin waktu itu, supaya kau tahu, ini berapa lama waktu yang dibutuhkan untuk sebenarnya berputar ke atas dan berisi itu. Kami mengukurnya dalam milidetik. Sehingga Anda dapat melihat berapa banyak ini bisa benar-benar membantu Anda tidak hanya dalam pengujian, tetapi juga bahkan penyebaran. Jadi itulah catatan singkat tentang itu. Hal berikutnya saya akan lakukan adalah benar-benar menjalankan gambar saya sudah siap. Jadi buruh pelabuhan yang dikelola. -d hanya bendera untuk memberitahu untuk berjalan di latar belakang. Dan p memberikan port tertentu. Karena secara default, kontainer terisolasi, sehingga Anda harus menentukan dengan tepat bagaimana bisa mengaksesnya. Dan dalam hal ini, saya mengatakan Docker untuk memetakan port acak pada host ke port yang ditentukan dalam wadah itu sendiri. Dan itu pada dasarnya di mana image-- yang mudah-mudahan ini adalah yang benar. Jadi itu tidak paralel download setiap dari lapisan-lapisan seperti yang Anda lihat di sini. Mereka adalah lapisan membuat gambar akhir yang saya dibangun. Ini akan mengambil kedua. Dan voila. Jadi sekarang jika saya melakukan ps buruh pelabuhan, aku harus melihat sesuatu yang sedang berjalan. Aku harus melihat ID, gambar bahwa ini didasarkan off, dan perintah yang dieksekusi. Dan bagaimana untuk mengaksesnya adalah pada dasarnya Anda pergi ke port tersebut. Jadi aku akan pergi to-- ini adalah aku menjalankannya pada AWS. Aku akan pergi ke 32.769. Ups. Dan di sini kita pergi. Jadi ini sebenarnya hanya layanan web yang menunjukkan yang kontainer itu dilayani dari. Jadi Anda dapat melihat bahwa itu adalah dari wadah a9f. Dan di sini ini adalah nama wadah. Jadi kalian bisa melihat seberapa cepat adalah untuk benar-benar tidak hanya menarik tetapi juga menyebarkan wadah ini. Sekarang langkah berikutnya adalah untuk melihat ke Dockerfiles dan bagaimana kita dapat benar-benar membangun citra baru. Aku hanya akan pergi mendapatkan klon, sebuah Contoh Dockerfile berdasarkan sebelumnya diagram, satu untuk Apache dan PHP. Mudah-mudahan saya ingat repo saya. Jadi saya memiliki repositori saya sekarang. Dan Anda akan melihat ini banyak sebenarnya. Aku tidak menginstal pohon. Jadi pada dasarnya Anda akan melihat bagaimana dokumentasi kode sumber Anda di sekitar itu, dan kemudian pada Dockerfile bagaimana sebenarnya paket itu. Jadi itu hanya contoh PHP yang menggemakan halo CS50. Jadi jika saya ingin menjalankannya, Saya akan melakukan buruh pelabuhan membangun. Saya harus membangun terlebih dahulu. Aku akan nama itu demo_cs50. Dan Anda perlu tag untuk itu juga. Jadi mari kita menyebutnya V1 dot. Jadi seperti yang saya jelaskan sebelumnya, apa yang saya lakukan hari ini adalah aku mengatakan Docker untuk pergi penggunaan itu-- sebenarnya, maaf, saya buruk. Kami tidak kita lihat di Dockerfile sendiri. Jadi satu-satunya hal di sini adalah index.php serta file readme dan Dockerfile. Jadi jika Anda melihat pada yang Dockerfile, sehingga sangat mirip dengan apa Saya jelaskan sebelumnya. Ini hanya sekelompok langkah-langkah yang Docker mengeksekusi dengan menciptakan dan menghancurkan wadah dan [? menghitung?] mereka menjadi sebuah gambar. Dan pada dasarnya Anda bisa see-- [tidak terdengar] itu di sini- tapi ini adalah dari repo lokal. Itu akan pergi dan ambil index.php. Jadi itulah satu-satunya kode sumber yang sebetulnya merupakan bagian dari aplikasi Anda. Semua ini pada dasarnya sistem pipa operasi, mendapatkan paket yang tepat dan Apache, dan PHP, dan yang lainnya. Tapi ini sebenarnya mengambil index.php dan melakukan itu ke dalam wadah, ke dalam gambar. Jadi, jika Anda pergi ke depan dan menjalankan perintah dengan melakukan hal berikut, itu going-- sebenarnya, ini mungkin mengambil sedikit. Mudah-mudahan itu tidak memakan waktu terlalu lama. Sehingga Anda dapat melihat langkah-langkah. Dan saya mendorong Anda untuk pergi kembali ke rumah hari ini dan mencobanya. Dan Mano akan menjelaskan bagaimana tepatnya Anda melakukannya. Tapi itu benar-benar bagus untuk melihat persis apa yang terjadi di balik layar. Tapi itu ridiculously mudah untuk membangun gambar dan menempatkan mereka menggunakan Docker. Itu mengambil sedikit lebih lama dari yang saya harapkan. Mari kita lihat apa yang terjadi ketika you-- dingin. Jadi seperti yang Anda lihat, masing-masing langkah mewakili garis di Dockerfile. Dan itu menunjukkan di sini bahwa berhasil dibangun gambar ini. Jadi jika saya melakukan gambar docker, aku akan melihat semua gambar yang saya miliki secara lokal. Dan salah satu dari mereka disebut saya nama, dan nama gambar, dan tag representing-- terutama itu adalah tag versi. Jadi sekarang jika saya ingin menjalankan itu, saya lakukan buruh pelabuhan yang dikelola. Dan saya hanya ingin melakukan -P -d. Apakah v1. Jadi saya bisa melihat sekarang bahwa saya memiliki dua kontainer berjalan, salah satu yang saya hanya menciptakan dan Halo yang Docker satu yang saya dapatkan terakhir. Dan Anda bisa lihat di sini bahwa ditugaskan port yang berbeda. Jadi jika saya pergi ke IP yang sama tetapi menetapkan sebuah port-- berbeda mudah-mudahan aku tidak. Jadi sekarang ini adalah aplikasi bahwa aku hanya dikerahkan. Jika saya ingin membuat perubahan, saya cepat dapat mengedit kode sumber dan melakukan hal berikut. Mari kita lakukan halo Harvard. Jadi sekarang apa yang terjadi terjadi adalah bahwa saya akan tag dengan berbeda version-- oh, Bukankah ini guy-- tag dengan versi yang berbeda. Dan Anda akan see-- yang kalian harapkan untuk mengambil jumlah waktu yang sama untuk membangun kedua kalinya atau tidak? Baiklah, dan ada yang tahu mengapa? Bicaralah. AUDIENCE: [tidak terdengar] Nicola KABAR: Pada dasarnya kami hanya mengubah salah satu langkah kemudian. Dan karena itu akan menggunakan cache dan menggunakan masing-masing lapisan. Dan itu benar-benar beberapa fitur pembunuh Docker adalah bagaimana itu benar-benar memanfaatkan dan menggunakan kembali mengambil alih disk yang sama potongan yang tepat dari informasi. Jadi jika kita melakukan hal yang sama, hanya butuh beberapa detik. Jika kita ingin redeploy-- jadi sekarang Saya harus memiliki tiga kontainer. Tapi yang satu ini sedang disajikan pada the-- tujuh satu. Jadi sekarang itu wadah ketiga. Semua orang memahami apa yang baru saya lakukan di sini? Jadi jika Anda ingin berbagi ini kontainer nyata cepat dengan teman-teman Anda, Anda hanya dapat melakukan buruh pelabuhan mendorong nama wadah, mudah-mudahan. Jadi sekarang itu akan mendorongnya to-- Saya tidak masuk di sini. Maaf tentang itu. Tapi aku tidak akan memecahkan masalah ini sekarang. Tapi pada dasarnya bahwa salah satu perintah hanya naik mendorongnya. Dan Anda akan dapat melihatnya jika Anda pergi ke Docker Hub Dan Anda login, Anda akan dapat melihatnya. Dan kemudian Anda bisa hanya menunjuk siapa pun yang akan untuk menggunakan gambar itu untuk pergi dan menariknya. Dan mereka dapat menggunakannya. Dengan itu, mudah-mudahan Aku agak menunjukkan betapa mudahnya untuk bekerja dengan Docker. Dan aku hanya akan mengembalikannya ke Mano. Dan dia akan mengambilnya dari sini. MANO MARKS: Baiklah Terima kasih, terima kasih Nico. Jadi apa? Jadi salah satu hal yang saya ingin lakukan adalah mengumpulkan mengapa ini adalah important-- mengapa Docker dan mengapa kontainer tersebut pengembangan baru yang penting, cara baru benar-benar melakukan software. Dan sebelum saya lakukan, saya akan hanya memperkenalkan beberapa statistik. Aku tidak akan membaca semua ini. Tapi ini menunjukkan Anda banyak tentang bagaimana populer ini di masyarakat. Teknologi inti Docker adalah open source. Jadi itu Docker mesin, Compose, Swarm, banyak hal lain semua open source. Dan kami memiliki, apa yang saya mengatakan, 1.300 kontributor. Anda lihat sekarang, jika Anda melihat jumlah lowongan pekerjaan, terakhir kali kita melihat, itu sekitar 43.000 pekerjaan bukaan khusus menyebutkan keakraban dengan Docker. Ratusan jutaan gambar memiliki -download dari Docker Hub. Dan, juga, statistik jauh lebih besar. Bagi mereka yang ingin tahu, itu awalnya ditulis dengan Python dan kemudian ditulis ulang ke Go. Dan itu hanya berada membuka source-- itu hanya telah dirilis untuk sekitar 2 dan 1/2 tahun, yang berarti bahwa dalam 2 dan 1/2 tahun, kita telah melihat sejumlah besar pertumbuhan dan pentingnya ini di masyarakat. Dan jadi saya ingin berbicara sedikit tentang mengapa. Jadi hanya untuk mengulangi beberapa Poin kunci Nico, Docker cepat. Hal ini portabel. Hal ini direproduksi. Dan itu membuat sebuah lingkungan yang standar. Dan-UMPC ini jelek saya membasmi monolit slide-- apa itu membantu orang lakukan, yang banyak industri perangkat lunak mulai melakukan di 2000-an, bergerak dari ini monolitik aplikasi tunggal di mana setiap ketergantungan harus diuji sebelum seluruh aplikasi memiliki akan dikerahkan, yang bisa berarti website hanya mendapat dikerahkan sekali setiap tiga bulan, atau lebih, untuk lebih layanan arsitektur berorientasi atau componentized jenis yang berbeda arsitektur aplikasi. Dan memungkinkan ini jenis arsitektur yang mengambil keuntungan dari Docker untuk berjalan dalam tiga ini daerah utama pembangunan, yang adalah pengembangan menulis kode yang sebenarnya Anda, menguji kode Anda, dan menggunakan itu. Lalu mengapa ini penting? Jika Anda a-- membiarkan saya memberikan contoh. Jika Anda adalah sebuah situs web pengembang perangkat, Anda mengembangkan sebuah situs web yang didasarkan pada database yang dihasilkan David di sini. Maaf David, saya menelepon Anda. Jika Anda ingin menyebarkan semuanya, Anda akan harus menunggu di bawah tradisional pengembangan perangkat lunak monolitik lingkungan, Anda akan harus menunggu sampai ia selesai dengan database sebelum Anda benar-benar bisa membuat perubahan ke website Anda. Anda harus memindahkan satu Seluruh aplikasi untuk melakukannya. Dan apa Docker membantu Anda lakukan adalah setiap orang bekerja pada komponen yang berbeda dan memperbarui mereka saat mereka pergi, hanya membuat memastikan bahwa antarmuka tetap sama. Jadi apa yang telah dilakukan adalah itu bergeser orang melakukan ini besar monolitik software architected yang dikerahkan setiap bulan untuk terus menerus integrasi dan pembangunan berkelanjutan lingkungan Hidup. Sekarang ini tidak unik untuk Docker, tapi Docker membuatnya jadi lebih mudah, yang berarti Anda pada dasarnya terus menyebarkan. Kami berbicara dengan perusahaan yang penggelaran aplikasi menghadapi publik ribuan kali sehari karena mereka melihat nilai di hanya membuat perubahan kecil, dan selama seperti berjalan melalui tes, membiarkannya pergi ke produksi. Nico selalu mengatakan padaku sebelumnya bahwa di banyak lingkungan, siklus hidup standar dari kontainer diukur dalam detik, sedangkan mesin virtual mungkin diukur dalam bulan. Saya ingin mengambil sedikit mengubah sini karena aku di sebuah lembaga pendidikan. Saya ingin memberikan contoh bagaimana ini bekerja dalam penelitian pendidikan situasi. Jadi ada suatu organisasi disebut bioboxes. Bioboxes tidak DNA analisis bagi para peneliti. Sekarang apa yang mereka temukan adalah bahwa ketika sebuah researcher-- dan ini tidak kesalahan dari setiap tertentu researcher-- tapi ketika seorang peneliti dikerahkan algoritma untuk menganalisis, Dengan cara tertentu, sampel DNA, mereka akan menulis perangkat lunak, mempublikasikan itu, mungkin untuk GitHub atau tempat lain, dan kemudian mereka dilakukan. Nah masalahnya adalah bahwa hal itu tidak selalu direproduksi. Karena untuk memahami perangkat lunak, mereka akan mengatur untuk lingkungan pengembangan yang tepat bahwa peneliti yang digunakan, biasanya laptop mereka, atau server, atau data pusat bahwa mereka menggunakan. Dan akibatnya, itu sangat sulit untuk mereproduksi hasil penelitian saat menganalisis sampel DNA untuk melihat hal-hal seperti incidence-- membandingkan kejadian serangan jantung berdasarkan gen tertentu yang hadir, misalnya, atau risiko kanker, atau salah satu jenis lain dari hal-hal. Jadi apa yang mereka lakukan bukan adalah mereka mulai menciptakan wadah. Dan Anda dapat pergi ke bioboxes.org, itu sebuah organisasi yang besar. Dan apa yang mereka lakukan adalah mereka menghasilkan kontainer berdasarkan penelitian. Dan kemudian setiap kali seseorang mengirimkan dalam sampel mereka, mereka dapat menjalankannya. Dan memiliki semua lingkungan dibutuhkan untuk menjalankan algoritma yang dan menghasilkan hasil. Dan mereka menemukan bahwa mereka jauh lebih mungkin dan lebih lebih cepat dapat kembali hasil ke orang. Dan pada kenyataannya, apa yang orang lakukan menjalankan analisis mereka sendiri pada DNA, mengirimkan yang ke bioboxes, dan kemudian biobox hanya mengambil data, berjalan itu terhadap varietas kontainer yang berbeda untuk melihat hasil yang berbeda berdasarkan penelitian yang berbeda. Jadi itu adalah sangat kuat cara di mana peneliti dapat membuat satu contoh yang memungkinkan orang lain untuk mencoba dan mereproduksi hasil. Jadi bagaimana Anda memulai? Kami juga didukung pada Linux. Jadi jika Anda ingin menginstal apapun pada Linux, Anda menggunakan standar Anda manajer paket untuk menginstal. Jika Anda menggunakan Debian, itu get apt. CentOS adalah yum. Fedora Red Hat adalah rpm-- Saya tidak ingat. Pokoknya, itu semua ada. Kami mendukung berbagai besar dari distribusi Linux. Anda dapat memeriksa mereka. Kami juga memiliki pilihan sehingga Anda bisa berjalan pada Mac atau Windows. Sekarang Nico disebutkan sebelumnya bahwa itu hanya didukung pada Linux. Itu benar karena membutuhkan kernel Linux. Tapi, Anda dapat berjalan dalam mesin virtual. Dan apa Docker Toolbox tidak, yang dapat anda download, memberikan Anda bahwa mesin virtual. Jadi hanya cepat 48 kedua, saya pikir, men-download. Anda hanya mencari di Docker Toolbox, download ke Mac, dan bagian ini dari Tentu saja mempercepat karena yang ingin menonton sinyal-download? Instalasi standar Mac, dan kemudian Anda akan melihat Jerome dimasukkan ke dalam password. Itu sangat menarik. Dan kemudian menginstal Seluruh sekelompok alat. Dan khususnya itu akan menginstal baris perintah. Dan kemudian Anda bisa melihat Jerome menguji gambar nya. Dan kemudian berdasarkan ini, Anda dapat melihat bahwa YouTube berpikir bahwa Nico tertarik Star Wars, The Jimmy Kimmel acara, dan saya pikir Ellen. Saya pikir yang terakhir adalah klip dari acara Ellen. Jadi Docker Toolbox meskipun datang dengan lebih dari sekedar Mesin Docker. Jadi Docker Mesin adalah hal yang membantu Anda mengatur virtual mesin pada Windows Anda atau Mac-- kotak Windows atau Mac Anda box-- dan membantu Anda melakukan provisioning, Tetapi juga dilengkapi dengan Swarm dan Compose, yang dirancang untuk membantu Anda melakukan besar penyebaran skala aplikasi Anda. Jadi jika Anda ingin mengelola cluster node, cluster kontainer, Susun dan Swarm adalah cara untuk pergi tentang itu. Dan tentu saja datang dengan Docker Mesin dan Kitematic, yang merupakan GUI desktop. Saya juga harus menyebutkan Docker Registry, yang tidak termasuk dalam Toolbox, tapi itu adalah cara bagi Anda untuk menjalankan Anda sendiri pendaftar dari Docker Docker seperti Images Hub, tetapi Anda dapat juga hanya menggunakan Docker Hub sebagai cara untuk melakukan itu. Dan, twist plot, Anda melihat berjalan dalam sebuah wadah. Dan itulah bagaimana kami mendistribusikan slide kami. Seluruh presentasi ini sebenarnya dek HTML slide. Dan sedang berjalan dalam kontainer, yang bisa Anda dapatkan by-- Nicola KABAR: Ya, jadi berjalan penuh waktu di Max saya. Dan aku presentasi dari itu. Dan Anda hanya melakukan Docker setelah Anda menginstal Toolbox Anda. Anda hanya dapat melakukan buruh pelabuhan yang dikelola dan mendapatkannya, dan menggunakan slide. MANO mark: Dan itu saja. Jadi kami terima kasih semua untuk datang. Dan kami senang untuk menjawab pertanyaan. Saya harus menyebutkan sebelum orang daun ada T-shirt di sana. Maaf siapa saja yang menonton ini pada Livestream atau video, tapi kita harus Docker T-shirt di sana. Dan kita tahu siswa Docker, dan dalam pengalaman saya, profesor juga, seperti pakaian bebas. Jadi terima kasih untuk semua yang keluar. Dan mengikuti kami di Twitter jika Anda ingin, atau tidak. Saya tidak peduli. Juga ikuti Docker di Twitter. Itu juga menarik. Dan kemudian itu saja. Docker.com. Terima kasih. [TEPUK TANGAN]