1 00:00:00,000 --> 00:00:05,042 >> [RIPRODUZIONE DI BRANI MUSICALI] 2 00:00:05,042 --> 00:00:06,000 DAVID MALAN: Va bene. 3 00:00:06,000 --> 00:00:07,630 Grazie mille per essere venuti. 4 00:00:07,630 --> 00:00:11,850 Si tratta di un seminario CS50 su Docker, un tecnologia che noi stessi e CS50 tendiamo 5 00:00:11,850 --> 00:00:13,392 hanno iniziato a utilizzare per qualche tempo. 6 00:00:13,392 --> 00:00:15,766 Quindi il mio nome è David Malan, io insegnare Introduzione di Harvard 7 00:00:15,766 --> 00:00:16,671 di Informatica. 8 00:00:16,671 --> 00:00:18,670 Per un po 'anni, stiamo dando agli studenti 9 00:00:18,670 --> 00:00:20,435 scaricabile sul lato client macchine virtuali 10 00:00:20,435 --> 00:00:22,134 su cui fanno i loro problemi insiemi. 11 00:00:22,134 --> 00:00:24,300 Che ora abbiamo la transizione a un ambiente Copertura 12 00:00:24,300 --> 00:00:27,396 che in realtà utilizza questa tecnologia chiamato Docker, in modo tale che tutto il CS50 13 00:00:27,396 --> 00:00:29,270 gli studenti hanno ora il loro propri contenitori Docker 14 00:00:29,270 --> 00:00:31,180 che presto sente tutto. 15 00:00:31,180 --> 00:00:33,740 >> Inoltre, sul server di CS50 cluster di lato, per molti anni 16 00:00:33,740 --> 00:00:35,290 stavamo usando cloud server di Amazon. 17 00:00:35,290 --> 00:00:37,164 Siamo stati in esecuzione individuale macchine virtuali. 18 00:00:37,164 --> 00:00:40,330 Anche questo, abbiamo iniziato a passare a queste cose chiamate contenitori Docker 19 00:00:40,330 --> 00:00:43,762 in modo che tutte le nostre applicazioni sono ora perfettamente isolate l'una dall'altra. 20 00:00:43,762 --> 00:00:46,720 Quindi, per questo e altro, mi permettono di introdurre i nostri amici, Nico e Mano, 21 00:00:46,720 --> 00:00:48,574 da Docker sé. 22 00:00:48,574 --> 00:00:49,740 NICOLA Kabar: Grazie, David. 23 00:00:49,740 --> 00:00:51,410 Ciao a tutti. 24 00:00:51,410 --> 00:00:54,230 Il mio nome è Nico e questo è Mano. 25 00:00:54,230 --> 00:00:58,260 Noi siamo da Docker. 26 00:00:58,260 --> 00:01:02,240 Stiamo per essere parlare about-- dando voi ragazzi un intro a Docker, 27 00:01:02,240 --> 00:01:08,100 e, si spera, verso la fine di questo discorso si può realizzare 28 00:01:08,100 --> 00:01:12,890 quanto si può utilizzare per il medico ossalato lo sviluppo delle applicazioni 29 00:01:12,890 --> 00:01:14,200 e la distribuzione. 30 00:01:14,200 --> 00:01:21,250 >> Quindi, stiamo per cominciare reale veloce con alcune informazioni di base. 31 00:01:21,250 --> 00:01:22,750 Descrivere ciò che Docker è tutto. 32 00:01:22,750 --> 00:01:25,490 Come funziona? 33 00:01:25,490 --> 00:01:27,400 Come è architettato? 34 00:01:27,400 --> 00:01:29,360 Farò alcune demo. 35 00:01:29,360 --> 00:01:35,070 E Mano sarà che descrive come è possibile utilizzare Docker 36 00:01:35,070 --> 00:01:37,720 e dando passaggi specifici come si può iniziare. 37 00:01:37,720 --> 00:01:41,490 >> Le sarei grato se voi potete tenere off per le vostre domande verso la fine. 38 00:01:41,490 --> 00:01:46,800 In questo modo, potrei essere affrontando quelli domande durante la presentazione. 39 00:01:46,800 --> 00:01:52,150 Così lasceremo po 'di tempo verso la fine per le domande. 40 00:01:52,150 --> 00:01:55,170 >> Quindi, solo reale veloce, che ha in realtà mai lavorato su Docker, 41 00:01:55,170 --> 00:01:56,850 come ha giocato con esso? 42 00:01:56,850 --> 00:01:58,000 Eccezionale. 43 00:01:58,000 --> 00:01:58,520 Raffreddare. 44 00:01:58,520 --> 00:01:59,817 Grande. 45 00:01:59,817 --> 00:02:01,525 Così, ho intenzione di iniziare a con un po 'di storia. 46 00:02:01,525 --> 00:02:04,350 47 00:02:04,350 --> 00:02:09,820 Così indietro negli anni '90 e primi anni del 2000, fondamentalmente 48 00:02:09,820 --> 00:02:16,940 come gli sviluppatori web, sviluppatori di applicazioni, quando sono andati a distribuire un'applicazione 49 00:02:16,940 --> 00:02:19,350 era legato al metallo nudo. 50 00:02:19,350 --> 00:02:20,860 E 'stato un server. 51 00:02:20,860 --> 00:02:22,870 E 'stato una sola applicazione. 52 00:02:22,870 --> 00:02:25,260 >> Tradizionalmente, un esempio sarebbe come un stack LAMP, 53 00:02:25,260 --> 00:02:30,630 dove realmente dovuto richiamare il pool di risorse. 54 00:02:30,630 --> 00:02:37,110 CPU, memoria, disco, rete, installazione sistema operativo per di più. 55 00:02:37,110 --> 00:02:40,060 Se stai servendo qualcosa, se si sta effettivamente avendo web server, 56 00:02:40,060 --> 00:02:42,470 avete bisogno di qualcosa di simile Apache servire. 57 00:02:42,470 --> 00:02:47,540 >> Se l'applicazione ha bisogno di database, rovescio, 58 00:02:47,540 --> 00:02:50,840 si dovrebbe installare qualcosa come MySQL, e così via. 59 00:02:50,840 --> 00:02:55,910 E se avete bisogno del tempo di esecuzione, phps e il lavoro PHP Python erano lì. 60 00:02:55,910 --> 00:02:59,480 E così abbiamo dovuto fare quei passi in ordine 61 00:02:59,480 --> 00:03:02,060 per ottenere l'applicazione installato e funzionante. 62 00:03:02,060 --> 00:03:08,440 >> Se avete bisogno di più potenza di elaborazione voi, fondamentalmente dovuto chiamare il vostro Ops ragazzo 63 00:03:08,440 --> 00:03:16,260 o la ragazza per andare e accumulare un nuovo pezzo di hardware, collegarlo, 64 00:03:16,260 --> 00:03:19,850 e si deve ripetere quelle processi ancora e ancora. 65 00:03:19,850 --> 00:03:23,680 Quindi questo processo è stato relativamente costoso. 66 00:03:23,680 --> 00:03:26,080 Era sicuramente molto lento. 67 00:03:26,080 --> 00:03:27,550 >> Era inefficiente. 68 00:03:27,550 --> 00:03:33,890 E in molti casi, la vostra hardware è stato sottoutilizzato. 69 00:03:33,890 --> 00:03:38,830 Così, nel fine degli anni '90 e primi anni 2000, la virtualizzazione dell'hardware si è imbattuto. 70 00:03:38,830 --> 00:03:42,475 E come potete vedere qui in immagine, in fondo quello che hanno fatto 71 00:03:42,475 --> 00:03:46,390 si astrae il pool di risorse hardware libero 72 00:03:46,390 --> 00:03:49,680 e tipo di quelli serviti agli strati superiori, 73 00:03:49,680 --> 00:03:52,360 in questo caso, il sistema operativo ospite. 74 00:03:52,360 --> 00:03:54,940 >> E l'idea di le macchine virtuali sono imbattuto 75 00:03:54,940 --> 00:03:59,110 e che veramente aiutato Nube computing come lo conosciamo oggi. 76 00:03:59,110 --> 00:04:02,730 Così che cosa volesse dire è si possibile eseguire più macchine virtuali, che 77 00:04:02,730 --> 00:04:06,720 significava pile multiple, multiple applicazione su una stessa macchina. 78 00:04:06,720 --> 00:04:10,570 79 00:04:10,570 --> 00:04:16,440 >> Questo sicuramente ha aiutato con il velocità di distribuzione delle applicazioni. 80 00:04:16,440 --> 00:04:17,629 Sicuramente con le spese. 81 00:04:17,629 --> 00:04:22,810 Non c'è bisogno di andare a passare energia, tempo e risorse a cremagliera 82 00:04:22,810 --> 00:04:26,210 più server per arrivare a più di calcolo. 83 00:04:26,210 --> 00:04:30,950 E la velocità di effettivamente portare quelle risorse up è molto più veloce. 84 00:04:30,950 --> 00:04:31,450 Grande. 85 00:04:31,450 --> 00:04:34,320 >> Così abbiamo risolto la fame nel mondo, giusto? 86 00:04:34,320 --> 00:04:36,390 No, non proprio. 87 00:04:36,390 --> 00:04:42,410 Quindi, virtualizzazione quanto è in realtà ha aiutato, affrontare il problema, 88 00:04:42,410 --> 00:04:45,460 effettivamente introdotto un sacco di sfide. 89 00:04:45,460 --> 00:04:49,210 L'hypervisor sicuramente introdotto un sacco di complessità, 90 00:04:49,210 --> 00:04:53,820 movimentazione quelli sottostanti pool di risorse. 91 00:04:53,820 --> 00:04:57,910 >> E 'più pesante nel senso che prima hai avuto un unico sistema operativo che 92 00:04:57,910 --> 00:05:01,830 è come tre, quattro concerti sul disco. 93 00:05:01,830 --> 00:05:04,230 Ora, se si dispone di 10 macchine su un singolo hardware 94 00:05:04,230 --> 00:05:09,060 si deve moltiplicare per il numero di macchine. 95 00:05:09,060 --> 00:05:11,440 E 'sicuramente più costoso in un certo senso è ancora 96 00:05:11,440 --> 00:05:14,430 avere per ottenere licenze per la tecnologia di virtualizzazione 97 00:05:14,430 --> 00:05:18,210 se non è open source. 98 00:05:18,210 --> 00:05:21,120 >> Ma cerchiamo di non prendere tutte le credito dalla virtualizzazione. 99 00:05:21,120 --> 00:05:27,530 Perché quello che è successo è che c'è un sacco di pile e un sacco di software 100 00:05:27,530 --> 00:05:33,900 tecnologie che sono state abilitate da quanto velocemente si sono stati in grado di ottenere 101 00:05:33,900 --> 00:05:38,040 alle risorse con il boom Cloud. 102 00:05:38,040 --> 00:05:46,675 >> Così, oggi una singola applicazione o servizio può essere utilizzando uno dei seguenti tempi di esecuzione 103 00:05:46,675 --> 00:05:47,216 o database. 104 00:05:47,216 --> 00:05:50,250 105 00:05:50,250 --> 00:05:56,070 PHP, Python, MySQL, Redis, roba del genere. 106 00:05:56,070 --> 00:05:59,740 Quindi c'è un sacco di complessità in questo numero di stack per portare realmente su 107 00:05:59,740 --> 00:06:02,210 un unico servizio. 108 00:06:02,210 --> 00:06:07,300 E insieme a quella, hai avuto un sacco di risorse o infrastrutture sottostanti 109 00:06:07,300 --> 00:06:15,210 tipi per testare implementare e fondamentalmente prendere per la produzione di tali applicazioni 110 00:06:15,210 --> 00:06:16,900 che si sta sviluppando. 111 00:06:16,900 --> 00:06:21,950 >> Tanto più che le vostre squadre hanno Cresciuto a lavorare su queste applicazioni, 112 00:06:21,950 --> 00:06:25,310 ci sono un sacco di la complessità e le sfide 113 00:06:25,310 --> 00:06:31,660 che sono stati portati a garantire che il cycle-- fondamentalmente applicazione 114 00:06:31,660 --> 00:06:34,040 ciclo di sviluppo, è in realtà di successo. 115 00:06:34,040 --> 00:06:40,440 Quindi, il fatto che l'applicazione sta lavorando a livello locale sul vostro VM locali 116 00:06:40,440 --> 00:06:47,480 non garantisce che il suo collega sta per aspettarsi gli stessi risultati. 117 00:06:47,480 --> 00:06:51,330 >> E quando il team operativo è partecipano all'adozione di quello che hai 118 00:06:51,330 --> 00:06:54,480 e la distribuzione in produzione scala, anche non c'è alcuna garanzia 119 00:06:54,480 --> 00:06:56,730 che questo è in realtà sta per accadere. 120 00:06:56,730 --> 00:07:00,900 Quindi questo ci lascia con una davvero big-- un sacco di punti interrogativi, 121 00:07:00,900 --> 00:07:07,700 un sacco di sfide in realtà di fronte allo stesso modo nei giorni. 122 00:07:07,700 --> 00:07:12,280 E questo ci ha ricordato di il settore dei trasporti marittimi. 123 00:07:12,280 --> 00:07:14,280 >> Quindi il settore dei trasporti marittimi aveva un sacco di merci, 124 00:07:14,280 --> 00:07:16,190 come si può vedere sul lato sinistro. 125 00:07:16,190 --> 00:07:19,840 E sul lato destro, c'è un sacco di, in fondo, 126 00:07:19,840 --> 00:07:22,160 modi per spedire tali prodotti. 127 00:07:22,160 --> 00:07:26,040 E cosa succede in coppia la gente si sono riuniti e hanno detto, 128 00:07:26,040 --> 00:07:29,600 abbiamo bisogno di standardizzare il modo abbiamo effettivamente spedire tali prodotti. 129 00:07:29,600 --> 00:07:33,280 E boom, si ha la container intermodale. 130 00:07:33,280 --> 00:07:38,970 >> Così hanno convenuto sulla più misure comuni per il contenitore. 131 00:07:38,970 --> 00:07:40,160 Come gestirli. 132 00:07:40,160 --> 00:07:44,560 Cosa esatto metodo che avete bisogno caricarli e scaricarli. 133 00:07:44,560 --> 00:07:49,590 E quindi, che veramente ha aiutato il settore dei trasporti marittimi. 134 00:07:49,590 --> 00:07:55,250 Ora più del 90% messa a fuoco trasportato a livello globale stanno usando quei contenitori. 135 00:07:55,250 --> 00:08:01,010 E che diminuisce sicuramente le spese nonché 136 00:08:01,010 --> 00:08:03,400 i danni dovuti alla spedizione. 137 00:08:03,400 --> 00:08:09,660 >> Quindi prendiamo lo stesso modello e noi applicare il software di sviluppo due app 138 00:08:09,660 --> 00:08:13,080 architettura, nel senso che containerizzazione 139 00:08:13,080 --> 00:08:15,842 ha preso la virtualizzazione di un livello. 140 00:08:15,842 --> 00:08:17,800 Così, invece di farlo a livello hardware, 141 00:08:17,800 --> 00:08:22,060 è diventato più di un esercizio la virtualizzazione a livello di sistema. 142 00:08:22,060 --> 00:08:26,450 >> E lo facciamo fornendo ogni applicazione in una leggera, 143 00:08:26,450 --> 00:08:31,180 isolato, eseguibile, e portatile, soprattutto, 144 00:08:31,180 --> 00:08:35,049 un modo per confezionare effettivamente tutto ciò di cui ha bisogno per funzionare. 145 00:08:35,049 --> 00:08:36,100 Ovunque si può essere eseguito. 146 00:08:36,100 --> 00:08:42,039 Quindi, a prescindere se si sta eseguendo su ambiente dev locali, la vostra produzione 147 00:08:42,039 --> 00:08:44,490 ambiente, la vostra messa in scena o prove. 148 00:08:44,490 --> 00:08:47,700 Non importa quale sottostante infrastruttura è lì, 149 00:08:47,700 --> 00:08:51,410 hai avuto una applicazione che lavora funzionale. 150 00:08:51,410 --> 00:08:54,100 151 00:08:54,100 --> 00:09:01,800 >> Ecco, questo è esattamente ciò che fondamentalmente contenitori fanno a questo problema. 152 00:09:01,800 --> 00:09:04,070 Si rivolgono dal imballaggio in modo tale 153 00:09:04,070 --> 00:09:09,490 che si può garantire che è distribuito con successo, non importa dove vive. 154 00:09:09,490 --> 00:09:12,120 Quindi, se si sta andando come, Bob è ancora OK. 155 00:09:12,120 --> 00:09:17,860 Se sei confuso con quello che sto dicendo, Ho intenzione di essere elaborando su questo. 156 00:09:17,860 --> 00:09:20,900 >> Così come fa Docker stesso inserirsi in questo quadro? 157 00:09:20,900 --> 00:09:26,335 Così Docker è una piattaforma aperta facilmente, sottolineare facilmente, 158 00:09:26,335 --> 00:09:30,500 per costruire la nave, correre, auto leggero portatile 159 00:09:30,500 --> 00:09:33,440 contenitori app sufficienti ovunque. 160 00:09:33,440 --> 00:09:37,660 Quindi, se si prende qualcosa da questo parlare, si prega di prendere quanto segue. 161 00:09:37,660 --> 00:09:40,980 >> Se avete la vostra applicazione in esecuzione a livello locale e si sviluppò la 162 00:09:40,980 --> 00:09:45,930 utilizzando la piattaforma Docker, si aspettano per essere implementato con successo. 163 00:09:45,930 --> 00:09:49,380 Non importa quale sia il infrastruttura sottostante. 164 00:09:49,380 --> 00:09:53,830 Quindi, se avete un Docker contenitore e sta funzionando, quindi 165 00:09:53,830 --> 00:09:58,130 a patto che ci sia un Docker motore dall'altro side-- 166 00:09:58,130 --> 00:10:02,190 se l'infrastruttura operazione utilizza qualsiasi Cloud, se 167 00:10:02,190 --> 00:10:06,680 è AWS, o Google, o Microsoft, o uno qualsiasi dei cloud pubblici, 168 00:10:06,680 --> 00:10:10,010 o il proprio Cloud, o il vostro stack open Nube, o il vostro ambiente locale. 169 00:10:10,010 --> 00:10:11,970 >> Se si dispone di un motore in esecuzione, che i mezzi 170 00:10:11,970 --> 00:10:14,537 esso sarà implementato con successo lì. 171 00:10:14,537 --> 00:10:16,620 Sta andando a essere in esecuzione esattamente lo stesso comportamento 172 00:10:16,620 --> 00:10:21,480 Progettato come che sia. 173 00:10:21,480 --> 00:10:26,080 Quindi, se guardiamo at-- Vado passare attraverso quello che in realtà 174 00:10:26,080 --> 00:10:29,160 sono i componenti principali del Docker. 175 00:10:29,160 --> 00:10:31,060 >> Così Engine è al centro della finestra mobile. 176 00:10:31,060 --> 00:10:32,770 E 'il cervello del. 177 00:10:32,770 --> 00:10:39,360 E 'orchestra costruzione, il trasporto, e distribuzione e la gestione 178 00:10:39,360 --> 00:10:41,570 contenitori stessi. 179 00:10:41,570 --> 00:10:45,160 Tirerò in quello che fa Engine più in dettaglio in un secondo. 180 00:10:45,160 --> 00:10:47,740 181 00:10:47,740 --> 00:10:51,720 Fondamentalmente, perché dottore è stato costruito intorno alle architetture client server, 182 00:10:51,720 --> 00:10:56,630 Quindi, al fine di interagire con il Engine bisogno di una sorta di un cliente. 183 00:10:56,630 --> 00:11:01,200 >> Le immagini sono i modelli in che i contenitori sono costruiti da. 184 00:11:01,200 --> 00:11:06,800 Così le immagini sono fondamentalmente file appena statici. 185 00:11:06,800 --> 00:11:08,740 Modelli e contenitori è in realtà ciò che è 186 00:11:08,740 --> 00:11:12,280 è in esecuzione in fase di runtime che sta scontando l'applicazione 187 00:11:12,280 --> 00:11:15,150 o fare qualcosa con i dati. 188 00:11:15,150 --> 00:11:19,020 >> Registro è affrontata come un problema di come effettivamente distribuire le immagini. 189 00:11:19,020 --> 00:11:23,230 Quindi, se avete bisogno di condividere un'immagine che hai lavorato ad un tuo collega 190 00:11:23,230 --> 00:11:27,220 o al team ops, è usarlo utilizzando Registro di sistema. 191 00:11:27,220 --> 00:11:31,720 È possibile scaricare un open source versione di esso che Docker lavorato su 192 00:11:31,720 --> 00:11:33,150 e open source. 193 00:11:33,150 --> 00:11:38,040 >> Oppure è possibile utilizzare Docker aiuto, che è la versione Copertura 194 00:11:38,040 --> 00:11:40,130 per spingere e tirare le immagini là fuori. 195 00:11:40,130 --> 00:11:41,160 Questa è una cosa enorme. 196 00:11:41,160 --> 00:11:44,520 Perché c'è un enorme ecosistema intorno Docker ed è 197 00:11:44,520 --> 00:11:48,960 davvero utilizzando pesantemente l'hub. 198 00:11:48,960 --> 00:11:59,780 >> Quindi, per riassumere qui, questo è come il minimalista cliente workflow Docker. 199 00:11:59,780 --> 00:12:04,040 L'interazione con l'ospite, in questo caso sono i demoni finestra mobile. 200 00:12:04,040 --> 00:12:06,490 E 'la stessa cosa di motore. 201 00:12:06,490 --> 00:12:09,690 Tu fai comandi come Docker costruire, tirare, correre. 202 00:12:09,690 --> 00:12:14,280 E il motore si va e fa queste cose. 203 00:12:14,280 --> 00:12:18,010 >> Quindi, o interagisce con Registro di sistema per tirare quelle immagini 204 00:12:18,010 --> 00:12:19,670 e gli strati delle immagini. 205 00:12:19,670 --> 00:12:25,030 Sia se si desidera distribuire, eseguire contenitori, li uccidono, buttarli giù, 206 00:12:25,030 --> 00:12:25,730 quant'altro. 207 00:12:25,730 --> 00:12:32,190 Quindi questo riassume il flusso di lavoro di tutti questi componenti. 208 00:12:32,190 --> 00:12:34,710 >> Quindi, se si prende ogni componente da solo. 209 00:12:34,710 --> 00:12:37,690 Così Engine, è solo un demone. 210 00:12:37,690 --> 00:12:40,800 Sarà tipo di giocare a supporto su Linux perché fa 211 00:12:40,800 --> 00:12:44,380 richiedono alcune funzioni del kernel di Linux. 212 00:12:44,380 --> 00:12:48,820 Ma Windows sta lavorando a fare la stessa cosa. 213 00:12:48,820 --> 00:12:53,720 Si suppone di essere sostenuta da Windows Server 2016. 214 00:12:53,720 --> 00:13:01,500 >> Così, ancora una volta, le responsabilità con il motore, o devono, costruire immagini. 215 00:13:01,500 --> 00:13:05,340 Estrarre immagini dal Docker Hub o il proprio Registro di sistema. 216 00:13:05,340 --> 00:13:07,840 Se hai finito con le immagini o si crea un nuovo immagini, 217 00:13:07,840 --> 00:13:14,770 si può spingere chi è rimasto a Registro di sistema per distribuirli ad altre squadre. 218 00:13:14,770 --> 00:13:18,300 >> E cercando di contenere localmente e gestire il ciclo di vita contenitori 219 00:13:18,300 --> 00:13:19,260 localmente. 220 00:13:19,260 --> 00:13:22,010 È costruito attorno HTTP API REST. 221 00:13:22,010 --> 00:13:24,480 Quindi tecnicamente è possibile scrivere il proprio cliente 222 00:13:24,480 --> 00:13:31,650 fintanto che utilizza HTTP, che è un meccanismo standard per parlare a motore 223 00:13:31,650 --> 00:13:33,110 e un sacco di altri servizi. 224 00:13:33,110 --> 00:13:35,780 E si può vedere da qui che, indipendentemente 225 00:13:35,780 --> 00:13:39,010 di ciò dell'infrastruttura è, fino a quando si can-- tutto 226 00:13:39,010 --> 00:13:42,170 avete bisogno è un operativo sistema Linux in particolare. 227 00:13:42,170 --> 00:13:45,460 >> Ed è possibile installare Docker Engine per di più e farlo correre 228 00:13:45,460 --> 00:13:48,970 ed orchestra, fondamentalmente, tutte queste app uno, due, 229 00:13:48,970 --> 00:13:51,530 e tre sono contenitori attuali. 230 00:13:51,530 --> 00:13:53,990 Ecco, questo è Engine. 231 00:13:53,990 --> 00:13:58,040 Come ho detto prima, perché è necessario interagire con motore, 232 00:13:58,040 --> 00:13:59,200 c'è il cliente. 233 00:13:59,200 --> 00:14:03,180 >> Ma in realtà quando si installa Docker, le navi con esso. 234 00:14:03,180 --> 00:14:06,110 Così viene installato, quindi è un unico binario. 235 00:14:06,110 --> 00:14:11,830 E si può fare chiamate locali al vostro Docker motore. 236 00:14:11,830 --> 00:14:14,040 O chiamate remote al Motori remoti. 237 00:14:14,040 --> 00:14:16,600 238 00:14:16,600 --> 00:14:19,590 Si fa uso di HTTP, come Ho già detto in precedenza. 239 00:14:19,590 --> 00:14:24,200 C'è un client GUI chiamata Kitematic da Docker. 240 00:14:24,200 --> 00:14:26,390 E ci sono sicuramente un sacco di altre persone 241 00:14:26,390 --> 00:14:29,740 che stanno costruendo un sacco di GUI che in fondo implementano 242 00:14:29,740 --> 00:14:32,980 alcuni HTTP chiama per parlare con motore. 243 00:14:32,980 --> 00:14:35,920 244 00:14:35,920 --> 00:14:39,280 >> Solo alcuni comandi di esempio. 245 00:14:39,280 --> 00:14:44,620 Se lo fai versione Docker, sarebbe vi mostrerà la versione client, nonché 246 00:14:44,620 --> 00:14:47,030 la versione server. 247 00:14:47,030 --> 00:14:49,500 Se lo fai informazioni Docker lo farà dirvi tutte le informazioni 248 00:14:49,500 --> 00:14:54,300 a quanti contenitori sono in esecuzione o creata, quante immagini avete, 249 00:14:54,300 --> 00:14:56,530 e così via e così via. 250 00:14:56,530 --> 00:15:01,850 >> Qui ho, nel prossimo a ultima casella, ho dottore corsa. 251 00:15:01,850 --> 00:15:04,970 Ecco come realtà sono creando contenitore. 252 00:15:04,970 --> 00:15:08,960 E io sto dando a echo Ciao Mondo e dormire per un secondo e quant'altro. 253 00:15:08,960 --> 00:15:12,830 E si può vedere il risultato. Quindi è in corso. 254 00:15:12,830 --> 00:15:16,930 E simile a ps Linux, si può vedere tutti i processi e, in questo caso, 255 00:15:16,930 --> 00:15:18,540 tutti i contenitori di funzionamento. 256 00:15:18,540 --> 00:15:23,430 Questo uno indietro riferendosi a il contenitore Ho appena creato. 257 00:15:23,430 --> 00:15:27,560 >> Così, questo è molto importante perché, come, può essere un po 'di confusione. 258 00:15:27,560 --> 00:15:33,050 Così le immagini sono di sola lettura del raccolta di file, giusto? 259 00:15:33,050 --> 00:15:37,000 Sono ciò che il nostro contenitore si basa su. 260 00:15:37,000 --> 00:15:40,340 Ma sono di sola lettura sola. 261 00:15:40,340 --> 00:15:44,330 Quindi si inizia con un'immagine di base. 262 00:15:44,330 --> 00:15:50,180 Essa tende a imitare OS-like, così Ubuntu, CentOS, immagine di base quant'altro. 263 00:15:50,180 --> 00:15:53,990 E poi iniziare a costruire in cima che, certi strati, che costituiranno 264 00:15:53,990 --> 00:16:00,010 l'immagine finale, il risultato finale qui. 265 00:16:00,010 --> 00:16:03,220 >> E ciascuno di questi strati dovrebbe avere un'immagine genitore 266 00:16:03,220 --> 00:16:06,690 che fa riferimento quando si in realtà vuole creare. 267 00:16:06,690 --> 00:16:09,922 Essi sono immutabili, nel senso che di sola lettura perché sono, 268 00:16:09,922 --> 00:16:11,630 non si può in realtà apportare modifiche a loro. 269 00:16:11,630 --> 00:16:17,540 È possibile utilizzarli per creare un container da un'immagine che 270 00:16:17,540 --> 00:16:23,530 chiamerà tutti i successivi immagini richieste sotto. 271 00:16:23,530 --> 00:16:26,400 >> È possibile apportare modifiche a un livello diverso, 272 00:16:26,400 --> 00:16:28,810 si tratta di uno strato di riscrittura io sarò parlare in un secondo. 273 00:16:28,810 --> 00:16:31,350 Ma ciascuno di questi strati non sono mai cambiati. 274 00:16:31,350 --> 00:16:34,300 275 00:16:34,300 --> 00:16:38,670 Fondamentalmente immagini utilizzano qualcosa chiamato Unione File System, UFS. 276 00:16:38,670 --> 00:16:42,280 E ci sono archiviazione diverso backend che utilizzano questa tecnologia. 277 00:16:42,280 --> 00:16:49,430 E ciò significa che riunisce i file system distinti 278 00:16:49,430 --> 00:16:51,190 per farli apparire come uno. 279 00:16:51,190 --> 00:16:54,460 >> Così si può effettivamente, da punto di vista applicativo, 280 00:16:54,460 --> 00:16:59,570 si dispone di una cima di una vista che mostra tutto il file system diverso bisogno 281 00:16:59,570 --> 00:17:01,120 per tale applicazione per l'esecuzione. 282 00:17:01,120 --> 00:17:04,400 Ma sono in realtà, su questo, sono in realtà in luoghi separati 283 00:17:04,400 --> 00:17:06,410 ed essendo utilizzato da altri contenitori pure. 284 00:17:06,410 --> 00:17:09,569 285 00:17:09,569 --> 00:17:14,410 >> Quindi, come si può vedere qui che se cominciamo immagine demone con 286 00:17:14,410 --> 00:17:18,619 come un'immagine di base, e quindi entriamo e aggiungere [? emacs?] 287 00:17:18,619 --> 00:17:20,720 e quindi questo è un altro strato. 288 00:17:20,720 --> 00:17:21,916 E poi aggiungere Apache. 289 00:17:21,916 --> 00:17:22,790 Questo è un altro strato. 290 00:17:22,790 --> 00:17:25,470 E poi passiamo la container da questo. 291 00:17:25,470 --> 00:17:29,760 Ciascuna di tali immagini, ciascuno di questi strati, 292 00:17:29,760 --> 00:17:35,530 è distinto e può essere riutilizzati da altri contenitori. 293 00:17:35,530 --> 00:17:40,070 >> Se guardate contenitori stessi, sono un po 'come VM-like, 294 00:17:40,070 --> 00:17:41,930 ma non trattati allo stesso tempo. 295 00:17:41,930 --> 00:17:49,180 Quindi, non hanno, tecnicamente, il sistema operativo completo sotto di loro. 296 00:17:49,180 --> 00:17:52,630 Usano il singolo kernel del sistema operativo host. 297 00:17:52,630 --> 00:17:54,440 E costruire in cima a quello. 298 00:17:54,440 --> 00:17:56,250 Essi imitano in modo in cui guardare. 299 00:17:56,250 --> 00:18:00,710 Imitano il loro root file sistema del sistema operativo. 300 00:18:00,710 --> 00:18:04,930 Ma in realtà non si replicano. 301 00:18:04,930 --> 00:18:12,080 >> Così, invece di avere strati immutabili, l'ultimo strato, che è il contenitore 302 00:18:12,080 --> 00:18:14,690 sé, è un livello di lettura-scrittura. 303 00:18:14,690 --> 00:18:17,350 Che gestisce anche i processi della vostra applicazione. 304 00:18:17,350 --> 00:18:23,530 E dipende strati sottostanti. 305 00:18:23,530 --> 00:18:26,730 Ogni contenitore è creato da un'immagine. 306 00:18:26,730 --> 00:18:32,450 E quella può essere una singola livello o immagine multistrato. 307 00:18:32,450 --> 00:18:37,200 >> E voglio sottolineare qui che Docker utilizza pesantemente, 308 00:18:37,200 --> 00:18:40,370 o si basa su Copy-On-Write meccanismo. 309 00:18:40,370 --> 00:18:44,350 In modo che, in realtà, se non si è apportare modifiche al contenitore, 310 00:18:44,350 --> 00:18:45,930 non sta andando a prendere spazio extra. 311 00:18:45,930 --> 00:18:49,600 Ecco, questo è fondamentalmente come voi Riassumendo un Copy-On-Write. 312 00:18:49,600 --> 00:18:53,820 E 'intenzione di accelerare decisamente up il tempo di avvio per il contenitore. 313 00:18:53,820 --> 00:18:56,300 Perché se non stai facendo modifiche al contenitore, 314 00:18:56,300 --> 00:18:57,800 sta utilizzando ciò che c'è già. 315 00:18:57,800 --> 00:19:01,130 316 00:19:01,130 --> 00:19:02,955 >> Così, come in realtà funziona. 317 00:19:02,955 --> 00:19:06,920 318 00:19:06,920 --> 00:19:14,240 Parte di esso è come, in questo momento, utilizza almeno due kernel chiave 319 00:19:14,240 --> 00:19:14,820 Caratteristiche. 320 00:19:14,820 --> 00:19:17,660 E questo è fondamentalmente ciò che creato quel livello di isolamento 321 00:19:17,660 --> 00:19:19,550 per i contenitori stessi. 322 00:19:19,550 --> 00:19:22,290 Queste caratteristiche sono spazi dei nomi e cgroups. 323 00:19:22,290 --> 00:19:29,870 Così namespace sono un modo per creare risorse isolati, 324 00:19:29,870 --> 00:19:36,290 in modo che all'interno del contenitore stesso, solo tu puoi vedere alcune risorse. 325 00:19:36,290 --> 00:19:40,030 Come ad esempio l'interfaccia di rete oppure i determinati utenti o roba del genere. 326 00:19:40,030 --> 00:19:44,160 >> E questi sono solo visibili e solo accessibile all'interno del contenitore. 327 00:19:44,160 --> 00:19:48,290 Cgroup sugli altri limiti laterali come si utilizza tali risorse. 328 00:19:48,290 --> 00:19:50,950 CPU, memoria e disco. 329 00:19:50,950 --> 00:19:53,900 Quando si può andare, ho significa questi sono in realtà 330 00:19:53,900 --> 00:19:57,410 caratteristiche che sono state sviluppate per-- sono parte del kernel di Linux. 331 00:19:57,410 --> 00:20:01,800 Quindi non sono stati reinventati da o ricreati da Docker. 332 00:20:01,800 --> 00:20:03,770 Docker li usa. 333 00:20:03,770 --> 00:20:05,560 >> Che dottore davvero fatto qui è in realtà 334 00:20:05,560 --> 00:20:08,680 creazione orchestrato namespace per ogni contenitore 335 00:20:08,680 --> 00:20:13,320 e creando le cgroups modo che sia ridicolmente facile creare contenitori 336 00:20:13,320 --> 00:20:14,870 con quelle caratteristiche. 337 00:20:14,870 --> 00:20:22,910 Naturalmente, come ho descritto in precedenza, Union File Systems e Copy-On-Write veramente 338 00:20:22,910 --> 00:20:26,810 aiutare la velocità e il disco Riciclaggio di contenitori. 339 00:20:26,810 --> 00:20:28,917 >> E una volta che si ottiene il mani intorno Docker, 340 00:20:28,917 --> 00:20:32,000 si sta andando a vedere quanto velocemente è quello di in realtà spin up contenitori e lacrimogeni 341 00:20:32,000 --> 00:20:32,500 giù. 342 00:20:32,500 --> 00:20:36,060 343 00:20:36,060 --> 00:20:40,230 Quindi, se si potrebbe chiedere, come può si effettivamente costruire le immagini? 344 00:20:40,230 --> 00:20:45,940 Costruiamo immagini da un processo di creazione contenitori e apportare modifiche, alterare 345 00:20:45,940 --> 00:20:50,220 loro, e li commettendo a diventare un'immagine. 346 00:20:50,220 --> 00:20:54,330 >> Quindi è un pollo e uovo di riferimento qui, 347 00:20:54,330 --> 00:20:57,350 perché tutti i contenitori vengono da immagini e immagini provengono 348 00:20:57,350 --> 00:21:00,270 dai contenitori commessi, per la maggior parte. 349 00:21:00,270 --> 00:21:03,830 Ci sono tre opzioni per creare immagini. 350 00:21:03,830 --> 00:21:06,580 Io vado a descrivere il primo e l'ultimo. 351 00:21:06,580 --> 00:21:10,060 È possibile manualmente andare a eseguire il contenitore 352 00:21:10,060 --> 00:21:14,280 e fare le modifiche, come si farebbe su qualsiasi macchina virtuale 353 00:21:14,280 --> 00:21:17,060 o qualsiasi altro sistema operativo, ad esempio come l'installazione di nuovi binari, 354 00:21:17,060 --> 00:21:19,370 l'aggiunta di file system, e quant'altro. 355 00:21:19,370 --> 00:21:22,620 >> E poi si esce, come si può vedere lassù. 356 00:21:22,620 --> 00:21:24,330 Sto uscendo il mio contenitore. 357 00:21:24,330 --> 00:21:26,050 E poi sto facendo Docker commesso. 358 00:21:26,050 --> 00:21:28,390 E sto commettendo quello. 359 00:21:28,390 --> 00:21:31,560 Si può vedere che il numero qui è solo un UUID, o il primo 12 360 00:21:31,560 --> 00:21:32,810 bit del UUID. 361 00:21:32,810 --> 00:21:34,320 O byte del UUID. 362 00:21:34,320 --> 00:21:35,770 E poi io chiamo la mia immagine. 363 00:21:35,770 --> 00:21:39,510 Così ora si prende cura di Docker registrando tutto quello che ho fatto 364 00:21:39,510 --> 00:21:42,830 e creando il nuovo immagine basata su quella. 365 00:21:42,830 --> 00:21:47,080 366 00:21:47,080 --> 00:21:52,560 >> Non ho intenzione di parlare di archivio, ma c'è un modo è possibile ottenere un singolo, 367 00:21:52,560 --> 00:21:58,200 creare un singolo, o di fare un singolo immagine livello utilizzando tarball. 368 00:21:58,200 --> 00:22:02,650 Quello che ho intenzione di parlare di questo e ciò che è in gran parte utilizzato oggi, 369 00:22:02,650 --> 00:22:03,270 è Dockerfile. 370 00:22:03,270 --> 00:22:07,260 Che è tecnicamente la prima passaggio automatico da Docker sé. 371 00:22:07,260 --> 00:22:11,920 Così Dockerfiles sono cose che siete andando a vedere in un sacco di pronti contro termine GitHub 372 00:22:11,920 --> 00:22:13,150 oggi. 373 00:22:13,150 --> 00:22:16,420 E 'fondamentalmente solo una file di testo che descrive 374 00:22:16,420 --> 00:22:19,780 esattamente come costruire un'immagine. 375 00:22:19,780 --> 00:22:25,540 >> E per ogni linea, in realtà crea contenitore, esegue quella linea, 376 00:22:25,540 --> 00:22:30,480 commette quel contenitore in un nuova immagine, e, in fondo, 377 00:22:30,480 --> 00:22:36,160 utilizzarlo per tutte le operazioni successive fino ad arrivare all'ultima immagine. 378 00:22:36,160 --> 00:22:39,260 Che è fondamentalmente la finiscono obiettivo qui, alla fine. 379 00:22:39,260 --> 00:22:42,420 E dopo che exec-- dopo scrivere il Dockerfile, che 380 00:22:42,420 --> 00:22:46,750 è puramente testo, si fa un Docker costruire e il nome dell'immagine. 381 00:22:46,750 --> 00:22:50,000 >> E si punta a che questo è dove il Dockerfile è. 382 00:22:50,000 --> 00:22:56,570 E si può aspettare di vedere la mia immagine come immagine che si ha a livello locale. 383 00:22:56,570 --> 00:22:59,100 Quindi, questo è solo una visuale esempio di ciò che accade. 384 00:22:59,100 --> 00:23:00,820 Si inizia con un'immagine di base. 385 00:23:00,820 --> 00:23:05,150 Si esegue che in un contenitore che non altera l'immagine di base stessa. 386 00:23:05,150 --> 00:23:08,310 Ma invece crea una riscrivere strato su di esso 387 00:23:08,310 --> 00:23:10,340 dove si fanno le modifiche, in cui si impegnano 388 00:23:10,340 --> 00:23:15,050 e si ripete il processo fino a quando si arriva alla vostra immagine finale. 389 00:23:15,050 --> 00:23:20,980 >> E così facendo, ogni altra generazione processo può utilizzare gli stessi strati 390 00:23:20,980 --> 00:23:23,870 e lo stesso-- fondamentalmente Docker memorizza tali livelli. 391 00:23:23,870 --> 00:23:30,040 In modo che se sto facendo la stessa identica processo, ma invece di installare PHP, 392 00:23:30,040 --> 00:23:31,540 Sto installare Python. 393 00:23:31,540 --> 00:23:34,210 Sta andando a utilizzare Apache e Ubuntu. 394 00:23:34,210 --> 00:23:39,570 Quindi, in questo modo si sta utilizzando il disco. 395 00:23:39,570 --> 00:23:42,330 Si utilizza la cache e immagini lì. 396 00:23:42,330 --> 00:23:45,320 397 00:23:45,320 --> 00:23:48,840 >> Il pezzo finale è del Registro di sistema, che è come si distribuiscono le vostre immagini. 398 00:23:48,840 --> 00:23:52,710 E, come ho detto prima, c'è una versione Nube di esso, 399 00:23:52,710 --> 00:23:54,290 che è Docker Hub. 400 00:23:54,290 --> 00:23:57,550 Si può andare a esplorare molti, fondamentalmente 401 00:23:57,550 --> 00:24:04,900 si tratta di un prodotto SAS pubblico è ancora possibile avere immagini private, 402 00:24:04,900 --> 00:24:06,590 ma c'è un sacco di immagini pubbliche. 403 00:24:06,590 --> 00:24:10,580 In realtà è illimitata, è possibile spingere immagini pubbliche illimitate lì. 404 00:24:10,580 --> 00:24:13,730 E questo è come si può collaborare con il tuo team. 405 00:24:13,730 --> 00:24:17,159 >> Si può solo puntare li voi REPO e si può scaricare o l'immagine 406 00:24:17,159 --> 00:24:18,200 e si può scaricare il programma. 407 00:24:18,200 --> 00:24:21,140 408 00:24:21,140 --> 00:24:24,990 Quindi basta con le chiacchiere. 409 00:24:24,990 --> 00:24:29,110 Chi vuole vedere alcuni demo reale veloce? 410 00:24:29,110 --> 00:24:31,330 Tutto ok. 411 00:24:31,330 --> 00:24:34,050 Così qui ho. 412 00:24:34,050 --> 00:24:37,480 CA voi ragazzi vedere il mio schermo? 413 00:24:37,480 --> 00:24:38,390 Tutto ok. 414 00:24:38,390 --> 00:24:45,810 >> Così ho Docker correre qui, quindi può controllare it's-- Questa è la versione 415 00:24:45,810 --> 00:24:47,510 di Docker che è in esecuzione. 416 00:24:47,510 --> 00:24:49,320 Può fare Docker informazioni. 417 00:24:49,320 --> 00:24:55,730 Verificate tutte le informazioni su quanti immagini che hanno, e così via e così via. 418 00:24:55,730 --> 00:24:58,890 Docker PS, non c'è niente di corsa. 419 00:24:58,890 --> 00:25:00,570 Concatenato quelli. 420 00:25:00,570 --> 00:25:06,370 >> Quindi la prima cosa che voglio fare è spettacolo come si può facilmente eseguire un contenitore. 421 00:25:06,370 --> 00:25:09,350 Così la bellezza di Corsa medico, se effettivamente 422 00:25:09,350 --> 00:25:14,700 non trova un'immagine a livello locale, Per impostazione predefinita, si parla al dottor Hub 423 00:25:14,700 --> 00:25:17,240 e cerca di trovare lì e download per voi. 424 00:25:17,240 --> 00:25:22,820 Quindi include un Docker comando di tirare, naturalmente. 425 00:25:22,820 --> 00:25:26,130 >> Quindi, se faccio un Docker corsa, ciao-mondo. 426 00:25:26,130 --> 00:25:28,890 427 00:25:28,890 --> 00:25:31,200 Quindi, prima sta andando per cercare di individuarlo. 428 00:25:31,200 --> 00:25:36,140 In caso contrario, come si può vedere qui, che non riusciva a trovare a livello locale. 429 00:25:36,140 --> 00:25:41,830 In questo momento solo tirato due strati che ha fatto l'immagine e ho eseguito. 430 00:25:41,830 --> 00:25:45,440 Il ciao-mondo è fondamentalmente uscite, quello che hai fatto. 431 00:25:45,440 --> 00:25:47,680 Quindi questo è il più facile, uno degli esempi più semplici. 432 00:25:47,680 --> 00:25:53,840 Quindi in realtà Ho appena eseguito e terminato il contenitore reale veloce. 433 00:25:53,840 --> 00:25:59,500 >> Se voglio run-- e dal modo in cui, se Voglio volta che, proprio in modo da sapere, 434 00:25:59,500 --> 00:26:03,572 questo è quanto tempo ci vuole per in realtà spin up e contenerla. 435 00:26:03,572 --> 00:26:05,030 Ci stiamo misurando in millisecondi. 436 00:26:05,030 --> 00:26:10,600 Così si può vedere quanto questo può effettivamente aiutare non solo in fase di test, 437 00:26:10,600 --> 00:26:13,200 ma anche anche la distribuzione. 438 00:26:13,200 --> 00:26:17,221 Ecco, questo è una breve nota su questo. 439 00:26:17,221 --> 00:26:18,970 La prossima cosa sto intenzione di fare è in realtà 440 00:26:18,970 --> 00:26:21,930 eseguire un'immagine che ho già preparato. 441 00:26:21,930 --> 00:26:24,460 Così finestra mobile corsa. 442 00:26:24,460 --> 00:26:27,240 -d è solo una bandiera per raccontare il suo funzionamento in background. 443 00:26:27,240 --> 00:26:30,290 E -p assegna determinate porte. 444 00:26:30,290 --> 00:26:32,670 Perché per impostazione predefinita, il contenitori sono isolati, 445 00:26:32,670 --> 00:26:36,080 quindi bisogna specificare esattamente come si possa accedervi. 446 00:26:36,080 --> 00:26:41,150 E in questo caso, sto dicendo Docker per mappare una porta casuale sull'host 447 00:26:41,150 --> 00:26:44,560 ad una porta specificata all'interno il contenitore stesso. 448 00:26:44,560 --> 00:26:47,130 449 00:26:47,130 --> 00:26:56,460 E questo è fondamentalmente dove il image-- Speriamo che questo sia quello giusto. 450 00:26:56,460 --> 00:27:01,780 >> Così fa download paralleli ciascuno di questi strati, come potete vedere qui. 451 00:27:01,780 --> 00:27:06,949 Questi sono degli strati fare l'immagine finale che ho costruito. 452 00:27:06,949 --> 00:27:08,115 Sta andando a prendere un secondo. 453 00:27:08,115 --> 00:27:11,290 454 00:27:11,290 --> 00:27:12,370 E voilà. 455 00:27:12,370 --> 00:27:16,590 >> Così ora se faccio un ps finestra mobile, dovrei vedere qualcosa che è in esecuzione. 456 00:27:16,590 --> 00:27:22,250 Dovrei vedere l'ID, l'immagine che questo era basato fuori, 457 00:27:22,250 --> 00:27:23,880 e il comando che è stato eseguito. 458 00:27:23,880 --> 00:27:28,720 E come per accedervi è fondamentalmente si va a quella porta. 459 00:27:28,720 --> 00:27:33,240 Quindi ho intenzione di andare a-- questo è che io sono in esecuzione su AWS. 460 00:27:33,240 --> 00:27:37,150 Ho intenzione di andare a 32769. 461 00:27:37,150 --> 00:27:37,650 Oops. 462 00:27:37,650 --> 00:27:40,495 463 00:27:40,495 --> 00:27:41,120 E qui andiamo. 464 00:27:41,120 --> 00:27:44,550 >> Quindi questo è in realtà solo un servizio web che mostra 465 00:27:44,550 --> 00:27:46,240 quale contenitore è servito da. 466 00:27:46,240 --> 00:27:50,450 Così si può vedere che è dal contenitore A9F. 467 00:27:50,450 --> 00:27:52,850 Ed ecco questa è la il nome del contenitore. 468 00:27:52,850 --> 00:27:56,550 Così voi potete vedere quanto velocemente era in realtà non solo tirare, ma anche 469 00:27:56,550 --> 00:28:00,440 distribuzione di questo contenitore. 470 00:28:00,440 --> 00:28:05,070 >> Ora il passo successivo è quello guardare in Dockerfiles 471 00:28:05,070 --> 00:28:09,430 e come possiamo realmente costruire nuove immagini. 472 00:28:09,430 --> 00:28:15,250 Vado solo per andare a prendere clone, un CAMPIONE Dockerfile basato sul precedente 473 00:28:15,250 --> 00:28:17,755 diagramma, quello di Apache e PHP. 474 00:28:17,755 --> 00:28:26,740 475 00:28:26,740 --> 00:28:28,140 Speriamo Ricordo il mio repo. 476 00:28:28,140 --> 00:28:36,410 477 00:28:36,410 --> 00:28:38,750 >> Così ho il mio repository in questo momento. 478 00:28:38,750 --> 00:28:43,080 E si sta andando a vedere questo molto in realtà. 479 00:28:43,080 --> 00:28:45,110 Non ho installato albero. 480 00:28:45,110 --> 00:28:48,700 >> Quindi, in pratica si sta andando a vedere come la documentazione del codice sorgente in giro 481 00:28:48,700 --> 00:28:51,240 , e poi un Dockerfile sulla come pacchetto realtà. 482 00:28:51,240 --> 00:28:57,970 Quindi è solo un campione di PHP che riecheggia ciao CS50. 483 00:28:57,970 --> 00:29:01,550 >> Quindi, se voglio farlo funzionare, Farò finestra mobile build. 484 00:29:01,550 --> 00:29:03,370 Devo costruire prima. 485 00:29:03,370 --> 00:29:12,420 Ho intenzione di chiamarlo demo_cs50. 486 00:29:12,420 --> 00:29:16,470 E avete bisogno di un tag di troppo. 487 00:29:16,470 --> 00:29:19,802 Così chiamiamolo v1 dot. 488 00:29:19,802 --> 00:29:21,760 Quindi, come ho descritto in precedenza, quello che sto facendo oggi 489 00:29:21,760 --> 00:29:26,840 è Sto dicendo Docker andare uso che-- realtà, mi dispiace, il mio male. 490 00:29:26,840 --> 00:29:29,450 491 00:29:29,450 --> 00:29:32,500 Non abbiamo preso uno sguardo al Dockerfile sé. 492 00:29:32,500 --> 00:29:39,020 Così le uniche cose di qui sono index.php così come il file readme 493 00:29:39,020 --> 00:29:39,810 e un Dockerfile. 494 00:29:39,810 --> 00:29:44,600 >> Quindi, se si dà un'occhiata a il Dockerfile, quindi è 495 00:29:44,600 --> 00:29:47,150 molto simile a quello Ho descritto in precedenza. 496 00:29:47,150 --> 00:29:51,220 E 'solo un mucchio di passi che esegue Docker 497 00:29:51,220 --> 00:29:56,330 creando e abbattere contenitori e [? contando?] li in un'immagine. 498 00:29:56,330 --> 00:29:59,570 >> E in fondo si può see-- [incomprensibile] it qui-- 499 00:29:59,570 --> 00:30:04,340 ma questo è da repo locale. 500 00:30:04,340 --> 00:30:06,410 Sta per andare a prendere index.php. 501 00:30:06,410 --> 00:30:10,970 Ecco, questo è l'unico codice sorgente che sono in realtà parte della vostra applicazione. 502 00:30:10,970 --> 00:30:16,800 Tutto questo sono fondamentalmente sistema idraulico operativo, 503 00:30:16,800 --> 00:30:21,460 ottenere i pacchetti di destra e Apache e PHP, e quant'altro. 504 00:30:21,460 --> 00:30:26,950 Ma questo è in realtà prendendo index.php e impegnandosi nel contenitore, 505 00:30:26,950 --> 00:30:28,210 nell'immagine. 506 00:30:28,210 --> 00:30:33,120 >> Quindi, se si va avanti e si esegue il comando facendo quanto segue, 507 00:30:33,120 --> 00:30:36,155 è going-- realtà, questa operazione potrebbe richiedere un po '. 508 00:30:36,155 --> 00:30:40,870 509 00:30:40,870 --> 00:30:42,455 Speriamo che non ci vuole troppo tempo. 510 00:30:42,455 --> 00:30:45,129 511 00:30:45,129 --> 00:30:46,170 Così si può vedere i passaggi. 512 00:30:46,170 --> 00:30:49,320 E vi incoraggio ad andare torna a casa oggi e provarlo. 513 00:30:49,320 --> 00:30:51,280 E Mano descriverà esattamente come lo fai. 514 00:30:51,280 --> 00:30:57,810 Ma è davvero bello vedere esattamente cosa sta succedendo dietro le quinte. 515 00:30:57,810 --> 00:31:02,420 Ma è ridicolmente facile da costruire immagini e distribuire utilizzando Docker. 516 00:31:02,420 --> 00:31:12,170 517 00:31:12,170 --> 00:31:14,050 >> Sta prendendo un po ' più a lungo di quanto mi aspettassi. 518 00:31:14,050 --> 00:31:29,085 519 00:31:29,085 --> 00:31:32,690 >> Vediamo cosa succede quando you-- raffreddare. 520 00:31:32,690 --> 00:31:36,260 Quindi, come si può vedere, ciascuno di questi passi rappresentano linee nella Dockerfile. 521 00:31:36,260 --> 00:31:42,570 E lo dimostra qui che con successo costruito questa immagine. 522 00:31:42,570 --> 00:31:46,480 >> Quindi, se faccio immagini docker, ho intenzione di vedere tutte le immagini che ho localmente. 523 00:31:46,480 --> 00:31:52,160 E uno di loro si chiama il mio nome utente, e il nome dell'immagine, 524 00:31:52,160 --> 00:31:56,050 e il tag representing-- soprattutto si tratta di un tag di versione. 525 00:31:56,050 --> 00:31:58,040 >> Così ora se voglio correre , mi fa correre finestra mobile. 526 00:31:58,040 --> 00:32:06,040 527 00:32:06,040 --> 00:32:14,960 E voglio solo fare un -P -d. Fare v1. 528 00:32:14,960 --> 00:32:18,500 Così posso vedere ora che ho due contenitori in esecuzione, quella che ho appena 529 00:32:18,500 --> 00:32:21,230 creato e il ciao Docker quello che ho ottenuto l'ultima. 530 00:32:21,230 --> 00:32:24,320 >> E si può vedere qui che assegnato una porta diversa. 531 00:32:24,320 --> 00:32:30,710 Quindi, se vado lo stesso IP, ma assegnarlo un port-- diverso si spera non l'ho fatto. 532 00:32:30,710 --> 00:32:33,060 Così ora si tratta di applicazione che ho appena schierato. 533 00:32:33,060 --> 00:32:35,980 534 00:32:35,980 --> 00:32:43,900 >> Se voglio fare i cambiamenti, mi può modificare rapidamente il codice sorgente 535 00:32:43,900 --> 00:32:49,050 e procedere come segue. 536 00:32:49,050 --> 00:32:55,170 Facciamo ciao Harvard. 537 00:32:55,170 --> 00:32:57,989 Così ora che cosa sta succedendo ad accadere è che io sono 538 00:32:57,989 --> 00:32:59,905 andare per contrassegnare con un diverso version-- oh, 539 00:32:59,905 --> 00:33:03,080 Non questo guy-- Taggalo con una versione diversa. 540 00:33:03,080 --> 00:33:05,735 E si sta andando a see-- voi ragazzi si aspettano 541 00:33:05,735 --> 00:33:11,020 ed effettuare la stessa quantità di tempo costruire una seconda volta o no? 542 00:33:11,020 --> 00:33:14,470 Va bene, e qualcuno sa perché? 543 00:33:14,470 --> 00:33:15,020 Parla. 544 00:33:15,020 --> 00:33:16,350 >> PUBBLICO: [incomprensibile] 545 00:33:16,350 --> 00:33:19,830 >> NICOLA Kabar: E 'fondamentalmente noi cambia solo uno dei passi successivi. 546 00:33:19,830 --> 00:33:23,110 E quindi sta andando a utilizzare il cache e utilizzare ciascuno di questi livelli. 547 00:33:23,110 --> 00:33:27,080 E questo è veramente un po 'di caratteristiche dell'assassino di Docker 548 00:33:27,080 --> 00:33:32,930 è così che in realtà utilizza e reimpieghi presa in consegna 549 00:33:32,930 --> 00:33:36,950 il disco per lo stesso pezzi esatte di informazioni. 550 00:33:36,950 --> 00:33:40,700 >> Quindi, se facciamo la stessa cosa, ci sono voluti solo un paio di secondi. 551 00:33:40,700 --> 00:33:48,860 Se vogliamo redeploy-- così ora Dovrei avere tre contenitori. 552 00:33:48,860 --> 00:33:56,160 Ma questo è in corso servito su the-- sette uno. 553 00:33:56,160 --> 00:33:58,860 Così ora è il terzo contenitore. 554 00:33:58,860 --> 00:34:02,580 Tutti a capire quello che ho appena fatto qui? 555 00:34:02,580 --> 00:34:06,320 >> Così ora se si desidera condividere questo contenitore rapido reale con i tuoi amici, 556 00:34:06,320 --> 00:34:14,840 si può solo fare docker spingere il il nome del contenitore, si spera. 557 00:34:14,840 --> 00:34:20,130 Quindi ora sta andando a spingerlo a-- Non sto firmato qui. 558 00:34:20,130 --> 00:34:33,511 559 00:34:33,511 --> 00:34:34,219 Mi dispiace per questo. 560 00:34:34,219 --> 00:34:39,219 Ma io non ho intenzione risolvere questo ora. 561 00:34:39,219 --> 00:34:42,780 Ma in fondo che un comando è solo salendo spingerlo. 562 00:34:42,780 --> 00:34:45,670 E si sta andando ad essere in grado di vedere se si va a Docker Hub 563 00:34:45,670 --> 00:34:48,587 E si accede, sei sarà in grado di vedere. 564 00:34:48,587 --> 00:34:50,420 E allora si può solo indicare chi sta 565 00:34:50,420 --> 00:34:52,750 di utilizzare l'immagine per andare a tirarlo. 566 00:34:52,750 --> 00:34:55,460 E possono usarlo. 567 00:34:55,460 --> 00:34:57,760 >> Con questo, si spera I tipi di dimostrato 568 00:34:57,760 --> 00:35:01,230 come è facile lavorare con finestra mobile. 569 00:35:01,230 --> 00:35:06,610 E sto solo andando a restituirlo a Mano. 570 00:35:06,610 --> 00:35:11,760 E sta andando prenderlo da qui. 571 00:35:11,760 --> 00:35:13,990 >> MANO MARCHI: Tutti i diritti grazie, grazie Nico. 572 00:35:13,990 --> 00:35:18,700 573 00:35:18,700 --> 00:35:20,614 E allora? 574 00:35:20,614 --> 00:35:24,410 Così una delle cose che ho ha voluto fare è mettere insieme 575 00:35:24,410 --> 00:35:28,820 perché questo è un importante-- perché Docker e perché 576 00:35:28,820 --> 00:35:33,000 contenitori sono un tale importante nuovo sviluppo, 577 00:35:33,000 --> 00:35:36,890 un nuovo modo di fare realmente software. 578 00:35:36,890 --> 00:35:41,300 >> E prima di me, ho intenzione di basta introdurre alcune statistiche. 579 00:35:41,300 --> 00:35:42,790 Non ho intenzione di leggere tutti questi. 580 00:35:42,790 --> 00:35:52,540 Ma questo mostra molto su come popolare questo è nella comunità. 581 00:35:52,540 --> 00:35:56,310 Le tecnologie di base Docker sono open source. 582 00:35:56,310 --> 00:36:03,560 Ecco, questo è Docker Engine, comporre, Swarm, un mucchio di altre cose 583 00:36:03,560 --> 00:36:05,210 è tutto open source. 584 00:36:05,210 --> 00:36:10,590 E abbiamo, quello che ho fatto dire, 1.300 collaboratori. 585 00:36:10,590 --> 00:36:15,630 Si sta vedendo ora, se si guarda al numero di aperture di lavoro, l'ultima volta 586 00:36:15,630 --> 00:36:19,640 abbiamo guardato, era circa 43.000 posti di lavoro aperture menzionare direttamente 587 00:36:19,640 --> 00:36:22,230 la familiarità con Docker. 588 00:36:22,230 --> 00:36:26,450 Centinaia di milioni di immagini hanno stato scaricato da Docker Hub. 589 00:36:26,450 --> 00:36:31,870 E, beh, molto più grandi statistiche. 590 00:36:31,870 --> 00:36:34,770 >> Per coloro che sono curiosi, si è stato originariamente scritto in Python 591 00:36:34,770 --> 00:36:37,730 e poi riscritto in Go. 592 00:36:37,730 --> 00:36:40,320 Ed è stato solo aprire sorgente-- è solo 593 00:36:40,320 --> 00:36:44,950 stato rilasciato per circa 2 anni e 1/2, Il che significa che in 2 anni e 1/2, 594 00:36:44,950 --> 00:36:48,020 abbiamo visto una quantità enorme di crescita e l'importanza 595 00:36:48,020 --> 00:36:50,190 di questo nella comunità. 596 00:36:50,190 --> 00:36:52,400 E così voglio parlare un po 'sul perché. 597 00:36:52,400 --> 00:36:54,940 598 00:36:54,940 --> 00:36:59,880 >> Quindi, solo per ribadire alcuni dei Punti chiave di Nico, Docker è veloce. 599 00:36:59,880 --> 00:37:00,630 E 'portatile. 600 00:37:00,630 --> 00:37:02,500 È riproducibile. 601 00:37:02,500 --> 00:37:06,130 E si imposta un ambiente standard. 602 00:37:06,130 --> 00:37:13,370 >> E Cosa-- questo è il mio schifoso debellare monoliti slide-- cosa 603 00:37:13,370 --> 00:37:17,990 è aiutare le persone fanno, che un sacco di industria del software 604 00:37:17,990 --> 00:37:21,400 iniziato a fare in primi anni 2000, si sta muovendo 605 00:37:21,400 --> 00:37:24,200 da questi monolitico singole applicazioni 606 00:37:24,200 --> 00:37:28,590 dove ogni dipendenza doveva essere testati prima l'intera applicazione ha avuto 607 00:37:28,590 --> 00:37:31,280 per essere distribuito, che potrebbe significare un sito web 608 00:37:31,280 --> 00:37:36,240 solo ma ho schierato una volta ogni tre mesi, o più, 609 00:37:36,240 --> 00:37:42,650 ad un servizio molto più oriented architecture 610 00:37:42,650 --> 00:37:46,090 o tipo diverso a componenti di architettura applicativa. 611 00:37:46,090 --> 00:37:48,610 E così gli stessi sono tipo di architetture 612 00:37:48,610 --> 00:37:52,250 che sfruttano Docker per l'esecuzione in questi tre 613 00:37:52,250 --> 00:37:58,450 principali aree di sviluppo, che è lo sviluppo scrivendo il codice vero e proprio, 614 00:37:58,450 --> 00:38:00,140 testare il codice, e la distribuzione di esso. 615 00:38:00,140 --> 00:38:03,000 616 00:38:03,000 --> 00:38:05,420 >> Allora perché è così importante? 617 00:38:05,420 --> 00:38:09,920 Se sei a-- Vi faccio un esempio. 618 00:38:09,920 --> 00:38:13,600 Se sei un sito web sviluppatore dispositivo, sei 619 00:38:13,600 --> 00:38:19,020 lo sviluppo di un sito web che si basa sulla database che David ha prodotto qui. 620 00:38:19,020 --> 00:38:20,490 Spiacente David, ti sto chiamando. 621 00:38:20,490 --> 00:38:22,984 622 00:38:22,984 --> 00:38:24,900 Se si voleva schierare il tutto, si sarebbe 623 00:38:24,900 --> 00:38:28,870 devono aspettare sotto un tradizionale sviluppo di software monolitico 624 00:38:28,870 --> 00:38:32,710 ambiente, si sarebbe dovuto aspettare fino a quando non è stato fatto con il database 625 00:38:32,710 --> 00:38:36,030 prima che si possa effettivamente fare eventuali modifiche al tuo sito web. 626 00:38:36,030 --> 00:38:40,900 Dovreste ridistribuire il intera applicazione di farlo. 627 00:38:40,900 --> 00:38:45,490 >> E che cosa Docker vi aiuta a fare è ogni persona opera su diverse componenti 628 00:38:45,490 --> 00:38:52,990 e aggiornarli come vanno, solo facendo Assicurarsi che le interfacce rimangono le stesse. 629 00:38:52,990 --> 00:38:56,350 Quindi ciò che ha fatto si è spostato persone 630 00:38:56,350 --> 00:39:03,950 dal fare queste massiccia monolitica software architettato che 631 00:39:03,950 --> 00:39:07,610 distribuito ogni mese per un continuo integrazione e continuo sviluppo 632 00:39:07,610 --> 00:39:08,490 ambiente. 633 00:39:08,490 --> 00:39:12,580 >> Ora questo non è unico a Docker, ma Docker rende molto più facile, 634 00:39:12,580 --> 00:39:16,620 il che significa che sei fondamentalmente costantemente la distribuzione. 635 00:39:16,620 --> 00:39:20,690 Parliamo con le imprese che sono la distribuzione di applicazioni affiancate pubblici 636 00:39:20,690 --> 00:39:30,180 migliaia di volte al giorno perché che vedono il valore in un solo fare 637 00:39:30,180 --> 00:39:33,740 piccole modifiche e fintanto quanto passa attraverso le prove, 638 00:39:33,740 --> 00:39:35,900 lasciandolo uscire in produzione. 639 00:39:35,900 --> 00:39:41,890 Nico mi diceva sempre precedenza che in molti ambienti, 640 00:39:41,890 --> 00:39:46,580 il ciclo di vita standard di un contenitore viene misurato in secondi, 641 00:39:46,580 --> 00:39:50,460 mentre una macchina virtuale potrebbe essere misurata in mesi. 642 00:39:50,460 --> 00:39:54,590 643 00:39:54,590 --> 00:39:58,690 >> Volevo prendere un leggero girare qui perché sono 644 00:39:58,690 --> 00:40:00,170 in un istituto di istruzione. 645 00:40:00,170 --> 00:40:06,670 Ho voluto dare un esempio di come questo funziona in un ricerca educativa 646 00:40:06,670 --> 00:40:07,670 situazione. 647 00:40:07,670 --> 00:40:10,930 Quindi c'è una organizzazione chiamati bioboxes. 648 00:40:10,930 --> 00:40:15,450 Bioboxes fa DNA analisi per i ricercatori. 649 00:40:15,450 --> 00:40:22,029 >> Ora ciò che hanno trovato era che quando un researcher-- e questo non è 650 00:40:22,029 --> 00:40:24,070 il difetto di un particolare researcher-- ma quando 651 00:40:24,070 --> 00:40:31,240 un ricercatore schierato un algoritmo per analizzare, 652 00:40:31,240 --> 00:40:36,670 In modo particolare, un campione di DNA, avrebbero scrivere il software, 653 00:40:36,670 --> 00:40:39,980 pubblica che, forse a GitHub o da qualche altra parte, 654 00:40:39,980 --> 00:40:42,680 e poi sono stati fatti. 655 00:40:42,680 --> 00:40:47,440 >> Beh, il problema era che Non era necessariamente riproducibile. 656 00:40:47,440 --> 00:40:51,610 Perché, al fine di comprendere il software, 657 00:40:51,610 --> 00:40:54,830 sarebbero istituiti per il ambiente di sviluppo esatto 658 00:40:54,830 --> 00:41:00,460 che tale ricercatore utilizzato, solitamente loro laptop o un server, o di un dato 659 00:41:00,460 --> 00:41:04,280 centro che stavano usando. 660 00:41:04,280 --> 00:41:11,530 E di conseguenza, è stato molto difficile di riprodurre i risultati della ricerca quando 661 00:41:11,530 --> 00:41:16,910 Analizzando campioni di DNA a guardare le cose come incidence-- 662 00:41:16,910 --> 00:41:23,830 confrontare l'incidenza di attacchi di cuore sulla base di alcuni geni che sono presenti, 663 00:41:23,830 --> 00:41:28,900 per esempio, o il rischio di cancro, o qualsiasi altro genere di cose. 664 00:41:28,900 --> 00:41:33,900 >> Così quello che hanno fatto è stato invece hanno iniziato la creazione di contenitori. 665 00:41:33,900 --> 00:41:39,380 E si può andare a bioboxes.org, si tratta di una grande organizzazione. 666 00:41:39,380 --> 00:41:43,900 E quello che fanno è che producono contenitori basati su ricerche. 667 00:41:43,900 --> 00:41:46,840 E poi ogni volta che qualcuno invia nel loro campione, possono eseguirlo. 668 00:41:46,840 --> 00:41:52,770 E ha tutto l'ambiente necessari per eseguire tale algoritmo 669 00:41:52,770 --> 00:41:55,370 e produrre i risultati. 670 00:41:55,370 --> 00:41:58,250 E stanno trovando che sono molto più probabile e molto 671 00:41:58,250 --> 00:42:01,300 più rapidamente in grado di restituire i risultati a persone. 672 00:42:01,300 --> 00:42:06,860 >> E infatti, cosa fanno sono in esecuzione le proprie analisi sul DNA, 673 00:42:06,860 --> 00:42:11,220 l'invio che per bioboxes, e poi BIOBOX prende solo i dati, 674 00:42:11,220 --> 00:42:15,350 corre contro la varietà contenitori di diversi 675 00:42:15,350 --> 00:42:19,030 per vedere risultati diversi basato su una ricerca diversa. 676 00:42:19,030 --> 00:42:21,860 Quindi è molto potente modo in cui i ricercatori 677 00:42:21,860 --> 00:42:28,070 può fare una singola istanza che permette altre persone per cercare di riprodurre 678 00:42:28,070 --> 00:42:28,650 i risultati. 679 00:42:28,650 --> 00:42:31,710 680 00:42:31,710 --> 00:42:34,360 >> Così come si fa a iniziare? 681 00:42:34,360 --> 00:42:37,950 682 00:42:37,950 --> 00:42:39,800 Siamo ben supportato su Linux. 683 00:42:39,800 --> 00:42:43,070 Quindi, se si desidera installare nulla su Linux, 684 00:42:43,070 --> 00:42:45,620 si utilizza il normale gestore di pacchetti da installare. 685 00:42:45,620 --> 00:42:47,600 Se stai usando una Debian, e 'get apt. 686 00:42:47,600 --> 00:42:50,500 CentOS è yum. 687 00:42:50,500 --> 00:42:53,500 Fedora di Red Hat è rpm-- Non mi ricordo. 688 00:42:53,500 --> 00:42:56,070 Comunque, è tutto lì. 689 00:42:56,070 --> 00:42:59,610 Sosteniamo una grande varietà di distribuzioni Linux. 690 00:42:59,610 --> 00:43:01,150 È possibile controllare quelli fuori. 691 00:43:01,150 --> 00:43:06,370 >> Ci sono anche opzioni in modo da potrebbe funzionare su Mac o Windows. 692 00:43:06,370 --> 00:43:10,670 Ora Nico detto in precedenza che è stato supportato solo su Linux. 693 00:43:10,670 --> 00:43:18,180 Questo è vero perché ha bisogno di un kernel Linux. 694 00:43:18,180 --> 00:43:20,540 Ma, è possibile eseguire in una macchina virtuale. 695 00:43:20,540 --> 00:43:25,290 E che il Docker Toolbox FA, che è possibile scaricare, 696 00:43:25,290 --> 00:43:27,610 ti dà quella macchina virtuale. 697 00:43:27,610 --> 00:43:37,260 >> Quindi, solo un rapido 48 secondo, credo, scaricare. 698 00:43:37,260 --> 00:43:40,670 Basta una ricerca su Docker Toolbox, scaricarlo al Mac, 699 00:43:40,670 --> 00:43:43,910 e questa parte è di corso accelerato perché chi 700 00:43:43,910 --> 00:43:47,620 vuole vedere un segnale di download? 701 00:43:47,620 --> 00:43:54,190 Installazione Mac Standard, e allora sei 702 00:43:54,190 --> 00:43:59,795 andando a vedere Girolamo messo nel suo password. 703 00:43:59,795 --> 00:44:00,670 Questo è molto eccitante. 704 00:44:00,670 --> 00:44:03,510 705 00:44:03,510 --> 00:44:06,230 E poi si installa un insieme di strumenti. 706 00:44:06,230 --> 00:44:10,010 E in particolare lo farà installare una linea di comando. 707 00:44:10,010 --> 00:44:14,220 E allora si potrebbe vedere Jerome testare le sue immagini. 708 00:44:14,220 --> 00:44:19,050 709 00:44:19,050 --> 00:44:22,640 >> E poi sulla base di questo, si può vedere che YouTube 710 00:44:22,640 --> 00:44:27,420 pensa che Nico è interessato a Star Wars, The Jimmy Kimmel spettacolo, 711 00:44:27,420 --> 00:44:29,020 e credo che Ellen. 712 00:44:29,020 --> 00:44:34,130 Penso che ultimo è una clip da uno show di Ellen. 713 00:44:34,130 --> 00:44:37,760 >> Così Docker Toolbox viene però con più di una semplice macchina Docker. 714 00:44:37,760 --> 00:44:39,840 Così Docker Machine è la cosa che aiuta 715 00:44:39,840 --> 00:44:43,710 si imposta un virtuale macchina su Windows 716 00:44:43,710 --> 00:44:52,080 o Mac-- tua casella di Windows o Mac box-- e ti aiuta a fare il provisioning, 717 00:44:52,080 --> 00:44:54,040 >> Ma si tratta anche con Swarm e Compose, 718 00:44:54,040 --> 00:45:00,840 che sono progettati per aiutarti a fare grande implementazioni su larga scala della vostra applicazione. 719 00:45:00,840 --> 00:45:04,000 Quindi, se si desidera gestire cluster di nodi, 720 00:45:04,000 --> 00:45:08,450 gruppi di contenitori, comporre e Sciame sono la strada da percorrere a tale proposito. 721 00:45:08,450 --> 00:45:11,430 >> E, naturalmente, si tratta di Docker Motore e Kitematic, 722 00:45:11,430 --> 00:45:13,250 che è questa interfaccia grafica del desktop. 723 00:45:13,250 --> 00:45:17,060 Vorrei anche ricordare Registro Docker, che non è incluso nel pannello degli strumenti, 724 00:45:17,060 --> 00:45:23,150 ma è un modo per eseguire il proprio registri di Docker Immagini come Docker 725 00:45:23,150 --> 00:45:28,970 Hub, ma si può anche semplicemente usare Docker Hub come un modo per farlo. 726 00:45:28,970 --> 00:45:32,955 >> E, colpo di scena, si sta vedendo in esecuzione in un contenitore. 727 00:45:32,955 --> 00:45:34,830 Ed è così che siamo distribuzione dei nostri diapositive. 728 00:45:34,830 --> 00:45:38,610 Tutta questa presentazione è in realtà un ponte diapositiva HTML. 729 00:45:38,610 --> 00:45:43,170 Ed è in esecuzione in un contenitore, che è possibile ottenere per-- 730 00:45:43,170 --> 00:45:45,596 >> NICOLA Kabar: Sì, così è in esecuzione a tempo pieno sul mio Max. 731 00:45:45,596 --> 00:45:47,540 E sto presentando da esso. 732 00:45:47,540 --> 00:45:50,910 E basta fare Docker dopo installare il Toolbox. 733 00:45:50,910 --> 00:45:57,340 Si può solo fare una corsa finestra mobile e lo fanno, e utilizzare le diapositive. 734 00:45:57,340 --> 00:45:58,830 >> MANO MARCHI: E questo è tutto. 735 00:45:58,830 --> 00:46:02,160 Quindi noi tutti ringraziamo per essere venuti. 736 00:46:02,160 --> 00:46:03,990 E siamo felici di rispondere alle domande. 737 00:46:03,990 --> 00:46:07,810 Devo dire prima che qualcuno lascia c'è magliette laggiù. 738 00:46:07,810 --> 00:46:10,940 Siamo spiacenti qualcuno che sta guardando questo su Livestream o video, 739 00:46:10,940 --> 00:46:12,820 ma abbiamo Docker magliette laggiù. 740 00:46:12,820 --> 00:46:16,250 E sappiamo studenti Docker, e nella mia esperienza, 741 00:46:16,250 --> 00:46:18,940 professori troppo, come l'abbigliamento libero. 742 00:46:18,940 --> 00:46:22,490 >> Quindi grazie a tutti per essere venuti. 743 00:46:22,490 --> 00:46:27,050 E seguici su Twitter se volete, o no. 744 00:46:27,050 --> 00:46:27,910 Non mi interessa. 745 00:46:27,910 --> 00:46:29,430 Anche seguire Docker su Twitter. 746 00:46:29,430 --> 00:46:31,890 Questo è anche interessante. 747 00:46:31,890 --> 00:46:32,990 E poi il gioco è fatto. 748 00:46:32,990 --> 00:46:33,490 Docker.com. 749 00:46:33,490 --> 00:46:35,410 Grazie. 750 00:46:35,410 --> 00:46:39,360 >> [APPLAUSI] 751 00:46:39,360 --> 00:46:41,625