1 00:00:00,000 --> 00:00:05,042 >> [MUSIC CHƠI] 2 00:00:05,042 --> 00:00:06,000 DAVID Malan: Tất cả các quyền. 3 00:00:06,000 --> 00:00:07,630 Cảm ơn bạn rất nhiều vì đã đến. 4 00:00:07,630 --> 00:00:11,850 Đây là hội thảo CS50 trên Docker, một công nghệ mà chúng ta và CS50 5 00:00:11,850 --> 00:00:13,392 đã bắt đầu sử dụng một thời gian rồi. 6 00:00:13,392 --> 00:00:15,766 Vì vậy, tôi tên là David Malan, tôi Giới thiệu dạy của Harvard 7 00:00:15,766 --> 00:00:16,671 Khoa học Máy tính. 8 00:00:16,671 --> 00:00:18,670 Cho khá một vài năm, chúng tôi đã đem lại cho sinh viên 9 00:00:18,670 --> 00:00:20,435 tải client-side máy ảo 10 00:00:20,435 --> 00:00:22,134 mà họ làm các vấn đề bộ của họ. 11 00:00:22,134 --> 00:00:24,300 Mà bây giờ chúng tôi đã chuyển đến một môi trường đám mây 12 00:00:24,300 --> 00:00:27,396 mà thực sự sử dụng công nghệ này gọi Docker, như vậy mà tất cả các CS50 13 00:00:27,396 --> 00:00:29,270 học sinh bây giờ có họ container Docker riêng 14 00:00:29,270 --> 00:00:31,180 rằng bạn sẽ sớm nghe tất cả về. 15 00:00:31,180 --> 00:00:33,740 >> Hơn nữa, trên máy chủ của CS50 cụm phía, trong nhiều năm 16 00:00:33,740 --> 00:00:35,290 chúng tôi đã sử dụng máy chủ đám mây của Amazon. 17 00:00:35,290 --> 00:00:37,164 Chúng tôi đã chạy cá nhân máy ảo. 18 00:00:37,164 --> 00:00:40,330 Điều đó quá, chúng tôi đã bắt đầu để chuyển đổi sang những điều được gọi là container Docker 19 00:00:40,330 --> 00:00:43,762 để tất cả các ứng dụng của chúng tôi bây giờ là hoàn toàn cô lập với nhau. 20 00:00:43,762 --> 00:00:46,720 Vì vậy, cho rằng nhiều, cho phép tôi giới thiệu bạn bè của chúng tôi, Nico và Mano, 21 00:00:46,720 --> 00:00:48,574 từ Docker chính nó. 22 00:00:48,574 --> 00:00:49,740 Nicola KABAR: Thanks, David. 23 00:00:49,740 --> 00:00:51,410 Chào mọi người. 24 00:00:51,410 --> 00:00:54,230 Tên tôi là Nico và đây là Mano. 25 00:00:54,230 --> 00:00:58,260 Chúng tôi đến từ Docker. 26 00:00:58,260 --> 00:01:02,240 Chúng tôi đang đi để được nói chuyện about-- cho các bạn một giới thiệu cho Docker, 27 00:01:02,240 --> 00:01:08,100 và hy vọng, về phía cuối của bài nói chuyện này, bạn có thể nhận ra 28 00:01:08,100 --> 00:01:12,890 có bao nhiêu bạn có thể sử dụng bác sĩ oxalate và phát triển ứng dụng của bạn 29 00:01:12,890 --> 00:01:14,200 và triển khai. 30 00:01:14,200 --> 00:01:21,250 >> Vì vậy, chúng ta sẽ bắt đầu thực nhanh chóng với một số thông tin cơ bản. 31 00:01:21,250 --> 00:01:22,750 Mô tả những gì Docker là tất cả về. 32 00:01:22,750 --> 00:01:25,490 Làm thế nào nó hoạt động? 33 00:01:25,490 --> 00:01:27,400 Làm thế nào là nó có kiến ​​trúc? 34 00:01:27,400 --> 00:01:29,360 Tôi sẽ làm một số bản demo. 35 00:01:29,360 --> 00:01:35,070 Và Mano là có được mô tả làm thế nào bạn có thể sử dụng Docker 36 00:01:35,070 --> 00:01:37,720 và đem lại cho bạn các bước cụ thể làm thế nào bạn có thể bắt đầu. 37 00:01:37,720 --> 00:01:41,490 >> Tôi sẽ đánh giá cao nếu bạn guys có thể giữ off cho câu hỏi của bạn về phía cuối. 38 00:01:41,490 --> 00:01:46,800 Bằng cách đó, tôi có thể giải quyết những câu hỏi trong suốt bài trình bày. 39 00:01:46,800 --> 00:01:52,150 Vì vậy, chúng tôi sẽ để lại một số thời gian hướng tới sự kết thúc cho câu hỏi. 40 00:01:52,150 --> 00:01:55,170 >> Vì vậy, chỉ thực sự nhanh chóng, những người có thực sự bao giờ làm việc trên Docker, 41 00:01:55,170 --> 00:01:56,850 giống như chơi với nó? 42 00:01:56,850 --> 00:01:58,000 Thật tuyệt vời. 43 00:01:58,000 --> 00:01:58,520 Mát. 44 00:01:58,520 --> 00:01:59,817 Thật tuyệt. 45 00:01:59,817 --> 00:02:01,525 Vì vậy, tôi sẽ bắt đầu với một số lịch sử. 46 00:02:01,525 --> 00:02:04,350 47 00:02:04,350 --> 00:02:09,820 Vì vậy, trở lại trong những năm 90 và Đầu những năm 2000, về cơ bản 48 00:02:09,820 --> 00:02:16,940 như các nhà phát triển web, phát triển ứng dụng, khi họ đã triển khai một ứng dụng 49 00:02:16,940 --> 00:02:19,350 nó đã được gắn kim loại trần. 50 00:02:19,350 --> 00:02:20,860 Đó là một máy chủ. 51 00:02:20,860 --> 00:02:22,870 Nó là một ứng dụng. 52 00:02:22,870 --> 00:02:25,260 >> Theo truyền thống, một ví dụ sẽ như một LAMP stack, 53 00:02:25,260 --> 00:02:30,630 nơi bạn thực sự đã phải đem đến cho các hồ bơi của các nguồn tài nguyên. 54 00:02:30,630 --> 00:02:37,110 CPU, bộ nhớ, đĩa, mạng, cài đặt hệ điều hành trên đó. 55 00:02:37,110 --> 00:02:40,060 Nếu bạn đang phục vụ một cái gì đó, nếu bạn đang thực sự có máy chủ web, 56 00:02:40,060 --> 00:02:42,470 bạn cần một cái gì đó như Apache để phục vụ nó. 57 00:02:42,470 --> 00:02:47,540 >> Nếu ứng dụng của bạn cần cơ sở dữ liệu, backhand, 58 00:02:47,540 --> 00:02:50,840 bạn sẽ cài đặt một cái gì đó như MySQL, và như vậy. 59 00:02:50,840 --> 00:02:55,910 Và nếu bạn cần thời gian chạy, PHPs và PHP Python làm việc ở đó. 60 00:02:55,910 --> 00:02:59,480 Và vì vậy chúng tôi thực sự đã phải đưa những bước theo thứ tự 61 00:02:59,480 --> 00:03:02,060 để có được ứng dụng của bạn và chạy. 62 00:03:02,060 --> 00:03:08,440 >> Nếu bạn cần tính toán nhiều quyền lực hơn, bạn về cơ bản đã phải gọi Ops chàng của bạn 63 00:03:08,440 --> 00:03:16,260 hoặc gal để đi và rack lên một mới phần cứng, kết nối nó, 64 00:03:16,260 --> 00:03:19,850 và bạn phải lặp lại những quy trình một lần nữa và một lần nữa. 65 00:03:19,850 --> 00:03:23,680 Vì vậy, quá trình này là tương đối đắt. 66 00:03:23,680 --> 00:03:26,080 Chắc chắn là rất chậm. 67 00:03:26,080 --> 00:03:27,550 >> Nó đã không hiệu quả. 68 00:03:27,550 --> 00:03:33,890 Và trong rất nhiều trường hợp, bạn phần cứng được sử dụng đúng mức. 69 00:03:33,890 --> 00:03:38,830 Vì vậy, trong những năm 90 và đầu những năm 2000, ảo hóa phần cứng đi qua. 70 00:03:38,830 --> 00:03:42,475 Và như bạn thấy ở đây hình ảnh, về cơ bản những gì họ đã làm 71 00:03:42,475 --> 00:03:46,390 là trừu tượng các hồ bơi của tài nguyên phần cứng miễn phí 72 00:03:46,390 --> 00:03:49,680 và loại phục vụ những để các tầng trên, 73 00:03:49,680 --> 00:03:52,360 trong trường hợp này, hệ điều hành khách. 74 00:03:52,360 --> 00:03:54,940 >> Và toàn bộ ý tưởng của máy ảo đi qua 75 00:03:54,940 --> 00:03:59,110 và đó thực sự đã giúp Mây máy tính như chúng ta biết ngày nay. 76 00:03:59,110 --> 00:04:02,730 Vì vậy, điều đó có nghĩa là bạn có thể chạy nhiều máy ảo, mà 77 00:04:02,730 --> 00:04:06,720 có nghĩa là nhiều ống khói, nhiều ứng dụng trên một máy vật lý. 78 00:04:06,720 --> 00:04:10,570 79 00:04:10,570 --> 00:04:16,440 >> Điều này chắc chắn giúp với tốc độ của việc triển khai ứng dụng. 80 00:04:16,440 --> 00:04:17,629 Chắc chắn với chi phí. 81 00:04:17,629 --> 00:04:22,810 Bạn không cần phải đi và chi tiêu năng lượng, thời gian và nguồn lực để rack 82 00:04:22,810 --> 00:04:26,210 nhiều máy chủ để có được để tính toán hơn. 83 00:04:26,210 --> 00:04:30,950 Và tốc độ thực sự mang lại những nguồn lên là nhanh hơn nhiều. 84 00:04:30,950 --> 00:04:31,450 Thật tuyệt. 85 00:04:31,450 --> 00:04:34,320 >> Vì vậy, chúng tôi giải quyết nạn đói thế giới, phải không? 86 00:04:34,320 --> 00:04:36,390 Không thật sự lắm. 87 00:04:36,390 --> 00:04:42,410 Vì vậy, ảo hóa nhiều như nó là thực sự đã giúp, giải quyết vấn đề, 88 00:04:42,410 --> 00:04:45,460 nó thực sự giới thiệu rất nhiều thách thức. 89 00:04:45,460 --> 00:04:49,210 Hypervisor chắc chắn giới thiệu rất nhiều phức tạp, 90 00:04:49,210 --> 00:04:53,820 xử lý những cơ bản hồ bơi của các nguồn tài nguyên. 91 00:04:53,820 --> 00:04:57,910 >> Nó nặng hơn trong ý nghĩa rằng trước bạn đã có một hệ điều hành duy nhất mà 92 00:04:57,910 --> 00:05:01,830 giống như ba, bốn đồng biểu diễn trên đĩa. 93 00:05:01,830 --> 00:05:04,230 Bây giờ, nếu bạn có 10 máy trên một phần cứng duy nhất 94 00:05:04,230 --> 00:05:09,060 bạn phải nhân đó bởi số lượng máy. 95 00:05:09,060 --> 00:05:11,440 Đó chắc chắn đắt tiền trong một cảm giác bạn vẫn 96 00:05:11,440 --> 00:05:14,430 phải được cấp giấy phép cho các công nghệ ảo hóa 97 00:05:14,430 --> 00:05:18,210 nếu nó không phải là mã nguồn mở. 98 00:05:18,210 --> 00:05:21,120 >> Nhưng, chúng ta không đưa tất cả các tín dụng từ ảo hóa. 99 00:05:21,120 --> 00:05:27,530 Bởi vì những gì đã xảy ra là có một rất nhiều stacks và rất nhiều phần mềm 100 00:05:27,530 --> 00:05:33,900 công nghệ đã được kích hoạt bằng cách nhanh chóng, bạn đã có thể để có được 101 00:05:33,900 --> 00:05:38,040 các nguồn lực với sự bùng nổ Cloud. 102 00:05:38,040 --> 00:05:46,675 >> Vì vậy, hôm nay một ứng dụng hoặc dịch vụ duy nhất có thể được sử dụng bất kỳ các runtimes sau 103 00:05:46,675 --> 00:05:47,216 hoặc cơ sở dữ liệu. 104 00:05:47,216 --> 00:05:50,250 105 00:05:50,250 --> 00:05:56,070 PHP, Python, MySQL, Redis, có điều gì. 106 00:05:56,070 --> 00:05:59,740 Vì vậy, có rất nhiều phức tạp về điều này số ngăn xếp để thực sự đưa lên 107 00:05:59,740 --> 00:06:02,210 một dịch vụ duy nhất. 108 00:06:02,210 --> 00:06:07,300 Và cùng với đó, bạn đã có rất nhiều nguồn lực cơ bản hoặc cơ sở hạ tầng 109 00:06:07,300 --> 00:06:15,210 loại để kiểm tra triển khai và cơ bản đưa vào sản xuất những ứng dụng 110 00:06:15,210 --> 00:06:16,900 rằng bạn đang phát triển. 111 00:06:16,900 --> 00:06:21,950 >> Điều đặc biệt là các đội của bạn có phát triển làm việc trên các ứng dụng đó, 112 00:06:21,950 --> 00:06:25,310 có rất nhiều phức tạp và thách thức 113 00:06:25,310 --> 00:06:31,660 đó đã được đưa đến đảm bảo rằng các cycle-- về ứng dụng 114 00:06:31,660 --> 00:06:34,040 chu kỳ phát triển, là thực sự thành công. 115 00:06:34,040 --> 00:06:40,440 Vì vậy, thực tế là ứng dụng của bạn đang làm việc tại địa phương trên VM địa phương của bạn 116 00:06:40,440 --> 00:06:47,480 không đảm bảo rằng đồng nghiệp của bạn sẽ mong đợi những kết quả tương tự. 117 00:06:47,480 --> 00:06:51,330 >> Và khi các nhóm hoạt động là tham gia vào lấy những gì bạn có 118 00:06:51,330 --> 00:06:54,480 và triển khai nó trong sản xuất quy mô, cũng không có đảm bảo 119 00:06:54,480 --> 00:06:56,730 rằng đó là thực sự xảy ra. 120 00:06:56,730 --> 00:07:00,900 Vì vậy, đây lại cho chúng ta một thực sự big-- rất nhiều dấu hỏi, 121 00:07:00,900 --> 00:07:07,700 một thách thức thực sự rất nhiều phải đối mặt với tương tự trở lại trong ngày. 122 00:07:07,700 --> 00:07:12,280 Và đó nhắc nhở chúng ta ngành vận tải biển. 123 00:07:12,280 --> 00:07:14,280 >> Vì vậy, ngành vận tải biển đã có rất nhiều hàng hóa, 124 00:07:14,280 --> 00:07:16,190 như bạn có thể nhìn thấy ở phía bên tay trái. 125 00:07:16,190 --> 00:07:19,840 Và phía bên tay phải, có rất nhiều, về cơ bản, 126 00:07:19,840 --> 00:07:22,160 cách để tàu hàng hoá đó. 127 00:07:22,160 --> 00:07:26,040 Và những gì sẽ xảy ra khi một cặp vợ chồng folks đến với nhau và nói, 128 00:07:26,040 --> 00:07:29,600 chúng ta cần phải chuẩn hóa như thế nào chúng tôi thực sự xuất xưởng những hàng hoá. 129 00:07:29,600 --> 00:07:33,280 Và sự bùng nổ, bạn có container vận chuyển đa phương thức. 130 00:07:33,280 --> 00:07:38,970 >> Vì vậy, họ đã nhất trí về nhiều nhất kích thước phổ biến cho các container. 131 00:07:38,970 --> 00:07:40,160 Làm thế nào để xử lý chúng. 132 00:07:40,160 --> 00:07:44,560 Phương pháp chính xác những gì bạn cần để tải chúng và dỡ bỏ chúng. 133 00:07:44,560 --> 00:07:49,590 Và do đó, mà thực sự giúp ngành vận tải biển. 134 00:07:49,590 --> 00:07:55,250 Bây giờ hơn 90% tập trung vận chuyển trên toàn cầu đang sử dụng những container. 135 00:07:55,250 --> 00:08:01,010 Và đó chắc chắn giảm các chi phí cũng như 136 00:08:01,010 --> 00:08:03,400 những thiệt hại do vận chuyển. 137 00:08:03,400 --> 00:08:09,660 >> Vì vậy, chúng tôi có những mô hình tương tự và chúng tôi áp dụng các phần mềm phát triển ứng dụng hai 138 00:08:09,660 --> 00:08:13,080 kiến trúc, trong ý nghĩa Containerization đó 139 00:08:13,080 --> 00:08:15,842 đã ảo hóa lên một cấp. 140 00:08:15,842 --> 00:08:17,800 Vì vậy, thay vì làm điều đó ở cấp độ phần cứng, 141 00:08:17,800 --> 00:08:22,060 nó đã trở thành nhiều hơn một hành cấp hệ thống ảo hóa. 142 00:08:22,060 --> 00:08:26,450 >> Và chúng tôi làm điều đó bằng cách cung cấp cho mỗi ứng dụng trong trọng lượng nhẹ của riêng mình, 143 00:08:26,450 --> 00:08:31,180 cô lập, Runnable, và xách tay, quan trọng nhất, 144 00:08:31,180 --> 00:08:35,049 một cách để thực sự trọn gói tất cả mọi thứ mà nó cần phải chạy. 145 00:08:35,049 --> 00:08:36,100 Bất cứ nơi nào nó có thể được chạy. 146 00:08:36,100 --> 00:08:42,039 Vì vậy, bất kể nếu bạn đang chạy nó trên môi trường dev địa phương, sản xuất của bạn 147 00:08:42,039 --> 00:08:44,490 môi trường, dàn dựng hoặc thử nghiệm của bạn. 148 00:08:44,490 --> 00:08:47,700 Không có vấn đề gì cơ bản cơ sở hạ tầng là có, 149 00:08:47,700 --> 00:08:51,410 bạn đã có một ứng dụng làm việc chức năng. 150 00:08:51,410 --> 00:08:54,100 151 00:08:54,100 --> 00:09:01,800 >> Vì vậy, đó là chính xác những gì cơ bản container làm cho vấn đề này. 152 00:09:01,800 --> 00:09:04,070 Họ giải quyết nó bằng cách đóng gói nó theo cách như vậy 153 00:09:04,070 --> 00:09:09,490 mà nó có thể đảm bảo rằng nó được triển khai thành công không có vấn đề nơi nó sống. 154 00:09:09,490 --> 00:09:12,120 Vì vậy, nếu bạn đang đi như thế, Bob nó vẫn OK. 155 00:09:12,120 --> 00:09:17,860 Nếu bạn đang nhầm lẫn với những gì tôi đang nói, Tôi sẽ được xây dựng trên đó. 156 00:09:17,860 --> 00:09:20,900 >> Vì vậy, làm thế nào Docker chính phù hợp với hình ảnh này? 157 00:09:20,900 --> 00:09:26,335 Vì vậy, Docker là một nền tảng mở để dễ dàng, nhấn mạnh một cách dễ dàng, 158 00:09:26,335 --> 00:09:30,500 để xây dựng tàu, chạy, nhẹ tự cầm tay 159 00:09:30,500 --> 00:09:33,440 đủ chứa ứng dụng bất cứ nơi nào. 160 00:09:33,440 --> 00:09:37,660 Vì vậy, nếu bạn có một cái gì đó từ này nói chuyện, hãy dành thời sau. 161 00:09:37,660 --> 00:09:40,980 >> Nếu bạn có ứng dụng đang chạy của bạn tại địa phương và bạn phát triển nó 162 00:09:40,980 --> 00:09:45,930 trong việc sử dụng các nền tảng Docker, mong đợi nó được triển khai thành công. 163 00:09:45,930 --> 00:09:49,380 Không có vấn đề là những gì cơ sở hạ tầng cơ bản. 164 00:09:49,380 --> 00:09:53,830 Vì vậy, nếu bạn có một Docker container và nó làm việc, sau đó 165 00:09:53,830 --> 00:09:58,130 miễn là có một Docker động cơ trên side-- khác 166 00:09:58,130 --> 00:10:02,190 nếu cơ sở hạ tầng hoạt động của bạn được sử dụng bất kỳ Cloud, cho dù đó 167 00:10:02,190 --> 00:10:06,680 là AWS, hoặc Google, hoặc Microsoft, hoặc bất kỳ của các đám mây công cộng, 168 00:10:06,680 --> 00:10:10,010 hoặc Cloud của riêng bạn, hoặc mở ngăn xếp của bạn Cloud, hoặc môi trường địa phương của bạn. 169 00:10:10,010 --> 00:10:11,970 >> Nếu bạn có một động cơ chạy, mà phương tiện 170 00:10:11,970 --> 00:10:14,537 nó sẽ triển khai thành công ở đó. 171 00:10:14,537 --> 00:10:16,620 Nó sẽ được chạy chính xác các hành vi tương tự 172 00:10:16,620 --> 00:10:21,480 như bạn thiết kế nó phải được. 173 00:10:21,480 --> 00:10:26,080 Vì vậy, nếu chúng ta nhìn at-- tôi đi đi qua những gì thực sự 174 00:10:26,080 --> 00:10:29,160 là trong các thành phần chính của Docker. 175 00:10:29,160 --> 00:10:31,060 >> Vì vậy, động cơ là cốt lõi của Docker. 176 00:10:31,060 --> 00:10:32,770 Nó là bộ não của. 177 00:10:32,770 --> 00:10:39,360 Nó orchestrates xây dựng, vận chuyển, và triển khai và quản lý 178 00:10:39,360 --> 00:10:41,570 các container mình. 179 00:10:41,570 --> 00:10:45,160 Tôi sẽ khai thác vào những gì công cụ làm chi tiết hơn trong một giây. 180 00:10:45,160 --> 00:10:47,740 181 00:10:47,740 --> 00:10:51,720 Về cơ bản, vì Doctor được xây dựng xung quanh các kiến ​​trúc máy chủ của khách hàng, 182 00:10:51,720 --> 00:10:56,630 vì vậy để tương tác với các Động cơ bạn cần một số loại của một khách hàng. 183 00:10:56,630 --> 00:11:01,200 >> Hình ảnh là các mẫu trong mà container được xây dựng từ. 184 00:11:01,200 --> 00:11:06,800 Vì vậy, hình ảnh cơ bản tập tin chỉ tĩnh. 185 00:11:06,800 --> 00:11:08,740 Templates và container thực sự là những gì 186 00:11:08,740 --> 00:11:12,280 đang chạy ở thời gian chạy đang phục vụ ứng dụng của bạn 187 00:11:12,280 --> 00:11:15,150 hoặc làm điều gì đó với dữ liệu. 188 00:11:15,150 --> 00:11:19,020 >> Registry được đề cập như là một vấn đề của làm thế nào bạn thực sự phân phối hình ảnh. 189 00:11:19,020 --> 00:11:23,230 Vì vậy, nếu bạn cần chia sẻ một hình ảnh mà bạn đã làm cho đồng nghiệp của bạn 190 00:11:23,230 --> 00:11:27,220 hoặc để đội ops, bạn sử dụng nó bằng cách sử dụng Registry. 191 00:11:27,220 --> 00:11:31,720 Bạn có thể tải về một mã nguồn mở phiên bản của nó mà Docker làm việc trên 192 00:11:31,720 --> 00:11:33,150 và mở nguồn. 193 00:11:33,150 --> 00:11:38,040 >> Hoặc bạn có thể sử dụng Docker giúp đỡ, đó là phiên bản đám mây 194 00:11:38,040 --> 00:11:40,130 để đẩy và kéo ra hình ảnh đó. 195 00:11:40,130 --> 00:11:41,160 Đó là một điều rất lớn. 196 00:11:41,160 --> 00:11:44,520 Bởi vì có một rất lớn hệ sinh thái xung quanh Docker và nó 197 00:11:44,520 --> 00:11:48,960 thực sự mạnh sử dụng các trung tâm. 198 00:11:48,960 --> 00:11:59,780 >> Vì vậy, để tóm tắt ở đây, đây là như thế nào minimalist Docker công việc khách. 199 00:11:59,780 --> 00:12:04,040 Bạn tương tác với máy chủ, trong trường hợp này đó là daemon Docker. 200 00:12:04,040 --> 00:12:06,490 Đó là những điều tương tự như động cơ. 201 00:12:06,490 --> 00:12:09,690 Bạn làm lệnh như Docker xây dựng, kéo, chạy. 202 00:12:09,690 --> 00:12:14,280 Và Engine tự đi và làm hết mọi điều. 203 00:12:14,280 --> 00:12:18,010 >> Vì vậy, hoặc nó tương tác với Registry để kéo những hình ảnh 204 00:12:18,010 --> 00:12:19,670 và các lớp của hình ảnh. 205 00:12:19,670 --> 00:12:25,030 Cho dù nếu bạn muốn triển khai, chạy container, giết chúng, ném chúng xuống, 206 00:12:25,030 --> 00:12:25,730 có điều gì. 207 00:12:25,730 --> 00:12:32,190 Vì vậy, đây tóm tắt các quy trình làm việc của tất cả các thành phần. 208 00:12:32,190 --> 00:12:34,710 >> Vì vậy, nếu bạn mất tất cả thành phần của chính nó. 209 00:12:34,710 --> 00:12:37,690 Vì vậy, động cơ, nó chỉ là một daemon. 210 00:12:37,690 --> 00:12:40,800 Nó sẽ loại chơi nó để hỗ trợ nó trên Linux vì nó 211 00:12:40,800 --> 00:12:44,380 yêu cầu một số tính năng hạt nhân Linux. 212 00:12:44,380 --> 00:12:48,820 Tuy nhiên, Windows đang làm việc vào làm điều tương tự. 213 00:12:48,820 --> 00:12:53,720 Đó là nghĩa vụ để được hỗ trợ bởi Windows Server 2016. 214 00:12:53,720 --> 00:13:01,500 >> Vì vậy, một lần nữa, trách nhiệm với động cơ là, hoặc là để, xây dựng hình ảnh. 215 00:13:01,500 --> 00:13:05,340 Kéo hình ảnh từ Docker Hub hoặc Registry của riêng bạn. 216 00:13:05,340 --> 00:13:07,840 Nếu bạn đang thực hiện với những hình ảnh hoặc bạn tạo ra một hình ảnh mới, 217 00:13:07,840 --> 00:13:14,770 bạn có thể đẩy những người trở lại phải đăng kiểm để phân phối cho các đội khác. 218 00:13:14,770 --> 00:13:18,300 >> Và cố gắng để chứa nó tại địa phương và quản lý chu kỳ container cuộc sống 219 00:13:18,300 --> 00:13:19,260 tại địa phương. 220 00:13:19,260 --> 00:13:22,010 Nó được xây dựng xung quanh HTTP REST API. 221 00:13:22,010 --> 00:13:24,480 Vì vậy, về mặt kỹ thuật bạn có thể viết client của riêng bạn 222 00:13:24,480 --> 00:13:31,650 miễn là nó sử dụng HTTP, mà là một rất cơ chế tiêu chuẩn để nói chuyện với động cơ 223 00:13:31,650 --> 00:13:33,110 và rất nhiều dịch vụ khác. 224 00:13:33,110 --> 00:13:35,780 Và bạn có thể nhìn thấy từ ở đây mà không phân biệt 225 00:13:35,780 --> 00:13:39,010 về những gì các cơ sở hạ tầng là, miễn là bạn can-- tất cả 226 00:13:39,010 --> 00:13:42,170 bạn cần là một điều hành hệ thống, Linux cụ thể. 227 00:13:42,170 --> 00:13:45,460 >> Và bạn có thể cài đặt Docker cơ trên đó và đã cho nó chạy 228 00:13:45,460 --> 00:13:48,970 và nó orchestrates, về cơ bản, tất cả các ứng dụng một, hai, các 229 00:13:48,970 --> 00:13:51,530 và ba là container thực tế. 230 00:13:51,530 --> 00:13:53,990 Vì vậy, đó là Engine. 231 00:13:53,990 --> 00:13:58,040 Như tôi đã đề cập trước đó, vì bạn cần phải tương tác với Công cụ, 232 00:13:58,040 --> 00:13:59,200 có khách hàng. 233 00:13:59,200 --> 00:14:03,180 >> Nhưng thật ra khi bạn cài đặt Docker, nó tàu với nó. 234 00:14:03,180 --> 00:14:06,110 Vì vậy, nó được cài đặt, do đó, nó là một nhị phân duy nhất. 235 00:14:06,110 --> 00:14:11,830 Và bạn có thể làm các cuộc gọi địa phương để Docker Engine của bạn. 236 00:14:11,830 --> 00:14:14,040 Hoặc cuộc gọi từ xa để động cơ từ xa. 237 00:14:14,040 --> 00:14:16,600 238 00:14:16,600 --> 00:14:19,590 Nó sử dụng HTTP, như Tôi đã đề cập trước đó. 239 00:14:19,590 --> 00:14:24,200 Có một khách hàng giao diện được gọi là Kitematic từ Docker. 240 00:14:24,200 --> 00:14:26,390 Và chắc chắn có những rất nhiều folks khác 241 00:14:26,390 --> 00:14:29,740 người đang xây dựng rất nhiều Ảnh minh hoạ rằng về cơ bản thực hiện 242 00:14:29,740 --> 00:14:32,980 một số cuộc gọi HTTP để nói chuyện với Engine. 243 00:14:32,980 --> 00:14:35,920 244 00:14:35,920 --> 00:14:39,280 >> Chỉ cần một số lệnh mẫu. 245 00:14:39,280 --> 00:14:44,620 Nếu bạn làm phiên bản Docker, nó sẽ chỉ cho bạn phiên bản khách hàng cũng như 246 00:14:44,620 --> 00:14:47,030 các phiên bản máy chủ. 247 00:14:47,030 --> 00:14:49,500 Nếu bạn làm thông tin Docker nó sẽ cho bạn biết tất cả các thông tin 248 00:14:49,500 --> 00:14:54,300 khoảng bao nhiêu container đang chạy hoặc tạo ra, bao nhiêu hình ảnh bạn có, 249 00:14:54,300 --> 00:14:56,530 và vv và vv. 250 00:14:56,530 --> 00:15:01,850 >> Ở đây tôi có, ở bên cạnh hộp cuối cùng, tôi có Doctor chạy. 251 00:15:01,850 --> 00:15:04,970 Vì vậy, đó là cách tôi thực sự tạo container. 252 00:15:04,970 --> 00:15:08,960 Và tôi cho nó để echo Hello World và ngủ trong một giây và không có điều gì. 253 00:15:08,960 --> 00:15:12,830 Và bạn có thể thấy kết quả. Vì vậy, nó đang diễn ra. 254 00:15:12,830 --> 00:15:16,930 Và tương tự như Linux ps, bạn có thể nhìn thấy tất cả các quy trình và, trong trường hợp này, 255 00:15:16,930 --> 00:15:18,540 tất cả các container đang chạy. 256 00:15:18,540 --> 00:15:23,430 Cái này đề cập trở lại container tôi vừa tạo ra. 257 00:15:23,430 --> 00:15:27,560 >> Vì vậy, điều này thực sự quan trọng bởi vì, như thế, nó có thể là một chút bối rối. 258 00:15:27,560 --> 00:15:33,050 Vì vậy, hình ảnh là chỉ đọc bộ sưu tập của các tập tin, phải không? 259 00:15:33,050 --> 00:15:37,000 Họ là những container của chúng tôi được dựa trên. 260 00:15:37,000 --> 00:15:40,340 Nhưng họ chỉ chỉ đọc. 261 00:15:40,340 --> 00:15:44,330 Vì vậy, bạn hãy bắt đầu với hình ảnh cơ bản. 262 00:15:44,330 --> 00:15:50,180 Nó có xu hướng bắt chước OS-như, do đó Ubuntu, CentOS, hình ảnh cơ sở có điều gì. 263 00:15:50,180 --> 00:15:53,990 Và sau đó bạn bắt đầu xây dựng vào đầu rằng, lớp nhất định, mà sẽ tạo nên 264 00:15:53,990 --> 00:16:00,010 hình ảnh cuối cùng của bạn, cuối cùng dẫn đến đây. 265 00:16:00,010 --> 00:16:03,220 >> Và mỗi người trong những lớp cần phải có một hình ảnh cha mẹ 266 00:16:03,220 --> 00:16:06,690 mà nó tham chiếu khi nó thực sự muốn tạo ra. 267 00:16:06,690 --> 00:16:09,922 Họ là không thay đổi, trong ý nghĩa mà bởi vì họ đang chỉ đọc, 268 00:16:09,922 --> 00:16:11,630 bạn có thể không thực sự thay đổi chúng. 269 00:16:11,630 --> 00:16:17,540 Bạn có thể sử dụng chúng để tạo ra một container từ một hình ảnh, mà 270 00:16:17,540 --> 00:16:23,530 sẽ gọi tất cả các tiếp theo hình ảnh theo yêu cầu bên dưới nó. 271 00:16:23,530 --> 00:16:26,400 >> Bạn có thể thay đổi để một lớp khác nhau, 272 00:16:26,400 --> 00:16:28,810 đó là một lớp viết lại tôi sẽ nói về trong một giây. 273 00:16:28,810 --> 00:16:31,350 Nhưng mỗi người trong những lớp không bao giờ thay đổi. 274 00:16:31,350 --> 00:16:34,300 275 00:16:34,300 --> 00:16:38,670 Về cơ bản các hình ảnh sử dụng một cái gì đó gọi là Liên minh File System, UFS. 276 00:16:38,670 --> 00:16:42,280 Và có lưu trữ khác nhau backends dụng của công nghệ này. 277 00:16:42,280 --> 00:16:49,430 Và điều đó có nghĩa là nó tập hợp các hệ thống tập tin riêng biệt 278 00:16:49,430 --> 00:16:51,190 để làm cho chúng trông giống như một. 279 00:16:51,190 --> 00:16:54,460 >> Vì vậy, bạn có thể thực sự, từ một quan điểm ứng dụng, 280 00:16:54,460 --> 00:16:59,570 bạn có một đầu của một điểm cho rằng các chương trình tất cả các hệ thống tập tin khác nhau cần thiết 281 00:16:59,570 --> 00:17:01,120 cho ứng dụng đó để chạy. 282 00:17:01,120 --> 00:17:04,400 Nhưng chúng thực sự, về điều này, họ đang thực sự ở những nơi riêng biệt 283 00:17:04,400 --> 00:17:06,410 và được sử dụng bởi container khác. 284 00:17:06,410 --> 00:17:09,569 285 00:17:09,569 --> 00:17:14,410 >> Vì vậy, như bạn có thể thấy ở đây mà nếu chúng ta bắt đầu với hình ảnh daemon 286 00:17:14,410 --> 00:17:18,619 như là một hình ảnh cơ bản, và sau đó chúng tôi đi vào và thêm [? emacs?] 287 00:17:18,619 --> 00:17:20,720 và sau đó đó là một lớp. 288 00:17:20,720 --> 00:17:21,916 Và sau đó thêm Apache. 289 00:17:21,916 --> 00:17:22,790 Đó là một lớp. 290 00:17:22,790 --> 00:17:25,470 Và sau đó chúng tôi dành container từ đó. 291 00:17:25,470 --> 00:17:29,760 Mỗi của những hình ảnh, mỗi người trong những lớp, 292 00:17:29,760 --> 00:17:35,530 là khác biệt và có thể tái sử dụng bằng container khác. 293 00:17:35,530 --> 00:17:40,070 >> Nếu bạn nhìn vào bản thân container, họ bằng cách nào đó như VM-như, 294 00:17:40,070 --> 00:17:41,930 nhưng không được điều trị cùng một lúc. 295 00:17:41,930 --> 00:17:49,180 Vì vậy, họ không có, về mặt kỹ thuật, các hệ điều hành đầy đủ bên dưới chúng. 296 00:17:49,180 --> 00:17:52,630 Họ sử dụng các hạt nhân duy nhất của hệ điều hành chủ. 297 00:17:52,630 --> 00:17:54,440 Và họ xây dựng trên đó. 298 00:17:54,440 --> 00:17:56,250 Họ bắt chước trong cách họ nhìn. 299 00:17:56,250 --> 00:18:00,710 Họ bắt chước tập tin gốc của họ hệ thống của hệ điều hành. 300 00:18:00,710 --> 00:18:04,930 Nhưng họ thực sự không được sao chép. 301 00:18:04,930 --> 00:18:12,080 >> Vì vậy, thay vì có các lớp không thay đổi, lớp cuối cùng, đó là container 302 00:18:12,080 --> 00:18:14,690 bản thân, đó là một lớp đọc-ghi. 303 00:18:14,690 --> 00:18:17,350 Mà cũng chạy các quá trình các ứng dụng của bạn. 304 00:18:17,350 --> 00:18:23,530 Và nó phụ thuộc vào các lớp phía dưới. 305 00:18:23,530 --> 00:18:26,730 Mỗi container là tạo ra từ một hình ảnh. 306 00:18:26,730 --> 00:18:32,450 Và hình ảnh đó có thể là một đơn lớp hoặc hình ảnh đa lớp. 307 00:18:32,450 --> 00:18:37,200 >> Và tôi muốn lưu ý ở đây rằng Docker nặng sử dụng, 308 00:18:37,200 --> 00:18:40,370 hoặc dựa trên cơ chế Copy-On-Write. 309 00:18:40,370 --> 00:18:44,350 Do đó, trên thực tế, nếu bạn không phải là làm thay đổi đối với container, 310 00:18:44,350 --> 00:18:45,930 nó không phải đi để có thêm không gian. 311 00:18:45,930 --> 00:18:49,600 Vì vậy, về cơ bản đó như thế nào bạn Tóm tắt một Copy-On-Write. 312 00:18:49,600 --> 00:18:53,820 Nó sẽ chắc chắn tăng tốc độ thời gian khởi động cho các container. 313 00:18:53,820 --> 00:18:56,300 Bởi vì nếu bạn không làm thay đổi đối với container, 314 00:18:56,300 --> 00:18:57,800 nó sử dụng những gì sẵn có. 315 00:18:57,800 --> 00:19:01,130 316 00:19:01,130 --> 00:19:02,955 >> Vì vậy, làm thế nào nó thực sự hoạt động. 317 00:19:02,955 --> 00:19:06,920 318 00:19:06,920 --> 00:19:14,240 Một phần của nó là như thế, ngay bây giờ, nó sử dụng ít nhất hai hạt nhân chính 319 00:19:14,240 --> 00:19:14,820 tính năng. 320 00:19:14,820 --> 00:19:17,660 Và đó là những gì cơ bản tạo ra rằng mức độ cô lập 321 00:19:17,660 --> 00:19:19,550 cho container mình. 322 00:19:19,550 --> 00:19:22,290 Những tính năng này không gian tên và cgroups. 323 00:19:22,290 --> 00:19:29,870 Vì vậy, không gian tên là một cách để tạo nguồn lực cô lập, 324 00:19:29,870 --> 00:19:36,290 để trong hộp đựng, chỉ có bạn có thể xem các nguồn lực nhất định. 325 00:19:36,290 --> 00:19:40,030 Chẳng hạn như các giao diện mạng hoặc những người sử dụng nhất định hoặc có điều gì. 326 00:19:40,030 --> 00:19:44,160 >> Và đó là những chỉ nhìn thấy và chỉ truy cập trong các container. 327 00:19:44,160 --> 00:19:48,290 Cgroup trên các giới hạn phía bên kia cách bạn sử dụng những tài nguyên. 328 00:19:48,290 --> 00:19:50,950 CPU, bộ nhớ, và đĩa. 329 00:19:50,950 --> 00:19:53,900 Khi bạn có thể đi vào, tôi có nghĩa là những người thực sự 330 00:19:53,900 --> 00:19:57,410 tính năng được phát triển tuỳ theo trường chúng là một phần của hạt nhân Linux. 331 00:19:57,410 --> 00:20:01,800 Vì vậy, họ đã không được tái phát minh bởi hoặc tái tạo bởi Docker. 332 00:20:01,800 --> 00:20:03,770 Docker sử dụng chúng. 333 00:20:03,770 --> 00:20:05,560 >> Bác sĩ những gì thực sự đã làm đây là thực sự nó 334 00:20:05,560 --> 00:20:08,680 sáng tạo dàn không gian tên cho mỗi container 335 00:20:08,680 --> 00:20:13,320 và tạo ra các cgroups để nó ridiculously dễ dàng để tạo container 336 00:20:13,320 --> 00:20:14,870 sử dụng những tính năng. 337 00:20:14,870 --> 00:20:22,910 Tất nhiên, như tôi đã nói trước đó, Liên minh File Systems và Copy-On-Viết sự 338 00:20:22,910 --> 00:20:26,810 giúp tốc độ và đĩa sử dụng các thùng chứa. 339 00:20:26,810 --> 00:20:28,917 >> Và một khi bạn nhận được của bạn bàn tay quanh Docker, 340 00:20:28,917 --> 00:20:32,000 bạn sẽ thấy tốc độ nó là thực sự quay lên container và nước mắt 341 00:20:32,000 --> 00:20:32,500 chúng xuống. 342 00:20:32,500 --> 00:20:36,060 343 00:20:36,060 --> 00:20:40,230 Vì vậy, nếu bạn có thể hỏi, làm thế nào có thể bạn thực sự xây dựng hình ảnh? 344 00:20:40,230 --> 00:20:45,940 Chúng tôi xây dựng hình ảnh của một quá trình tạo container và thay đổi, thay đổi 345 00:20:45,940 --> 00:20:50,220 họ, và cam kết họ thành trở thành một hình ảnh. 346 00:20:50,220 --> 00:20:54,330 >> Vì vậy, nó là một con gà và tham khảo trứng ở đây, 347 00:20:54,330 --> 00:20:57,350 bởi vì tất cả các container đi từ hình ảnh và hình ảnh đến 348 00:20:57,350 --> 00:21:00,270 từ container cam kết, đối với hầu hết các phần. 349 00:21:00,270 --> 00:21:03,830 Có ba lựa chọn để tạo ra hình ảnh. 350 00:21:03,830 --> 00:21:06,580 Tôi sẽ mô tả đầu tiên và cuối cùng. 351 00:21:06,580 --> 00:21:10,060 Bạn có thể tự đi và chạy container 352 00:21:10,060 --> 00:21:14,280 và làm cho những thay đổi, như bạn sẽ làm trên bất kỳ máy ảo 353 00:21:14,280 --> 00:21:17,060 hoặc bất kỳ hệ điều hành, chẳng hạn như cài đặt những chương trình mới, 354 00:21:17,060 --> 00:21:19,370 thêm hệ thống tập tin, và không có điều gì. 355 00:21:19,370 --> 00:21:22,620 >> Và sau đó bạn thoát khỏi, như bạn có thể thấy ở trên đó. 356 00:21:22,620 --> 00:21:24,330 Tôi thoát khỏi container của tôi. 357 00:21:24,330 --> 00:21:26,050 Và sau đó tôi đang làm Docker cam kết. 358 00:21:26,050 --> 00:21:28,390 Và tôi cam kết đó. 359 00:21:28,390 --> 00:21:31,560 Bạn có thể thấy rằng số lượng ở đây chỉ là một UUID, hoặc là người đầu tiên 12 360 00:21:31,560 --> 00:21:32,810 bit của UUID. 361 00:21:32,810 --> 00:21:34,320 Hoặc byte của UUID. 362 00:21:34,320 --> 00:21:35,770 Và sau đó tôi gọi là hình ảnh của tôi. 363 00:21:35,770 --> 00:21:39,510 Vì vậy bây giờ Docker chăm sóc ghi lại tất cả mọi thứ tôi đã làm nó 364 00:21:39,510 --> 00:21:42,830 và tạo mới hình ảnh dựa trên đó. 365 00:21:42,830 --> 00:21:47,080 366 00:21:47,080 --> 00:21:52,560 >> Tôi sẽ không nói về tarball, nhưng có một cách bạn có thể nhận được một đơn, 367 00:21:52,560 --> 00:21:58,200 tạo ra một duy nhất, hoặc thực hiện một single hình ảnh lớp sử dụng tarball. 368 00:21:58,200 --> 00:22:02,650 Những gì tôi sẽ nói về điều này và những gì là chủ yếu được sử dụng ngày hôm nay, 369 00:22:02,650 --> 00:22:03,270 là Dockerfile. 370 00:22:03,270 --> 00:22:07,260 Đó là kỹ thuật đầu tiên bước tự động bởi Docker chính nó. 371 00:22:07,260 --> 00:22:11,920 Vì vậy Dockerfiles là điều mà bạn đang sẽ thấy trong rất nhiều GitHub Repos 372 00:22:11,920 --> 00:22:13,150 hôm nay. 373 00:22:13,150 --> 00:22:16,420 Đó là cơ bản chỉ là một tập tin văn bản mô tả 374 00:22:16,420 --> 00:22:19,780 chính xác làm thế nào để xây dựng một hình ảnh. 375 00:22:19,780 --> 00:22:25,540 >> Và đối với mỗi dòng, nó thực sự tạo container, thực hiện dòng đó, 376 00:22:25,540 --> 00:22:30,480 cam container vào một hình ảnh mới, và bạn, về cơ bản, 377 00:22:30,480 --> 00:22:36,160 sử dụng nó cho tất cả các hoạt động tiếp theo cho đến khi bạn nhận được để ảnh cuối cùng. 378 00:22:36,160 --> 00:22:39,260 Đó là cơ bản Mục tiêu ở đây kết thúc, kết thúc. 379 00:22:39,260 --> 00:22:42,420 Và sau khi bạn exec-- sau khi bạn Dockerfile viết của bạn, mà 380 00:22:42,420 --> 00:22:46,750 hoàn toàn trong các văn bản, bạn làm một Docker xây dựng và tên của hình ảnh. 381 00:22:46,750 --> 00:22:50,000 >> Và bạn chỉ ở đó mà là nơi Dockerfile là lúc. 382 00:22:50,000 --> 00:22:56,570 Và bạn có thể mong đợi để nhìn thấy hình ảnh của tôi như một hình ảnh mà bạn có tại địa phương. 383 00:22:56,570 --> 00:22:59,100 Vì vậy, đó chỉ là một hình ảnh ví dụ về những gì diễn ra. 384 00:22:59,100 --> 00:23:00,820 Bạn bắt đầu với một hình ảnh cơ bản. 385 00:23:00,820 --> 00:23:05,150 Bạn chạy vào một thùng chứa không làm thay đổi hình ảnh cơ bản của chính nó. 386 00:23:05,150 --> 00:23:08,310 Nhưng thay vì tạo ra một viết lại lớp trên đầu trang của nó 387 00:23:08,310 --> 00:23:10,340 nơi bạn thực hiện những thay đổi, trong đó bạn cam kết 388 00:23:10,340 --> 00:23:15,050 và bạn lặp lại quá trình cho đến khi bạn sẽ có được hình ảnh cuối cùng của bạn. 389 00:23:15,050 --> 00:23:20,980 >> Và khi làm như vậy, mỗi khi xây dựng khác quá trình có thể sử dụng các lớp cùng 390 00:23:20,980 --> 00:23:23,870 và same-- cơ bản Docker lưu trữ những lớp. 391 00:23:23,870 --> 00:23:30,040 Vì vậy, nếu tôi đang làm việc cùng chính xác quá trình, nhưng thay vì cài đặt PHP, 392 00:23:30,040 --> 00:23:31,540 Tôi đang cài đặt Python. 393 00:23:31,540 --> 00:23:34,210 Nó sẽ sử dụng Apache và Ubuntu. 394 00:23:34,210 --> 00:23:39,570 Vì vậy, cách mà bạn đang sử dụng đĩa của bạn. 395 00:23:39,570 --> 00:23:42,330 Nó sử dụng bộ nhớ cache và hình ảnh có sẵn ở đó. 396 00:23:42,330 --> 00:23:45,320 397 00:23:45,320 --> 00:23:48,840 >> Giai đoạn cuối cùng là Registry, mà là cách bạn phân phối hình ảnh của bạn. 398 00:23:48,840 --> 00:23:52,710 Và, như tôi đã đề cập trước đó, có một phiên bản Cloud of nó, 399 00:23:52,710 --> 00:23:54,290 đó là Docker Hub. 400 00:23:54,290 --> 00:23:57,550 Bạn có thể đi và khám phá rất nhiều, về cơ bản 401 00:23:57,550 --> 00:24:04,900 đó là một sản phẩm SAS công cộng bạn vẫn có thể có những hình ảnh tư nhân, 402 00:24:04,900 --> 00:24:06,590 nhưng có rất nhiều hình ảnh nào. 403 00:24:06,590 --> 00:24:10,580 Nó thực sự không giới hạn, bạn có thể đẩy hình ảnh công cộng không giới hạn ở đó. 404 00:24:10,580 --> 00:24:13,730 Và đây là cách bạn có thể cộng tác với nhóm của bạn. 405 00:24:13,730 --> 00:24:17,159 >> Bạn chỉ có thể chỉ cho họ vào bạn repo và họ có thể tải về nó hoặc hình ảnh của bạn 406 00:24:17,159 --> 00:24:18,200 và họ có thể tải về nó. 407 00:24:18,200 --> 00:24:21,140 408 00:24:21,140 --> 00:24:24,990 Vì vậy, với đủ các talk. 409 00:24:24,990 --> 00:24:29,110 Ai muốn xem một số bản demo thực tế nhanh chóng? 410 00:24:29,110 --> 00:24:31,330 Được rồi. 411 00:24:31,330 --> 00:24:34,050 Vì vậy, ở đây tôi có. 412 00:24:34,050 --> 00:24:37,480 Ca các bạn nhìn thấy màn hình của tôi? 413 00:24:37,480 --> 00:24:38,390 Được rồi. 414 00:24:38,390 --> 00:24:45,810 >> Vì vậy, tôi có Docker chạy ở đây, vì vậy tôi có thể kiểm tra it's-- Đây là phiên bản 415 00:24:45,810 --> 00:24:47,510 của Docker đang chạy. 416 00:24:47,510 --> 00:24:49,320 Có thể làm thông tin Docker. 417 00:24:49,320 --> 00:24:55,730 Kiểm tra tất cả các thông tin về bao nhiêu hình ảnh mà họ có, và vv và vv. 418 00:24:55,730 --> 00:24:58,890 Docker PS, không có gì chạy. 419 00:24:58,890 --> 00:25:00,570 Nối những người. 420 00:25:00,570 --> 00:25:06,370 >> Vì vậy, điều đầu tiên tôi muốn làm là chương trình bạn làm thế nào bạn có thể dễ dàng chạy một container. 421 00:25:06,370 --> 00:25:09,350 Vì vậy, vẻ đẹp về Doctor chạy, nếu nó thực sự 422 00:25:09,350 --> 00:25:14,700 không tìm thấy một hình ảnh tại địa phương, theo mặc định nó nói đến Doctor Hub 423 00:25:14,700 --> 00:25:17,240 và cố gắng để tìm thấy nó ở đó và tải nó cho bạn. 424 00:25:17,240 --> 00:25:22,820 Vì vậy, nó bao gồm một Docker kéo lệnh, tự nhiên. 425 00:25:22,820 --> 00:25:26,130 >> Vì vậy, nếu tôi làm một Docker chạy, hello-thế giới. 426 00:25:26,130 --> 00:25:28,890 427 00:25:28,890 --> 00:25:31,200 Vì vậy, đầu tiên nó đi để cố gắng xác định vị trí nó. 428 00:25:31,200 --> 00:25:36,140 Nếu không, như bạn có thể thấy ở đây, nó không thể tìm thấy nó tại địa phương. 429 00:25:36,140 --> 00:25:41,830 Ngay bây giờ nó chỉ kéo hai lớp đã làm cho hình ảnh đó và tôi chạy nó. 430 00:25:41,830 --> 00:25:45,440 Hello-thế giới chỉ là cơ bản kết quả đầu ra, những gì bạn đã làm. 431 00:25:45,440 --> 00:25:47,680 Vì vậy, đây là đơn giản nhất, một trong những ví dụ đơn giản nhất. 432 00:25:47,680 --> 00:25:53,840 Vì vậy, thực sự tôi chỉ cần chạy và chấm dứt container thực sự nhanh chóng. 433 00:25:53,840 --> 00:25:59,500 >> Nếu tôi muốn run-- và bằng cách này, nếu Tôi muốn thời gian đó, chỉ cần để bạn biết, 434 00:25:59,500 --> 00:26:03,572 này là phải mất bao lâu để thực sự quay lên và chứa nó. 435 00:26:03,572 --> 00:26:05,030 Chúng tôi đang đo nó bằng mili giây. 436 00:26:05,030 --> 00:26:10,600 Vì vậy, bạn có thể nhìn thấy bao nhiêu điều này có thể thực sự giúp bạn không chỉ trong thử nghiệm, 437 00:26:10,600 --> 00:26:13,200 mà còn ngay cả việc triển khai. 438 00:26:13,200 --> 00:26:17,221 Vì vậy, đó là ghi chú nhanh trên đó. 439 00:26:17,221 --> 00:26:18,970 Điều tiếp theo tôi sẽ làm là thực sự 440 00:26:18,970 --> 00:26:21,930 chạy một bức ảnh tôi đã được chuẩn bị. 441 00:26:21,930 --> 00:26:24,460 Vì vậy, Docker chạy. 442 00:26:24,460 --> 00:26:27,240 -d chỉ là một lá cờ để nói nó chạy ở chế độ nền. 443 00:26:27,240 --> 00:26:30,290 Và -p gán cổng nào đó. 444 00:26:30,290 --> 00:26:32,670 Bởi vì theo mặc định, container đang bị cô lập, 445 00:26:32,670 --> 00:26:36,080 vì vậy bạn phải xác định chính xác làm thế nào nó có thể truy cập chúng. 446 00:26:36,080 --> 00:26:41,150 Và trong trường hợp này, tôi nói với Docker để ánh xạ một cổng ngẫu nhiên trên máy chủ 447 00:26:41,150 --> 00:26:44,560 đến một cổng được chỉ định trong vòng chứa chính nó. 448 00:26:44,560 --> 00:26:47,130 449 00:26:47,130 --> 00:26:56,460 Và đó là cơ bản mà các image-- hy vọng đây là một trong những quyền. 450 00:26:56,460 --> 00:27:01,780 >> Vì vậy, nó không song song mỗi tải của những lớp như bạn có thể thấy ở đây. 451 00:27:01,780 --> 00:27:06,949 Đó là các lớp làm hình ảnh cuối mà tôi xây dựng. 452 00:27:06,949 --> 00:27:08,115 Nó sẽ mất một giây. 453 00:27:08,115 --> 00:27:11,290 454 00:27:11,290 --> 00:27:12,370 Và đây rồi. 455 00:27:12,370 --> 00:27:16,590 >> Vì vậy, bây giờ nếu tôi làm một ps Docker, tôi nên thấy cái gì đó đang chạy. 456 00:27:16,590 --> 00:27:22,250 Tôi sẽ thấy ID, hình ảnh rằng đây nó được dựa tắt, 457 00:27:22,250 --> 00:27:23,880 và các lệnh đã được thực hiện. 458 00:27:23,880 --> 00:27:28,720 Và làm thế nào để truy cập nó là về cơ bản bạn đi đến cổng đó. 459 00:27:28,720 --> 00:27:33,240 Vì vậy, tôi sẽ đi với: này là tôi đang chạy nó trên AWS. 460 00:27:33,240 --> 00:27:37,150 Tôi sẽ đi đến 32.769. 461 00:27:37,150 --> 00:27:37,650 Rất tiếc. 462 00:27:37,650 --> 00:27:40,495 463 00:27:40,495 --> 00:27:41,120 Và ở đây chúng tôi đi. 464 00:27:41,120 --> 00:27:44,550 >> Vì vậy, đây thực sự là chỉ một dịch vụ web cho thấy 465 00:27:44,550 --> 00:27:46,240 mà chứa nó đang được phục vụ từ. 466 00:27:46,240 --> 00:27:50,450 Vì vậy, bạn có thể thấy rằng nó là từ a9f container. 467 00:27:50,450 --> 00:27:52,850 Và đây đây là tên của container. 468 00:27:52,850 --> 00:27:56,550 Vì vậy, các bạn có thể xem cách nhanh chóng nó là để thực sự không chỉ kéo mà còn 469 00:27:56,550 --> 00:28:00,440 triển khai các container này. 470 00:28:00,440 --> 00:28:05,070 >> Bây giờ bước tiếp theo là nhìn vào Dockerfiles 471 00:28:05,070 --> 00:28:09,430 và làm thế nào chúng ta có thể thực sự xây dựng hình ảnh mới. 472 00:28:09,430 --> 00:28:15,250 Tôi chỉ đi được clone, một mẫu Dockerfile dựa trên đầu 473 00:28:15,250 --> 00:28:17,755 sơ đồ, là để Apache và PHP. 474 00:28:17,755 --> 00:28:26,740 475 00:28:26,740 --> 00:28:28,140 Hy vọng rằng tôi nhớ repo của tôi. 476 00:28:28,140 --> 00:28:36,410 477 00:28:36,410 --> 00:28:38,750 >> Vì vậy, tôi có kho lưu trữ của tôi ngay bây giờ. 478 00:28:38,750 --> 00:28:43,080 Và bạn sẽ thấy điều này rất nhiều thực sự. 479 00:28:43,080 --> 00:28:45,110 Tôi không cài đặt cây. 480 00:28:45,110 --> 00:28:48,700 >> Vì vậy, về cơ bản bạn sẽ thấy như thế nào tài liệu mã nguồn của bạn xung quanh 481 00:28:48,700 --> 00:28:51,240 nó, và sau đó một Dockerfile trên làm thế nào để thực sự gói nó. 482 00:28:51,240 --> 00:28:57,970 Vì vậy, nó chỉ là một mẫu PHP âm vang chào CS50. 483 00:28:57,970 --> 00:29:01,550 >> Vì vậy, nếu tôi muốn chạy nó, Tôi sẽ làm Docker build. 484 00:29:01,550 --> 00:29:03,370 Tôi phải xây dựng nó đầu tiên. 485 00:29:03,370 --> 00:29:12,420 Tôi sẽ đặt tên cho nó demo_cs50. 486 00:29:12,420 --> 00:29:16,470 Và bạn cần một thẻ để nó quá. 487 00:29:16,470 --> 00:29:19,802 Vì vậy, chúng ta hãy gọi nó V1 chấm. 488 00:29:19,802 --> 00:29:21,760 Vì vậy, như tôi đã nói trước, những gì tôi đang làm hôm nay 489 00:29:21,760 --> 00:29:26,840 là tôi đang nói Docker đi sử dụng that-- thực sự, xin lỗi, xấu của tôi. 490 00:29:26,840 --> 00:29:29,450 491 00:29:29,450 --> 00:29:32,500 Chúng tôi đã không có một cái nhìn tại Dockerfile chính nó. 492 00:29:32,500 --> 00:29:39,020 Vì vậy, những điều chỉ có ở đây là index.php cũng như các tập tin readme 493 00:29:39,020 --> 00:29:39,810 và một Dockerfile. 494 00:29:39,810 --> 00:29:44,600 >> Vì vậy, nếu bạn có một cái nhìn tại các Dockerfile, vì vậy nó 495 00:29:44,600 --> 00:29:47,150 rất giống với những gì Tôi đã mô tả trước đó. 496 00:29:47,150 --> 00:29:51,220 Nó chỉ là một bó bước Docker thực 497 00:29:51,220 --> 00:29:56,330 bằng cách tạo ra và rách xuống container và [? đếm?] chúng thành một hình ảnh. 498 00:29:56,330 --> 00:29:59,570 >> Và về cơ bản bạn có thể see-- [Không nghe thấy] nó here-- 499 00:29:59,570 --> 00:30:04,340 nhưng điều này là từ repo địa phương. 500 00:30:04,340 --> 00:30:06,410 Nó sẽ đi và lấy index.php. 501 00:30:06,410 --> 00:30:10,970 Vì vậy, đó là các mã nguồn duy nhất thực sự là một phần của ứng dụng của bạn. 502 00:30:10,970 --> 00:30:16,800 Tất cả điều này là cơ bản hệ điều hành đường ống dẫn nước, 503 00:30:16,800 --> 00:30:21,460 nhận được các gói phải và Apache và PHP, và không có điều gì. 504 00:30:21,460 --> 00:30:26,950 Nhưng điều này thực sự xảy index.php và cam kết nó vào container, 505 00:30:26,950 --> 00:30:28,210 thành hình ảnh. 506 00:30:28,210 --> 00:30:33,120 >> Vì vậy, nếu bạn đi trước và chạy lệnh bằng cách làm như sau, 507 00:30:33,120 --> 00:30:36,155 nó going-- thực sự, điều này có thể mất một chút. 508 00:30:36,155 --> 00:30:40,870 509 00:30:40,870 --> 00:30:42,455 Hy vọng rằng nó không mất quá nhiều thời gian. 510 00:30:42,455 --> 00:30:45,129 511 00:30:45,129 --> 00:30:46,170 Vì vậy, bạn có thể xem các bước. 512 00:30:46,170 --> 00:30:49,320 Và tôi khuyến khích bạn đi trở về nhà ngày hôm nay và thử nó. 513 00:30:49,320 --> 00:30:51,280 Và Mano sẽ mô tả cách chính xác bạn làm điều đó. 514 00:30:51,280 --> 00:30:57,810 Nhưng nó thực sự tuyệt vời để xem chính xác những gì đang xảy ra đằng sau hậu trường. 515 00:30:57,810 --> 00:31:02,420 Nhưng đó là ridiculously dễ dàng để xây dựng hình ảnh và triển khai chúng bằng cách sử dụng Docker. 516 00:31:02,420 --> 00:31:12,170 517 00:31:12,170 --> 00:31:14,050 >> Nó lấy một chút còn hơn tôi mong đợi. 518 00:31:14,050 --> 00:31:29,085 519 00:31:29,085 --> 00:31:32,690 >> Hãy xem những gì sẽ xảy ra khi you-- mát. 520 00:31:32,690 --> 00:31:36,260 Vì vậy, như bạn có thể thấy, mỗi người trong những bước đại diện cho dòng trong Dockerfile. 521 00:31:36,260 --> 00:31:42,570 Và nó cho thấy ở đây là nó xây dựng thành công hình ảnh này. 522 00:31:42,570 --> 00:31:46,480 >> Vì vậy, nếu tôi làm hình ảnh Docker, tôi sẽ xem tất cả các hình ảnh mà tôi có ở địa phương. 523 00:31:46,480 --> 00:31:52,160 Và một trong số họ được gọi là của tôi Tên truy nhập, và tên của các hình ảnh, 524 00:31:52,160 --> 00:31:56,050 và representing-- tag chủ yếu đó là một phiên bản tag. 525 00:31:56,050 --> 00:31:58,040 >> Vì vậy, bây giờ nếu tôi muốn chạy nó, tôi làm Docker chạy. 526 00:31:58,040 --> 00:32:06,040 527 00:32:06,040 --> 00:32:14,960 Và tôi chỉ muốn làm một -P -d. Do v1. 528 00:32:14,960 --> 00:32:18,500 Vì vậy, tôi có thể nhìn thấy bây giờ mà tôi có hai container đang chạy, một trong đó tôi chỉ 529 00:32:18,500 --> 00:32:21,230 tạo ra và chào Docker một mà tôi đã nhận trước. 530 00:32:21,230 --> 00:32:24,320 >> Và bạn có thể thấy ở đây là nó gán cho nó một cổng khác nhau. 531 00:32:24,320 --> 00:32:30,710 Vì vậy, nếu tôi đi đến cùng một IP nhưng gán cho nó một port-- khác nhau hy vọng tôi đã không. 532 00:32:30,710 --> 00:32:33,060 Vì vậy, bây giờ điều này là ứng dụng mà tôi chỉ được triển khai. 533 00:32:33,060 --> 00:32:35,980 534 00:32:35,980 --> 00:32:43,900 >> Nếu tôi muốn thay đổi, tôi có thể nhanh chóng chỉnh sửa mã nguồn 535 00:32:43,900 --> 00:32:49,050 và làm như sau. 536 00:32:49,050 --> 00:32:55,170 Hãy làm xin chào Harvard. 537 00:32:55,170 --> 00:32:57,989 Vì vậy, bây giờ những gì đang xảy ra phải xảy ra là tôi 538 00:32:57,989 --> 00:32:59,905 sẽ khóa nó với một khác nhau version-- oh, 539 00:32:59,905 --> 00:33:03,080 không này guy-- thẻ nó với một phiên bản khác nhau. 540 00:33:03,080 --> 00:33:05,735 Và bạn sẽ see-- làm các bạn mong đợi 541 00:33:05,735 --> 00:33:11,020 nó để mất cùng một lượng thời gian để xây dựng nó một lần thứ hai hay không? 542 00:33:11,020 --> 00:33:14,470 Tất cả các quyền, và có ai biết lý do tại sao? 543 00:33:14,470 --> 00:33:15,020 Nói lớn. 544 00:33:15,020 --> 00:33:16,350 >> Đung [Không nghe thấy] 545 00:33:16,350 --> 00:33:19,830 >> Nicola KABAR: Đó là về cơ bản chúng tôi chỉ thay đổi một trong các bước sau. 546 00:33:19,830 --> 00:33:23,110 Và do đó nó sẽ sử dụng bộ nhớ cache và sử dụng mỗi người trong những lớp. 547 00:33:23,110 --> 00:33:27,080 Và đó là thật sự một số tính năng sát thủ của Docker 548 00:33:27,080 --> 00:33:32,930 là làm thế nào nó thực sự sử dụng và reuses tiếp quản 549 00:33:32,930 --> 00:33:36,950 đĩa của bạn cho cùng mảnh chính xác của thông tin. 550 00:33:36,950 --> 00:33:40,700 >> Vì vậy, nếu chúng ta làm điều tương tự, nó chỉ mất một vài giây. 551 00:33:40,700 --> 00:33:48,860 Nếu chúng ta muốn redeploy-- vì vậy bây giờ Tôi cần phải có ba container. 552 00:33:48,860 --> 00:33:56,160 Nhưng điều này đang được phục vụ trên the-- bảy một. 553 00:33:56,160 --> 00:33:58,860 Vì vậy, bây giờ nó là các container thứ ba. 554 00:33:58,860 --> 00:34:02,580 Mọi người đều hiểu những gì tôi chỉ cần làm ở đây? 555 00:34:02,580 --> 00:34:06,320 >> Vì vậy, bây giờ nếu bạn muốn chia sẻ này thùng chứa thật nhanh chóng với bạn bè của bạn, 556 00:34:06,320 --> 00:34:14,840 bạn chỉ có thể làm Docker đẩy tên của các container, hy vọng. 557 00:34:14,840 --> 00:34:20,130 Vì vậy, bây giờ nó sẽ đẩy nó đối với: Tôi không ký tại đây. 558 00:34:20,130 --> 00:34:33,511 559 00:34:33,511 --> 00:34:34,219 Xin lỗi về điều đó. 560 00:34:34,219 --> 00:34:39,219 Nhưng tôi sẽ không khắc phục sự cố này ngay bây giờ. 561 00:34:39,219 --> 00:34:42,780 Nhưng về cơ bản là một lệnh chỉ là đi lên đẩy nó. 562 00:34:42,780 --> 00:34:45,670 Và bạn đang đi để có thể nhìn thấy nó nếu bạn đi đến Docker Hub 563 00:34:45,670 --> 00:34:48,587 Và bạn đăng nhập, bạn đi để có thể nhìn thấy nó. 564 00:34:48,587 --> 00:34:50,420 Và sau đó bạn có thể chỉ chỉ bất cứ ai đang đi 565 00:34:50,420 --> 00:34:52,750 sử dụng hình ảnh đó để đi và kéo nó. 566 00:34:52,750 --> 00:34:55,460 Và họ có thể sử dụng nó. 567 00:34:55,460 --> 00:34:57,760 >> Cùng với đó, hy vọng Tôi loại chứng minh 568 00:34:57,760 --> 00:35:01,230 cách dễ dàng là để làm việc với Docker. 569 00:35:01,230 --> 00:35:06,610 Và tôi chỉ cần đi tới đưa lại cho Mano. 570 00:35:06,610 --> 00:35:11,760 Và anh ta sẽ mang nó từ đây. 571 00:35:11,760 --> 00:35:13,990 >> Mano NHÃN HIỆU: Tất cả các quyền cảm ơn, cảm ơn Nico. 572 00:35:13,990 --> 00:35:18,700 573 00:35:18,700 --> 00:35:20,614 Vì vậy, những gì? 574 00:35:20,614 --> 00:35:24,410 Vì vậy, một trong những điều tôi muốn làm là đặt lại với nhau 575 00:35:24,410 --> 00:35:28,820 lý do tại sao đây là một important-- tại sao và tại sao Docker 576 00:35:28,820 --> 00:35:33,000 đựng được như vậy một phát triển mới quan trọng, 577 00:35:33,000 --> 00:35:36,890 một phương pháp mới thực sự làm phần mềm. 578 00:35:36,890 --> 00:35:41,300 >> Và trước khi tôi làm, tôi sẽ chỉ giới thiệu một vài số liệu thống kê. 579 00:35:41,300 --> 00:35:42,790 Tôi sẽ không để đọc tất cả các. 580 00:35:42,790 --> 00:35:52,540 Nhưng điều này cho thấy bạn rất nhiều về cách phổ biến này là trong cộng đồng. 581 00:35:52,540 --> 00:35:56,310 Các công nghệ cốt lõi Docker là mã nguồn mở. 582 00:35:56,310 --> 00:36:03,560 Vì vậy, đó là Docker Engine, Compose, Swarm, một loạt các công cụ khác 583 00:36:03,560 --> 00:36:05,210 là tất cả các mã nguồn mở. 584 00:36:05,210 --> 00:36:10,590 Và chúng ta có, những gì đã làm tôi nói, 1.300 người đóng góp. 585 00:36:10,590 --> 00:36:15,630 Bạn đang nhìn thấy bây giờ, nếu bạn nhìn vào số lượng tuyển dụng việc làm, thời gian qua 586 00:36:15,630 --> 00:36:19,640 chúng ta nhìn, nó đã được khoảng 43.000 việc làm lỗ đặc biệt nhắc đến 587 00:36:19,640 --> 00:36:22,230 quen thuộc với Docker. 588 00:36:22,230 --> 00:36:26,450 Hàng trăm triệu hình ảnh có được tải về từ Docker Hub. 589 00:36:26,450 --> 00:36:31,870 Và, tốt, số liệu thống kê nhiều lớn hơn. 590 00:36:31,870 --> 00:36:34,770 >> Đối với những người tò mò, nó ban đầu được viết bằng Python 591 00:36:34,770 --> 00:36:37,730 và sau đó viết lại vào Go. 592 00:36:37,730 --> 00:36:40,320 Và nó chỉ được mở source-- nó chỉ 593 00:36:40,320 --> 00:36:44,950 được phát hành trong khoảng 2 năm và 1/2, có nghĩa là trong 2 năm và 1/2, 594 00:36:44,950 --> 00:36:48,020 chúng tôi đã nhìn thấy một số tiền to lớn tăng trưởng và tầm quan trọng 595 00:36:48,020 --> 00:36:50,190 của điều này trong cộng đồng. 596 00:36:50,190 --> 00:36:52,400 Và vì vậy tôi muốn nói một chút về lý do tại sao. 597 00:36:52,400 --> 00:36:54,940 598 00:36:54,940 --> 00:36:59,880 >> Vì vậy, chỉ để nhắc lại một số Điểm chính của Nico, Docker là nhanh. 599 00:36:59,880 --> 00:37:00,630 Nó là xách tay. 600 00:37:00,630 --> 00:37:02,500 Đó là tái sản xuất. 601 00:37:02,500 --> 00:37:06,130 Và nó thiết lập một môi trường chuẩn. 602 00:37:06,130 --> 00:37:13,370 >> Và what-- này là crappy của tôi dập monoliths slide-- gì 603 00:37:13,370 --> 00:37:17,990 nó giúp mọi người làm, mà rất nhiều các công nghiệp phần mềm 604 00:37:17,990 --> 00:37:21,400 bắt đầu làm trong Đầu những năm 2000, đang chuyển động 605 00:37:21,400 --> 00:37:24,200 từ những nguyên khối ứng dụng duy nhất 606 00:37:24,200 --> 00:37:28,590 nơi tất cả phụ thuộc phải được thử nghiệm trước khi toàn bộ ứng dụng đã có 607 00:37:28,590 --> 00:37:31,280 được triển khai, trong đó có thể có nghĩa là một trang web 608 00:37:31,280 --> 00:37:36,240 chỉ đã được triển khai một lần mỗi ba tháng, hoặc nhiều hơn, 609 00:37:36,240 --> 00:37:42,650 đến một dịch vụ nhiều hơn nữa kiến trúc hướng 610 00:37:42,650 --> 00:37:46,090 hoặc từng phần, loại khác nhau các kiến ​​trúc ứng dụng. 611 00:37:46,090 --> 00:37:48,610 Và như vậy cho phép các loại kiến ​​trúc 612 00:37:48,610 --> 00:37:52,250 tận dụng lợi thế của Docker để chạy trong ba 613 00:37:52,250 --> 00:37:58,450 khu vực chính của sự phát triển, trong đó được phát triển viết mã thực tế của bạn, 614 00:37:58,450 --> 00:38:00,140 kiểm tra mã của bạn, và triển khai nó. 615 00:38:00,140 --> 00:38:03,000 616 00:38:03,000 --> 00:38:05,420 >> Vì vậy, tại sao điều này lại quan trọng? 617 00:38:05,420 --> 00:38:09,920 Nếu bạn đang a-- hãy để tôi đưa ra một ví dụ. 618 00:38:09,920 --> 00:38:13,600 Nếu bạn là một trang web phát triển thiết bị, bạn 619 00:38:13,600 --> 00:38:19,020 phát triển một trang web dựa trên cơ sở dữ liệu mà David được sản xuất ở đây. 620 00:38:19,020 --> 00:38:20,490 Xin lỗi David, tôi gọi bạn ra ngoài. 621 00:38:20,490 --> 00:38:22,984 622 00:38:22,984 --> 00:38:24,900 Nếu bạn muốn triển khai toàn bộ điều, bạn muốn 623 00:38:24,900 --> 00:38:28,870 phải chờ đợi theo một truyền thống phát triển phần mềm nguyên khối 624 00:38:28,870 --> 00:38:32,710 môi trường, bạn sẽ phải chờ đợi cho đến khi ông được thực hiện với cơ sở dữ liệu 625 00:38:32,710 --> 00:38:36,030 trước khi bạn thực sự có thể làm cho bất kỳ thay đổi trang web của bạn. 626 00:38:36,030 --> 00:38:40,900 Bạn muốn có để triển khai lại toàn bộ ứng dụng để làm như vậy. 627 00:38:40,900 --> 00:38:45,490 >> Và những gì Docker giúp bạn làm từng là việc người vào các thành phần khác nhau 628 00:38:45,490 --> 00:38:52,990 và cập nhật cho họ khi họ đi, chỉ cần làm chắc chắn rằng các giao diện ở mức tương tự. 629 00:38:52,990 --> 00:38:56,350 Vì vậy, những gì nó đã làm là nó chuyển người 630 00:38:56,350 --> 00:39:03,950 từ làm những khối lớn phần mềm kiến ​​trúc mà 631 00:39:03,950 --> 00:39:07,610 triển khai mỗi tháng để liên tục hội nhập và phát triển liên tục 632 00:39:07,610 --> 00:39:08,490 môi trường. 633 00:39:08,490 --> 00:39:12,580 >> Bây giờ điều này không phải là duy nhất cho Docker, nhưng Docker làm cho dễ dàng hơn rất nhiều, 634 00:39:12,580 --> 00:39:16,620 có nghĩa là bạn đang cơ bản liên tục triển khai. 635 00:39:16,620 --> 00:39:20,690 Chúng tôi nói chuyện với các doanh nghiệp có triển khai ứng dụng công ốp 636 00:39:20,690 --> 00:39:30,180 hàng ngàn lần một ngày vì họ thấy giá trị của chỉ làm 637 00:39:30,180 --> 00:39:33,740 thay đổi nhỏ, và miễn khi nó chạy qua các bài kiểm tra, 638 00:39:33,740 --> 00:39:35,900 để cho nó đi ra ngoài vào sản xuất. 639 00:39:35,900 --> 00:39:41,890 Nico đã luôn nói với tôi trước đó trong nhiều môi trường, 640 00:39:41,890 --> 00:39:46,580 chu kỳ sống tiêu chuẩn của một container được tính bằng giây, 641 00:39:46,580 --> 00:39:50,460 trong khi một máy ảo có thể được đo trong tháng. 642 00:39:50,460 --> 00:39:54,590 643 00:39:54,590 --> 00:39:58,690 >> Tôi muốn lấy một chút biến ở đây bởi vì tôi 644 00:39:58,690 --> 00:40:00,170 tại một cơ sở giáo dục. 645 00:40:00,170 --> 00:40:06,670 Tôi muốn đưa ra một ví dụ về cách công trình này trong một nghiên cứu giáo dục 646 00:40:06,670 --> 00:40:07,670 tình huống. 647 00:40:07,670 --> 00:40:10,930 Vì vậy, có một tổ chức gọi bioboxes. 648 00:40:10,930 --> 00:40:15,450 Bioboxes hiện DNA phân tích cho các nhà nghiên cứu. 649 00:40:15,450 --> 00:40:22,029 >> Bây giờ những gì họ thấy được rằng khi một researcher-- và đây không phải là 650 00:40:22,029 --> 00:40:24,070 lỗi của bất kỳ đặc biệt researcher-- nhưng khi 651 00:40:24,070 --> 00:40:31,240 một nhà nghiên cứu triển khai một thuật toán để phân tích, 652 00:40:31,240 --> 00:40:36,670 Một cách đặc biệt, một mẫu DNA, họ sẽ viết phần mềm, 653 00:40:36,670 --> 00:40:39,980 xuất bản rằng, có lẽ để GitHub hoặc ở một nơi khác, 654 00:40:39,980 --> 00:40:42,680 và sau đó họ đã được thực hiện. 655 00:40:42,680 --> 00:40:47,440 >> Vâng vấn đề là nó không nhất thiết phải tái sản xuất. 656 00:40:47,440 --> 00:40:51,610 Bởi vì để hiểu các phần mềm, 657 00:40:51,610 --> 00:40:54,830 họ sẽ được thiết lập cho các môi trường phát triển chính xác 658 00:40:54,830 --> 00:41:00,460 mà nhà nghiên cứu đã sử dụng, thường máy tính xách tay của họ, hoặc một máy chủ, hoặc một dữ liệu 659 00:41:00,460 --> 00:41:04,280 trung tâm mà họ đang sử dụng. 660 00:41:04,280 --> 00:41:11,530 Và do đó, nó là rất khó khăn để tái tạo các kết quả nghiên cứu khi 661 00:41:11,530 --> 00:41:16,910 phân tích các mẫu DNA để tìm vào những thứ như incidence-- 662 00:41:16,910 --> 00:41:23,830 so sánh tỷ lệ mắc bệnh tim mạch dựa trên gen nhất định có mặt, 663 00:41:23,830 --> 00:41:28,900 Chẳng hạn, hoặc có nguy cơ ung thư, hoặc bất kỳ loại khác của sự vật. 664 00:41:28,900 --> 00:41:33,900 >> Vì vậy, những gì họ đã làm thay vào đó là họ bắt đầu tạo ra các thùng chứa. 665 00:41:33,900 --> 00:41:39,380 Và bạn có thể đi đến bioboxes.org, đó là một tổ chức tuyệt vời. 666 00:41:39,380 --> 00:41:43,900 Và những gì họ làm là họ sản xuất container dựa trên nghiên cứu. 667 00:41:43,900 --> 00:41:46,840 Và sau đó bất cứ khi nào ai đó gửi trong mẫu của họ, họ có thể chạy nó. 668 00:41:46,840 --> 00:41:52,770 Và nó có tất cả các môi trường cần thiết để chạy thuật toán 669 00:41:52,770 --> 00:41:55,370 và tạo ra kết quả. 670 00:41:55,370 --> 00:41:58,250 Và họ thấy rằng họ đang nhiều khả năng và nhiều 671 00:41:58,250 --> 00:42:01,300 hơn một cách nhanh chóng thể trả lại kết quả cho người dân. 672 00:42:01,300 --> 00:42:06,860 >> Và trên thực tế, những gì mọi người đang làm đang chạy phân tích của riêng họ trên DNA, 673 00:42:06,860 --> 00:42:11,220 gửi mà vào bioboxes, và sau đó biobox chỉ mất dữ liệu, 674 00:42:11,220 --> 00:42:15,350 chạy nó chống lại sự đa dạng container khác nhau 675 00:42:15,350 --> 00:42:19,030 để xem kết quả khác nhau dựa trên nghiên cứu khác nhau. 676 00:42:19,030 --> 00:42:21,860 Vì vậy, nó rất mạnh mẽ cách thức mà các nhà nghiên cứu 677 00:42:21,860 --> 00:42:28,070 có thể làm cho một trường hợp duy nhất cho phép người khác để thử và sinh sản 678 00:42:28,070 --> 00:42:28,650 kết quả. 679 00:42:28,650 --> 00:42:31,710 680 00:42:31,710 --> 00:42:34,360 >> Vậy làm thế nào để bạn bắt đầu? 681 00:42:34,360 --> 00:42:37,950 682 00:42:37,950 --> 00:42:39,800 Chúng tôi được hỗ trợ tốt trên Linux. 683 00:42:39,800 --> 00:42:43,070 Vì vậy, nếu bạn muốn cài đặt bất cứ điều gì trên Linux, 684 00:42:43,070 --> 00:42:45,620 bạn sử dụng tiêu chuẩn của bạn quản lý gói để cài đặt. 685 00:42:45,620 --> 00:42:47,600 Nếu bạn đang sử dụng một Debian, nó get apt. 686 00:42:47,600 --> 00:42:50,500 CentOS là yum. 687 00:42:50,500 --> 00:42:53,500 Fedora Red Hat là rpm-- tôi không nhớ. 688 00:42:53,500 --> 00:42:56,070 Dù sao, đó là tất cả ở đó. 689 00:42:56,070 --> 00:42:59,610 Chúng tôi hỗ trợ một lượng lớn các bản phân phối Linux. 690 00:42:59,610 --> 00:43:01,150 Bạn có thể kiểm tra những người ra. 691 00:43:01,150 --> 00:43:06,370 >> Chúng tôi cũng có các tùy chọn để bạn có thể chạy trên máy Mac hoặc Windows. 692 00:43:06,370 --> 00:43:10,670 Bây giờ Nico đã đề cập trước đó nó chỉ được hỗ trợ trên Linux. 693 00:43:10,670 --> 00:43:18,180 Đó là sự thật vì nó cần một hạt nhân Linux. 694 00:43:18,180 --> 00:43:20,540 Tuy nhiên, bạn có thể chạy trong một máy ảo. 695 00:43:20,540 --> 00:43:25,290 Và những gì các Docker Toolbox không có gì, mà bạn có thể tải về, 696 00:43:25,290 --> 00:43:27,610 nó mang lại cho bạn rằng máy ảo. 697 00:43:27,610 --> 00:43:37,260 >> Vì vậy, chỉ cần một cách nhanh chóng 48 thứ hai, tôi nghĩ rằng, tải về. 698 00:43:37,260 --> 00:43:40,670 Bạn chỉ cần tìm kiếm trên Docker Toolbox, tải nó vào máy Mac, 699 00:43:40,670 --> 00:43:43,910 và phần này là của Tất nhiên tăng tốc lên vì người 700 00:43:43,910 --> 00:43:47,620 ai muốn xem một tín hiệu download? 701 00:43:47,620 --> 00:43:54,190 Cài đặt chuẩn Mac, và sau đó bạn 702 00:43:54,190 --> 00:43:59,795 đi xem Jerome đưa vào mật khẩu của mình. 703 00:43:59,795 --> 00:44:00,670 Điều đó rất thú vị. 704 00:44:00,670 --> 00:44:03,510 705 00:44:03,510 --> 00:44:06,230 Và sau đó nó sẽ cài đặt một bó toàn bộ các công cụ. 706 00:44:06,230 --> 00:44:10,010 Và đặc biệt nó sẽ cài đặt một dòng lệnh. 707 00:44:10,010 --> 00:44:14,220 Và sau đó bạn có thể nhìn thấy Jerome thử nghiệm hình ảnh của mình. 708 00:44:14,220 --> 00:44:19,050 709 00:44:19,050 --> 00:44:22,640 >> Và sau đó dựa vào điều này, bạn có thể thấy rằng YouTube 710 00:44:22,640 --> 00:44:27,420 nghĩ rằng Nico là quan tâm Star Wars, show Jimmy Kimmel, 711 00:44:27,420 --> 00:44:29,020 và tôi nghĩ rằng Ellen. 712 00:44:29,020 --> 00:44:34,130 Tôi nghĩ rằng cuối cùng là một đoạn trích từ một chương trình Ellen. 713 00:44:34,130 --> 00:44:37,760 >> Vì vậy, Docker Toolbox dù đi kèm với hơn chỉ máy Docker. 714 00:44:37,760 --> 00:44:39,840 Vì vậy, Docker Máy là điều đó giúp 715 00:44:39,840 --> 00:44:43,710 bạn thiết lập một ảo máy trên Windows của bạn 716 00:44:43,710 --> 00:44:52,080 hoặc Mac-- hộp Windows hoặc Mac của bạn box-- và giúp bạn làm dự phòng, 717 00:44:52,080 --> 00:44:54,040 >> Nhưng nó cũng đi kèm với Swarm và Compose, 718 00:44:54,040 --> 00:45:00,840 được thiết kế để giúp bạn làm lớn triển khai quy mô của ứng dụng của bạn. 719 00:45:00,840 --> 00:45:04,000 Vì vậy, nếu bạn muốn quản lý cụm các nút, 720 00:45:04,000 --> 00:45:08,450 cụm container, Soạn và Swarm là con đường để đi về điều đó. 721 00:45:08,450 --> 00:45:11,430 >> Và tất nhiên đi kèm với nó Docker Engine và Kitematic, 722 00:45:11,430 --> 00:45:13,250 mà là để bàn giao diện này. 723 00:45:13,250 --> 00:45:17,060 Tôi cũng nên đề cập đến Docker Registry, mà không được bao gồm trong hộp công cụ, 724 00:45:17,060 --> 00:45:23,150 nhưng nó là một cách để bạn có thể chạy riêng của bạn đăng ký của Docker hình ảnh như Docker 725 00:45:23,150 --> 00:45:28,970 Hub, nhưng bạn cũng có thể chỉ cần sử dụng Docker Hub như là một cách để làm điều đó. 726 00:45:28,970 --> 00:45:32,955 >> Và, cốt truyện xoay, bạn đang nhìn thấy nó chạy trong một container. 727 00:45:32,955 --> 00:45:34,830 Và đó là cách chúng tôi phân phối các slide của chúng tôi. 728 00:45:34,830 --> 00:45:38,610 Toàn bộ bài trình bày này là thực sự là một boong trượt HTML. 729 00:45:38,610 --> 00:45:43,170 Và nó đang chạy trong một container, mà bạn có thể có được tuỳ theo trường 730 00:45:43,170 --> 00:45:45,596 >> Nicola KABAR: Có, vì vậy nó chạy toàn thời gian trên Max của tôi. 731 00:45:45,596 --> 00:45:47,540 Và tôi đang trình bày từ nó. 732 00:45:47,540 --> 00:45:50,910 Và bạn chỉ cần làm Docker sau bạn cài đặt Toolbox của bạn. 733 00:45:50,910 --> 00:45:57,340 Bạn chỉ có thể làm một Docker chạy và có được nó, và sử dụng các slide. 734 00:45:57,340 --> 00:45:58,830 >> Mano Marks: Và đó là nó. 735 00:45:58,830 --> 00:46:02,160 Vì vậy, chúng tôi cảm ơn tất cả các bạn đã đến. 736 00:46:02,160 --> 00:46:03,990 Và chúng tôi đang hạnh phúc để trả lời câu hỏi. 737 00:46:03,990 --> 00:46:07,810 Tôi nên đề cập đến trước khi bất cứ ai lá có T-shirts trên đó. 738 00:46:07,810 --> 00:46:10,940 Xin lỗi những ai đang theo dõi này trên Livestream hoặc video, 739 00:46:10,940 --> 00:46:12,820 nhưng chúng tôi có Docker T-shirts trên đó. 740 00:46:12,820 --> 00:46:16,250 Và chúng ta biết học sinh Docker, và trong kinh nghiệm của tôi, 741 00:46:16,250 --> 00:46:18,940 giáo sư quá, giống như quần áo miễn phí. 742 00:46:18,940 --> 00:46:22,490 >> Vì vậy, cảm ơn tất cả các bạn đã đến ra. 743 00:46:22,490 --> 00:46:27,050 Và theo chúng tôi trên Twitter nếu bạn muốn, hoặc không. 744 00:46:27,050 --> 00:46:27,910 Tôi không quan tâm. 745 00:46:27,910 --> 00:46:29,430 Cũng theo Docker trên Twitter. 746 00:46:29,430 --> 00:46:31,890 Đó cũng là thú vị. 747 00:46:31,890 --> 00:46:32,990 Và sau đó đó là nó. 748 00:46:32,990 --> 00:46:33,490 Docker.com. 749 00:46:33,490 --> 00:46:35,410 Cảm ơn bạn. 750 00:46:35,410 --> 00:46:39,360 >> [Vỗ tay] 751 00:46:39,360 --> 00:46:41,625