1 00:00:00,000 --> 00:00:05,042 >> [Música tocando] 2 00:00:05,042 --> 00:00:06,000 DAVID MALAN: Tudo bem. 3 00:00:06,000 --> 00:00:07,630 Muito obrigado por terem vindo. 4 00:00:07,630 --> 00:00:11,850 Este é seminário CS50 em encaixe, um tecnologia que nós mesmos e CS50 we 5 00:00:11,850 --> 00:00:13,392 começaram a usar por algum tempo agora. 6 00:00:13,392 --> 00:00:15,766 Então, meu nome é David Malan, I ensinar Introdução de Harvard 7 00:00:15,766 --> 00:00:16,671 de Ciência da Computação. 8 00:00:16,671 --> 00:00:18,670 Por muito anos, temos vindo a dar aos estudantes 9 00:00:18,670 --> 00:00:20,435 do lado do cliente para download máquinas virtuais 10 00:00:20,435 --> 00:00:22,134 onde eles fazem seus problemas sets. 11 00:00:22,134 --> 00:00:24,300 Que temos agora a transição para um ambiente de nuvem 12 00:00:24,300 --> 00:00:27,396 que realmente usa essa tecnologia chamado de encaixe, de tal modo que todo o CS50 13 00:00:27,396 --> 00:00:29,270 os alunos agora têm a sua recipientes próprios Docker 14 00:00:29,270 --> 00:00:31,180 que em breve você vai ouvir tudo. 15 00:00:31,180 --> 00:00:33,740 >> Além disso, no servidor da CS50 cluster de lado, por muitos anos 16 00:00:33,740 --> 00:00:35,290 estávamos usando servidor em nuvem da Amazon. 17 00:00:35,290 --> 00:00:37,164 Nós estávamos correndo indivíduo máquinas virtuais. 18 00:00:37,164 --> 00:00:40,330 Isso também, começamos a fazer a transição para essas coisas chamadas recipientes Docker 19 00:00:40,330 --> 00:00:43,762 de modo a que todas as nossas aplicações são agora perfeitamente isoladas uma da outra. 20 00:00:43,762 --> 00:00:46,720 Assim, por isso e muito mais, permitam-me apresentar nossos amigos, Nico e Mano, 21 00:00:46,720 --> 00:00:48,574 da própria Docker. 22 00:00:48,574 --> 00:00:49,740 NICOLA kabar: Obrigado, David. 23 00:00:49,740 --> 00:00:51,410 Olá a todos. 24 00:00:51,410 --> 00:00:54,230 Meu nome é Nico e este é Mano. 25 00:00:54,230 --> 00:00:58,260 Somos de Docker. 26 00:00:58,260 --> 00:01:02,240 Nós vamos estar falando about-- dando a vocês uma introdução para Docker, 27 00:01:02,240 --> 00:01:08,100 e espero que, no final dessa conversa você pode perceber 28 00:01:08,100 --> 00:01:12,890 o quanto você pode usar para médico oxalato seu desenvolvimento de aplicativos 29 00:01:12,890 --> 00:01:14,200 e implantação. 30 00:01:14,200 --> 00:01:21,250 >> Então, vamos começar reais rápido com algumas informações de fundo. 31 00:01:21,250 --> 00:01:22,750 Descreva o Docker é tudo. 32 00:01:22,750 --> 00:01:25,490 Como funciona? 33 00:01:25,490 --> 00:01:27,400 Como é arquitetado? 34 00:01:27,400 --> 00:01:29,360 Eu vou estar fazendo alguns demos. 35 00:01:29,360 --> 00:01:35,070 E Mano vai ser descrevendo como você pode usar Docker 36 00:01:35,070 --> 00:01:37,720 e dando-lhe os passos específicos como você pode começar. 37 00:01:37,720 --> 00:01:41,490 >> Eu apreciaria se vocês podem segurar off para as suas perguntas para o final. 38 00:01:41,490 --> 00:01:46,800 Dessa forma, eu poderia estar dirigindo-se àqueles perguntas durante a apresentação. 39 00:01:46,800 --> 00:01:52,150 Então, vamos deixar algum tempo no final para perguntas. 40 00:01:52,150 --> 00:01:55,170 >> Então, só real rápido, que tem na verdade, nunca trabalhou em Docker, 41 00:01:55,170 --> 00:01:56,850 como jogado com ele? 42 00:01:56,850 --> 00:01:58,000 Fantástica. 43 00:01:58,000 --> 00:01:58,520 Frio. 44 00:01:58,520 --> 00:01:59,817 Ótimo. 45 00:01:59,817 --> 00:02:01,525 Então, eu vou começar com um pouco de história. 46 00:02:01,525 --> 00:02:04,350 47 00:02:04,350 --> 00:02:09,820 Então, de volta nos anos 90 e 2000s adiantados, basicamente, 48 00:02:09,820 --> 00:02:16,940 como desenvolvedores web, desenvolvedores de aplicativos, quando eles foram para implantar um aplicativo 49 00:02:16,940 --> 00:02:19,350 ele foi amarrado a nu metal. 50 00:02:19,350 --> 00:02:20,860 Era um servidor. 51 00:02:20,860 --> 00:02:22,870 Foi uma aplicação. 52 00:02:22,870 --> 00:02:25,260 >> Tradicionalmente, um exemplo Seria como uma pilha LAMP, 53 00:02:25,260 --> 00:02:30,630 onde você realmente teve que abrir o pool de recursos. 54 00:02:30,630 --> 00:02:37,110 CPU, memória, disco, rede, instalação sistema operacional em cima disso. 55 00:02:37,110 --> 00:02:40,060 Se você está servindo alguma coisa, se você está realmente tendo servidor web, 56 00:02:40,060 --> 00:02:42,470 você precisa de algo como Apache para servi-lo. 57 00:02:42,470 --> 00:02:47,540 >> Se o seu aplicativo precisa de banco de dados, backhand, 58 00:02:47,540 --> 00:02:50,840 você instalar algo como MySQL, e assim por diante. 59 00:02:50,840 --> 00:02:55,910 E se você precisar o tempo de execução, do PHP e trabalho PHP Python estavam lá. 60 00:02:55,910 --> 00:02:59,480 E assim nós realmente tive que tomar essas medidas a fim 61 00:02:59,480 --> 00:03:02,060 para obter o seu aplicativo instalado e funcionando. 62 00:03:02,060 --> 00:03:08,440 >> Se você precisava de mais poder de computação que você, basicamente tive que chamar o seu Ops cara 63 00:03:08,440 --> 00:03:16,260 ou galão para ir e acumular um novo peça de hardware, conectá-lo, 64 00:03:16,260 --> 00:03:19,850 e você tem que repetir os processos de novo e de novo. 65 00:03:19,850 --> 00:03:23,680 Portanto, este processo foi relativamente caro. 66 00:03:23,680 --> 00:03:26,080 Definitivamente foi muito lento. 67 00:03:26,080 --> 00:03:27,550 >> Foi ineficiente. 68 00:03:27,550 --> 00:03:33,890 E em muitos casos, o seu hardware foi subutilizado. 69 00:03:33,890 --> 00:03:38,830 Assim, no final dos anos 90 e início dos anos 2000, virtualização de hardware veio em frente. 70 00:03:38,830 --> 00:03:42,475 E como você pode ver aqui no imagem, basicamente o que eles fizeram 71 00:03:42,475 --> 00:03:46,390 é abstraída da piscina de recursos de hardware gratuitos 72 00:03:46,390 --> 00:03:49,680 e tipo de servido aqueles para as camadas superiores, 73 00:03:49,680 --> 00:03:52,360 Neste caso, um hóspede sistema operacional. 74 00:03:52,360 --> 00:03:54,940 >> E toda a idéia de máquinas virtuais deparei 75 00:03:54,940 --> 00:03:59,110 e que realmente ajudou Nuvem computação como a conhecemos hoje. 76 00:03:59,110 --> 00:04:02,730 Então, o que quis dizer é que você pode executar várias VMs, que 77 00:04:02,730 --> 00:04:06,720 significou várias pilhas, múltiplos aplicação em uma mesma máquina física. 78 00:04:06,720 --> 00:04:10,570 79 00:04:10,570 --> 00:04:16,440 >> Isso definitivamente ajudou com o velocidade de implementação do aplicativo. 80 00:04:16,440 --> 00:04:17,629 Definitivamente com as despesas. 81 00:04:17,629 --> 00:04:22,810 Você não tem que ir e gastar energia, tempo e recursos para rack 82 00:04:22,810 --> 00:04:26,210 mais servidores para chegar a mais de computação. 83 00:04:26,210 --> 00:04:30,950 E, na verdade, a velocidade de trazer os recursos para cima é muito mais rápido. 84 00:04:30,950 --> 00:04:31,450 Ótimo. 85 00:04:31,450 --> 00:04:34,320 >> Então nós resolvemos a fome no mundo, certo? 86 00:04:34,320 --> 00:04:36,390 Não, não realmente. 87 00:04:36,390 --> 00:04:42,410 Assim, a virtualização tanto quanto é realmente ajudou, resolver o problema, 88 00:04:42,410 --> 00:04:45,460 ele realmente introduzido muitos desafios. 89 00:04:45,460 --> 00:04:49,210 O hypervisor definitivamente introduzido um monte de complexidade, 90 00:04:49,210 --> 00:04:53,820 manipulação aqueles subjacente conjunto de recursos. 91 00:04:53,820 --> 00:04:57,910 >> É mais pesado no sentido de que antes você tinha um único sistema operacional que 92 00:04:57,910 --> 00:05:01,830 é como três, quatro shows no disco. 93 00:05:01,830 --> 00:05:04,230 Agora, se você tem 10 máquinas num único hardware 94 00:05:04,230 --> 00:05:09,060 você tem que multiplicar esse pelo número de máquinas. 95 00:05:09,060 --> 00:05:11,440 É definitivamente mais caro em um sentido você ainda 96 00:05:11,440 --> 00:05:14,430 tem que obter licenciamento para a tecnologia de virtualização 97 00:05:14,430 --> 00:05:18,210 se não é open source. 98 00:05:18,210 --> 00:05:21,120 >> Mas, não vamos tomar todas as crédito de virtualização. 99 00:05:21,120 --> 00:05:27,530 Porque o que aconteceu é que há uma monte de pilhas e lotes de software 100 00:05:27,530 --> 00:05:33,900 tecnologias que foram habilitados pela rapidez com que você fosse capaz de obter 101 00:05:33,900 --> 00:05:38,040 a recursos com a lança Cloud. 102 00:05:38,040 --> 00:05:46,675 >> Então, hoje um único aplicativo ou serviço pode ser utilizando qualquer um dos seguintes tempos de execução 103 00:05:46,675 --> 00:05:47,216 ou bases de dados. 104 00:05:47,216 --> 00:05:50,250 105 00:05:50,250 --> 00:05:56,070 PHP, Python, MySQL, Redis, outros enfeites. 106 00:05:56,070 --> 00:05:59,740 Portanto, há um monte de complexidade nesta número de pilhas de realmente abrir 107 00:05:59,740 --> 00:06:02,210 um único serviço. 108 00:06:02,210 --> 00:06:07,300 E junto com isso, você tinha um monte de recursos subjacentes ou infra-estrutura 109 00:06:07,300 --> 00:06:15,210 tipos para testar deploy e, basicamente, levar à produção desses aplicativos 110 00:06:15,210 --> 00:06:16,900 que você está desenvolvendo. 111 00:06:16,900 --> 00:06:21,950 >> Especialmente como suas equipes têm crescido trabalhar sobre essas aplicações, 112 00:06:21,950 --> 00:06:25,310 há um monte de complexidade e os desafios 113 00:06:25,310 --> 00:06:31,660 que foram trazidos para assegurar que o cycle-- basicamente aplicação 114 00:06:31,660 --> 00:06:34,040 ciclo de desenvolvimento, é realmente bem sucedido. 115 00:06:34,040 --> 00:06:40,440 Então, o fato de que a sua candidatura está trabalhando localmente no seu local de VM 116 00:06:40,440 --> 00:06:47,480 não garante que o seu colega vai esperar os mesmos resultados. 117 00:06:47,480 --> 00:06:51,330 >> E quando a equipe de operações é envolvido em tomar o que você tem 118 00:06:51,330 --> 00:06:54,480 e implantá-lo em produção escala, também não há nenhuma garantia 119 00:06:54,480 --> 00:06:56,730 que que realmente vai acontecer. 120 00:06:56,730 --> 00:07:00,900 Então, isso nos deixa com um realmente big-- um monte de pontos de interrogação, 121 00:07:00,900 --> 00:07:07,700 uma série de desafios, na verdade, enfrentado de forma semelhante nos dias. 122 00:07:07,700 --> 00:07:12,280 E isso nos fez lembrar de a indústria naval. 123 00:07:12,280 --> 00:07:14,280 >> Assim, a indústria naval teve um lote de mercadorias, 124 00:07:14,280 --> 00:07:16,190 como você pode ver no lado esquerdo. 125 00:07:16,190 --> 00:07:19,840 E no lado direito, há um monte de, basicamente, 126 00:07:19,840 --> 00:07:22,160 maneiras de enviar esses produtos. 127 00:07:22,160 --> 00:07:26,040 E o que acontece quando um casal pessoas reuniram-se e disse: 128 00:07:26,040 --> 00:07:29,600 precisamos padronizar como nós realmente enviamos esses produtos. 129 00:07:29,600 --> 00:07:33,280 E boom, você tem a contêiner de transporte intermodal. 130 00:07:33,280 --> 00:07:38,970 >> Então, eles concordaram com a mais tamanhos comuns para o recipiente. 131 00:07:38,970 --> 00:07:40,160 Como lidar com eles. 132 00:07:40,160 --> 00:07:44,560 O método exato que você precisa para carregá-los e descarregá-los. 133 00:07:44,560 --> 00:07:49,590 E, por conseguinte, que verdadeiramente ajudou a indústria naval. 134 00:07:49,590 --> 00:07:55,250 Agora, mais de 90% foco transportados globalmente estão usando esses recipientes. 135 00:07:55,250 --> 00:08:01,010 E isso definitivamente diminui as despesas, bem como 136 00:08:01,010 --> 00:08:03,400 os danos devido ao transporte. 137 00:08:03,400 --> 00:08:09,660 >> Então, tomamos o mesmo modelo e nós aplicar o software de desenvolvimento de dois app 138 00:08:09,660 --> 00:08:13,080 Arquitectura, no sentido que conteinerização 139 00:08:13,080 --> 00:08:15,842 tomou a virtualização para um nível acima. 140 00:08:15,842 --> 00:08:17,800 Então, ao invés de fazer isso ao nível do hardware, 141 00:08:17,800 --> 00:08:22,060 tornou-se mais de uma operação virtualização de nível de sistema. 142 00:08:22,060 --> 00:08:26,450 >> E fazemos isso fornecendo cada aplicativo em seu próprio peso leve, 143 00:08:26,450 --> 00:08:31,180 isolado, executável, e portátil, o mais importante, 144 00:08:31,180 --> 00:08:35,049 uma maneira de realmente embalar tudo o que ele precisa ser executado. 145 00:08:35,049 --> 00:08:36,100 Em qualquer lugar ele pode ser executado. 146 00:08:36,100 --> 00:08:42,039 Assim, independentemente se você estiver executando-o em dev ambiente local, sua produção 147 00:08:42,039 --> 00:08:44,490 ambiente, seu estadiamento ou testes. 148 00:08:44,490 --> 00:08:47,700 Não importa o que subjacente infra-estrutura está lá, 149 00:08:47,700 --> 00:08:51,410 você tinha um app de trabalho funcional. 150 00:08:51,410 --> 00:08:54,100 151 00:08:54,100 --> 00:09:01,800 >> Então, isso é exatamente o que, basicamente, recipientes fazer para esse problema. 152 00:09:01,800 --> 00:09:04,070 Eles abordá-la por embalá-lo de tal maneira 153 00:09:04,070 --> 00:09:09,490 que pode garantir que ele está implantado com sucesso, não importa onde ele vive. 154 00:09:09,490 --> 00:09:12,120 Então, se você está indo como, Bob ainda é OK. 155 00:09:12,120 --> 00:09:17,860 Se você está confuso com o que eu estou dizendo, Eu vou estar elaborando sobre isso. 156 00:09:17,860 --> 00:09:20,900 >> Assim como faz em si Docker se encaixam nesse quadro? 157 00:09:20,900 --> 00:09:26,335 Então Docker é uma plataforma aberta de forma fácil, enfatizar facilmente, 158 00:09:26,335 --> 00:09:30,500 para construir navio, correr, portátil e leve auto 159 00:09:30,500 --> 00:09:33,440 recipientes de aplicativos suficientes em qualquer lugar. 160 00:09:33,440 --> 00:09:37,660 Então, se você tomar alguma coisa com este Discussão, visite o seguinte. 161 00:09:37,660 --> 00:09:40,980 >> Se você tiver seu aplicativo em execução localmente e você desenvolveu- 162 00:09:40,980 --> 00:09:45,930 no uso da plataforma Docker, esperar que ele seja implantado com sucesso. 163 00:09:45,930 --> 00:09:49,380 Não importa qual é o infraestrutura subjacente. 164 00:09:49,380 --> 00:09:53,830 Então, se você tem um Docker recipiente e está funcionando, então 165 00:09:53,830 --> 00:09:58,130 enquanto há um Docker motor por outro side-- 166 00:09:58,130 --> 00:10:02,190 se a sua infra-estrutura de operação está usando qualquer Nuvem, se 167 00:10:02,190 --> 00:10:06,680 é AWS, ou o Google ou Microsoft, ou qualquer uma das Nuvens públicas, 168 00:10:06,680 --> 00:10:10,010 ou a sua própria nuvem, ou sua pilha aberto Nuvem, ou seu ambiente local. 169 00:10:10,010 --> 00:10:11,970 >> Se você tem um motor execução, que meios 170 00:10:11,970 --> 00:10:14,537 vai ser implantado com sucesso lá. 171 00:10:14,537 --> 00:10:16,620 Vai estar em execução exactamente o mesmo comportamento 172 00:10:16,620 --> 00:10:21,480 como você arquitetado que ele seja. 173 00:10:21,480 --> 00:10:26,080 Portanto, se olharmos at-- estou indo para passar por aquilo que, na verdade, 174 00:10:26,080 --> 00:10:29,160 estão nos principais componentes do encaixe. 175 00:10:29,160 --> 00:10:31,060 >> Então Motor está no cerne de Docker. 176 00:10:31,060 --> 00:10:32,770 É o cérebro da. 177 00:10:32,770 --> 00:10:39,360 Ele orquestra construção, transporte, e implantação e gerenciamento 178 00:10:39,360 --> 00:10:41,570 os próprios recipientes. 179 00:10:41,570 --> 00:10:45,160 Eu vou cavar o motor faz em mais detalhes em um segundo. 180 00:10:45,160 --> 00:10:47,740 181 00:10:47,740 --> 00:10:51,720 Basicamente, porque Doctor foi construído em torno das arquiteturas de servidor de cliente, 182 00:10:51,720 --> 00:10:56,630 por isso, para interagir com o Motor você precisa de algum tipo de um cliente. 183 00:10:56,630 --> 00:11:01,200 >> As imagens são os modelos no que são construídos a partir de contêineres. 184 00:11:01,200 --> 00:11:06,800 Assim, as imagens são basicamente apenas arquivos estáticos. 185 00:11:06,800 --> 00:11:08,740 Modelos e contentores é, na verdade, o que é 186 00:11:08,740 --> 00:11:12,280 está sendo executado no tempo de execução que está servindo a sua candidatura 187 00:11:12,280 --> 00:11:15,150 ou fazer algo com os dados. 188 00:11:15,150 --> 00:11:19,020 >> Registro é tratado como um problema de como você realmente distribuir imagens. 189 00:11:19,020 --> 00:11:23,230 Então, se você precisa compartilhar uma imagem que você trabalhou para o seu colega 190 00:11:23,230 --> 00:11:27,220 ou para a equipe ops, você usá-lo usando Registry. 191 00:11:27,220 --> 00:11:31,720 Você pode baixar uma fonte aberta versão dele que trabalhou em Docker 192 00:11:31,720 --> 00:11:33,150 e de código aberto. 193 00:11:33,150 --> 00:11:38,040 >> Ou você pode usar Docker ajuda, que é a versão da nuvem 194 00:11:38,040 --> 00:11:40,130 para empurrar e puxar imagens lá fora. 195 00:11:40,130 --> 00:11:41,160 Isso é uma coisa enorme. 196 00:11:41,160 --> 00:11:44,520 Porque há uma enorme ecossistema em torno Docker e é 197 00:11:44,520 --> 00:11:48,960 muito fortemente utilizando o cubo. 198 00:11:48,960 --> 00:11:59,780 >> Então, para resumir aqui, esta é a forma como o minimalista cliente fluxo de trabalho Docker. 199 00:11:59,780 --> 00:12:04,040 Você interage com o anfitrião, no Neste caso, é os daemons Docker. 200 00:12:04,040 --> 00:12:06,490 É a mesma coisa que Engine. 201 00:12:06,490 --> 00:12:09,690 Você faz comandos como Docker construir, puxar, correr. 202 00:12:09,690 --> 00:12:14,280 E o próprio motor vai e faz essas coisas. 203 00:12:14,280 --> 00:12:18,010 >> Assim, ou ele interage com Registro para puxar as imagens 204 00:12:18,010 --> 00:12:19,670 e as camadas das imagens. 205 00:12:19,670 --> 00:12:25,030 Se se deseja implantar, executar recipientes, matá-los, jogá-los para baixo, 206 00:12:25,030 --> 00:12:25,730 outros enfeites. 207 00:12:25,730 --> 00:12:32,190 Portanto, este resume o fluxo de trabalho de todos estes componentes. 208 00:12:32,190 --> 00:12:34,710 >> Então, se você tomar todas as componente por si só. 209 00:12:34,710 --> 00:12:37,690 Então Engine, que é apenas um daemon. 210 00:12:37,690 --> 00:12:40,800 Vai tipo de jogá-lo para apoiar -lo no Linux, porque ele faz 211 00:12:40,800 --> 00:12:44,380 exigem certas características do kernel do Linux. 212 00:12:44,380 --> 00:12:48,820 Mas o Windows está a funcionar em fazer a mesma coisa. 213 00:12:48,820 --> 00:12:53,720 É suposto ser apoiada pelo Windows Server 2016. 214 00:12:53,720 --> 00:13:01,500 >> Assim, outra vez, as responsabilidades com o motor é, ou são, construir imagens. 215 00:13:01,500 --> 00:13:05,340 Puxe imagens do Docker Hub ou o seu próprio registo. 216 00:13:05,340 --> 00:13:07,840 Se você é feito com essas imagens ou criar um novo imagens, 217 00:13:07,840 --> 00:13:14,770 você pode empurrá-los de volta para registro para distribuí-las para outras equipes. 218 00:13:14,770 --> 00:13:18,300 >> E tentando contê-lo localmente e gerenciar o ciclo de vida contentores 219 00:13:18,300 --> 00:13:19,260 localmente. 220 00:13:19,260 --> 00:13:22,010 Ele é construído em torno de HTTP API REST. 221 00:13:22,010 --> 00:13:24,480 Então, tecnicamente você pode escrever seu próprio cliente 222 00:13:24,480 --> 00:13:31,650 contanto que usa o HTTP, o que é muito mecanismo padrão para conversar com motor 223 00:13:31,650 --> 00:13:33,110 e um monte de outros serviços. 224 00:13:33,110 --> 00:13:35,780 E você pode ver a partir de aqui que, independentemente 225 00:13:35,780 --> 00:13:39,010 de que a infra-estrutura é, contanto que você can-- tudo 226 00:13:39,010 --> 00:13:42,170 você precisa é uma operação sistema, especificamente o Linux. 227 00:13:42,170 --> 00:13:45,460 >> E você pode instalar Docker Motor em cima disso e tê-lo funcionando 228 00:13:45,460 --> 00:13:48,970 e orquestra, basicamente, todos estes app um, dois, 229 00:13:48,970 --> 00:13:51,530 e três recipientes são reais. 230 00:13:51,530 --> 00:13:53,990 Então, isso é Engine. 231 00:13:53,990 --> 00:13:58,040 Como mencionei anteriormente, porque você precisa interagir com Motor, 232 00:13:58,040 --> 00:13:59,200 há o cliente. 233 00:13:59,200 --> 00:14:03,180 >> Mas, na verdade, quando você instala Estivador, ele vem com ele. 234 00:14:03,180 --> 00:14:06,110 Por isso, é instalado, por isso é um único binário. 235 00:14:06,110 --> 00:14:11,830 E você pode fazer chamadas locais no seu Docker Engine. 236 00:14:11,830 --> 00:14:14,040 Ou chamadas remotas para motores remotos. 237 00:14:14,040 --> 00:14:16,600 238 00:14:16,600 --> 00:14:19,590 Ele usa HTTP, como Mencionei anteriormente. 239 00:14:19,590 --> 00:14:24,200 Há um cliente GUI chamada Kitematic de Docker. 240 00:14:24,200 --> 00:14:26,390 E há definitivamente um monte de outras pessoas 241 00:14:26,390 --> 00:14:29,740 que estão construindo um monte de GUIs que, basicamente, implementam 242 00:14:29,740 --> 00:14:32,980 alguns HTTP chama para conversar Engine. 243 00:14:32,980 --> 00:14:35,920 244 00:14:35,920 --> 00:14:39,280 >> Apenas alguns exemplos de comandos. 245 00:14:39,280 --> 00:14:44,620 Se você fizer versão Docker, seria mostrar-lhe a versão do cliente, bem como 246 00:14:44,620 --> 00:14:47,030 a versão do servidor. 247 00:14:47,030 --> 00:14:49,500 Se você fizer isso ele vai Informação Docker dizer-lhe todas as informações 248 00:14:49,500 --> 00:14:54,300 sobre quantos contentores estão em execução ou criado, quantas imagens que você tem, 249 00:14:54,300 --> 00:14:56,530 e assim por diante e assim por diante. 250 00:14:56,530 --> 00:15:01,850 >> Aqui eu tenho, no lado de última caixa, eu tenho doutor prazo. 251 00:15:01,850 --> 00:15:04,970 Então é assim que eu sou, na verdade, criando recipiente. 252 00:15:04,970 --> 00:15:08,960 E eu estou dando-lhe a ecoar Olá Mundo e dormir por um segundo e outros enfeites. 253 00:15:08,960 --> 00:15:12,830 E você pode ver o resultado. Portanto, é em curso. 254 00:15:12,830 --> 00:15:16,930 E semelhante ao ps Linux, você pode ver Todos os processos, e, neste caso, 255 00:15:16,930 --> 00:15:18,540 todos os recipientes em execução. 256 00:15:18,540 --> 00:15:23,430 Essa é remeter para o recipiente I acabou de criar. 257 00:15:23,430 --> 00:15:27,560 >> Então, isso é muito importante porque, como, ele pode ser um pouco confuso. 258 00:15:27,560 --> 00:15:33,050 Assim, as imagens são o read-only coleção de arquivos, certo? 259 00:15:33,050 --> 00:15:37,000 Eles são o que nosso recipiente se baseia. 260 00:15:37,000 --> 00:15:40,340 Mas eles estão apenas só de leitura. 261 00:15:40,340 --> 00:15:44,330 Então você começa uma imagem de base com. 262 00:15:44,330 --> 00:15:50,180 Ele tende a imitar SO, sendo assim Imagem de base outros enfeites Ubuntu, CentOS,. 263 00:15:50,180 --> 00:15:53,990 E então você começa a construir em cima de que, certas camadas, que comporá 264 00:15:53,990 --> 00:16:00,010 sua imagem final, o resultado final aqui. 265 00:16:00,010 --> 00:16:03,220 >> E cada uma dessas camadas deve ter uma imagem de pai 266 00:16:03,220 --> 00:16:06,690 a que faz referência quando se realmente quer criar. 267 00:16:06,690 --> 00:16:09,922 Eles são imutáveis, no sentido que porque eles são somente leitura, 268 00:16:09,922 --> 00:16:11,630 você não pode realmente alterá-los. 269 00:16:11,630 --> 00:16:17,540 Você pode usá-los para criar uma recipiente a partir de uma imagem, que 270 00:16:17,540 --> 00:16:23,530 vai chamar toda a subsequente imagens necessárias debaixo dela. 271 00:16:23,530 --> 00:16:26,400 >> Você pode fazer alterações a uma camada diferente, 272 00:16:26,400 --> 00:16:28,810 é uma camada de reescrita eu vou falar em um segundo. 273 00:16:28,810 --> 00:16:31,350 Mas cada uma destas camadas não são alteradas. 274 00:16:31,350 --> 00:16:34,300 275 00:16:34,300 --> 00:16:38,670 Basicamente imagens usar algo chamada União do sistema de arquivos, UFS. 276 00:16:38,670 --> 00:16:42,280 E há armazenamento diferente backends que utilizam esta tecnologia. 277 00:16:42,280 --> 00:16:49,430 E o que isso significa é que ele reúne os sistemas de arquivos distintos 278 00:16:49,430 --> 00:16:51,190 para torná-los olhar como um. 279 00:16:51,190 --> 00:16:54,460 >> Então você pode realmente, a partir de perspectiva de aplicação, 280 00:16:54,460 --> 00:16:59,570 você tem um topo de uma exibição que mostra todo o sistema de arquivo diferente necessário 281 00:16:59,570 --> 00:17:01,120 para esse aplicativo para ser executado. 282 00:17:01,120 --> 00:17:04,400 Mas eles são realmente, por isso, eles são realmente em locais separados 283 00:17:04,400 --> 00:17:06,410 e sendo utilizada pela outros recipientes, bem. 284 00:17:06,410 --> 00:17:09,569 285 00:17:09,569 --> 00:17:14,410 >> Então, como você pode ver aqui que se começarmos a imagem daemon com 286 00:17:14,410 --> 00:17:18,619 como uma imagem de base, e em seguida nós vamos e adicionar [? emacs?] 287 00:17:18,619 --> 00:17:20,720 e, em seguida, isso é outra camada. 288 00:17:20,720 --> 00:17:21,916 E em seguida, adicione Apache. 289 00:17:21,916 --> 00:17:22,790 Essa é outra camada. 290 00:17:22,790 --> 00:17:25,470 E então passamos a Recipiente de que. 291 00:17:25,470 --> 00:17:29,760 Cada uma dessas imagens, cada uma dessas camadas, 292 00:17:29,760 --> 00:17:35,530 é diferente e pode ser reutilizados por outros recipientes. 293 00:17:35,530 --> 00:17:40,070 >> Se você olhar para os próprios recipientes, eles são de alguma forma, como VM-like, 294 00:17:40,070 --> 00:17:41,930 mas não tratado ao mesmo tempo. 295 00:17:41,930 --> 00:17:49,180 Então, eles não têm, tecnicamente, o sistema operacional completo debaixo deles. 296 00:17:49,180 --> 00:17:52,630 Eles usam o kernel do único do sistema operacional hospedeiro. 297 00:17:52,630 --> 00:17:54,440 E eles construir em cima disso. 298 00:17:54,440 --> 00:17:56,250 Eles imitam em sua aparência. 299 00:17:56,250 --> 00:18:00,710 Eles imitam seus arquivos raiz sistema do sistema operativo. 300 00:18:00,710 --> 00:18:04,930 Mas eles realmente não estão replicando. 301 00:18:04,930 --> 00:18:12,080 >> Assim, em vez de ter camadas imutáveis, a última camada, que é o recipiente 302 00:18:12,080 --> 00:18:14,690 em si, é uma camada de leitura e escrita. 303 00:18:14,690 --> 00:18:17,350 Que também executa os processos de sua aplicação. 304 00:18:17,350 --> 00:18:23,530 E depende das camadas subjacentes. 305 00:18:23,530 --> 00:18:26,730 Cada recipiente é criado a partir de uma imagem. 306 00:18:26,730 --> 00:18:32,450 E que a imagem pode ser uma única camada de imagem ou multicamada. 307 00:18:32,450 --> 00:18:37,200 >> E quero ressaltar aqui Docker que usa pesadamente, 308 00:18:37,200 --> 00:18:40,370 ou é baseado em Copy-On-Write mecanismo. 309 00:18:40,370 --> 00:18:44,350 De modo que, na verdade, se você não for fazer mudanças para o recipiente, 310 00:18:44,350 --> 00:18:45,930 ele não vai tomar espaço extra. 311 00:18:45,930 --> 00:18:49,600 Então, isso é basicamente como você resumir a Copy-On-Write. 312 00:18:49,600 --> 00:18:53,820 Ele vai definitivamente acelerar o tempo de inicialização para o recipiente. 313 00:18:53,820 --> 00:18:56,300 Porque se você não está fazendo alterações no recipiente, 314 00:18:56,300 --> 00:18:57,800 ele está utilizando o que já está lá. 315 00:18:57,800 --> 00:19:01,130 316 00:19:01,130 --> 00:19:02,955 >> Então, como ele realmente funciona. 317 00:19:02,955 --> 00:19:06,920 318 00:19:06,920 --> 00:19:14,240 Parte do que é como, agora, utiliza, pelo menos, dois do kernel tecla 319 00:19:14,240 --> 00:19:14,820 características. 320 00:19:14,820 --> 00:19:17,660 E isso é basicamente o que criado esse nível de isolamento 321 00:19:17,660 --> 00:19:19,550 para os próprios contentores. 322 00:19:19,550 --> 00:19:22,290 Essas características são namespaces e cgroups. 323 00:19:22,290 --> 00:19:29,870 Então, namespaces são uma forma de criar recursos isolados, 324 00:19:29,870 --> 00:19:36,290 de modo que dentro do próprio recipiente, só você pode ver certos recursos. 325 00:19:36,290 --> 00:19:40,030 Tais como a interface de rede ou os determinados usuários ou outros enfeites. 326 00:19:40,030 --> 00:19:44,160 >> E aqueles só são visíveis e só acessível no interior do recipiente. 327 00:19:44,160 --> 00:19:48,290 Cgroup sobre os outros limites laterais como você usa esses recursos. 328 00:19:48,290 --> 00:19:50,950 CPU, memória e disco. 329 00:19:50,950 --> 00:19:53,900 Quando você pode ir, eu Quer dizer, na verdade, essas são 330 00:19:53,900 --> 00:19:57,410 características que foram desenvolvidas por-- eles são parte do kernel Linux. 331 00:19:57,410 --> 00:20:01,800 Assim, eles não foram reinventados por ou recriado por Docker. 332 00:20:01,800 --> 00:20:03,770 Docker usa-los. 333 00:20:03,770 --> 00:20:05,560 >> O que realmente fez Doctor aqui é, na verdade, 334 00:20:05,560 --> 00:20:08,680 criação orquestrada namespaces para cada recipiente 335 00:20:08,680 --> 00:20:13,320 e criando os cgroups de modo que seja ridiculamente fácil para criar recipientes 336 00:20:13,320 --> 00:20:14,870 usando esses recursos. 337 00:20:14,870 --> 00:20:22,910 Claro que, como eu descrevi anteriormente, União File Systems e Copy-on-write verdadeiramente 338 00:20:22,910 --> 00:20:26,810 ajudar a velocidade eo disco utilização de recipientes. 339 00:20:26,810 --> 00:20:28,917 >> E uma vez que você começa o seu mãos em torno de Docker, 340 00:20:28,917 --> 00:20:32,000 você vai ver o quão rápido ele é realmente girar recipientes e lágrima 341 00:20:32,000 --> 00:20:32,500 los para baixo. 342 00:20:32,500 --> 00:20:36,060 343 00:20:36,060 --> 00:20:40,230 Então, se você pode perguntar, como pode você realmente construir imagens? 344 00:20:40,230 --> 00:20:45,940 Nós construir imagens através de um processo de criação de recipientes e fazendo mudanças, alterando 345 00:20:45,940 --> 00:20:50,220 eles, e comprometendo- para se tornar uma imagem. 346 00:20:50,220 --> 00:20:54,330 >> Portanto, é uma galinha e referência ovo aqui, 347 00:20:54,330 --> 00:20:57,350 porque todos os recipientes entrem a partir de imagens e imagens vêm 348 00:20:57,350 --> 00:21:00,270 a partir de recipientes cometidos, para a maior parte. 349 00:21:00,270 --> 00:21:03,830 Há três opções para criar imagens. 350 00:21:03,830 --> 00:21:06,580 Eu estou indo para descrever o primeiro eo último. 351 00:21:06,580 --> 00:21:10,060 Você pode manualmente ir e executar o recipiente 352 00:21:10,060 --> 00:21:14,280 e fazer essas mudanças, como você faria em qualquer VM 353 00:21:14,280 --> 00:21:17,060 ou qualquer sistema operacional, tais como a instalação de novos binários, 354 00:21:17,060 --> 00:21:19,370 acrescentando sistemas de arquivos, e outros enfeites. 355 00:21:19,370 --> 00:21:22,620 >> E então você sair, como você pode ver lá em cima. 356 00:21:22,620 --> 00:21:24,330 Estou saindo meu recipiente. 357 00:21:24,330 --> 00:21:26,050 E então eu estou fazendo Docker cometer. 358 00:21:26,050 --> 00:21:28,390 E eu estou cometendo isso. 359 00:21:28,390 --> 00:21:31,560 Você pode ver que o número aqui é apenas um UUID, ou o primeiro 12 360 00:21:31,560 --> 00:21:32,810 bits do UUID. 361 00:21:32,810 --> 00:21:34,320 Ou bytes de o UUID. 362 00:21:34,320 --> 00:21:35,770 E então eu estou chamando minha imagem. 363 00:21:35,770 --> 00:21:39,510 Então, agora cuida de Docker gravar tudo o que eu fiz 364 00:21:39,510 --> 00:21:42,830 e criar o novo imagem com base nisso. 365 00:21:42,830 --> 00:21:47,080 366 00:21:47,080 --> 00:21:52,560 >> Eu não vou falar sobre o arquivo tar, mas há uma maneira você pode obter um único, 367 00:21:52,560 --> 00:21:58,200 criar um único, ou fazer uma única imagem da camada usando tarballs. 368 00:21:58,200 --> 00:22:02,650 O que eu vou falar sobre isso e que é usado principalmente hoje, 369 00:22:02,650 --> 00:22:03,270 é Dockerfile. 370 00:22:03,270 --> 00:22:07,260 Que é tecnicamente o primeiro passo automatizado, por si só Docker. 371 00:22:07,260 --> 00:22:11,920 Então Dockerfiles são coisas que você está vai ver em um monte de repos GitHub 372 00:22:11,920 --> 00:22:13,150 hoje. 373 00:22:13,150 --> 00:22:16,420 É basicamente apenas um arquivo de texto descrevendo 374 00:22:16,420 --> 00:22:19,780 exatamente como construir uma imagem. 375 00:22:19,780 --> 00:22:25,540 >> E para cada linha, ele realmente cria o recipiente, que executa linha, 376 00:22:25,540 --> 00:22:30,480 compromete que um recipiente em nova imagem, e você, basicamente, 377 00:22:30,480 --> 00:22:36,160 usá-lo para todas as operações subseqüentes até chegar à última imagem. 378 00:22:36,160 --> 00:22:39,260 Que é basicamente o acabar objectivo aqui, o fim. 379 00:22:39,260 --> 00:22:42,420 E depois que você exec-- depois de escrever seu Dockerfile, que 380 00:22:42,420 --> 00:22:46,750 é puramente em texto, você faz um Docker e construir o nome da imagem. 381 00:22:46,750 --> 00:22:50,000 >> E você aponta para que essa é onde a é a Dockerfile. 382 00:22:50,000 --> 00:22:56,570 E você pode esperar para ver minha imagem como uma imagem que você tem localmente. 383 00:22:56,570 --> 00:22:59,100 Então, isso é apenas visual exemplo do que se passa. 384 00:22:59,100 --> 00:23:00,820 Você começa uma imagem de base com. 385 00:23:00,820 --> 00:23:05,150 Você executar isso em um recipiente que não altera a imagem base em si. 386 00:23:05,150 --> 00:23:08,310 Mas, em vez cria um reescrever a camada em cima dela 387 00:23:08,310 --> 00:23:10,340 onde você fazer as mudanças, em que se comprometer 388 00:23:10,340 --> 00:23:15,050 e você repita o processo até você começa a sua imagem final. 389 00:23:15,050 --> 00:23:20,980 >> E ao fazê-lo, todas as demais compilações processo pode usar as mesmas camadas 390 00:23:20,980 --> 00:23:23,870 e, basicamente, a same-- Docker armazena em cache essas camadas. 391 00:23:23,870 --> 00:23:30,040 Assim que, se eu estou fazendo exatamente o mesmo processo, mas em vez de instalar PHP, 392 00:23:30,040 --> 00:23:31,540 Estou instalando Python. 393 00:23:31,540 --> 00:23:34,210 Vai usar o Apache e Ubuntu. 394 00:23:34,210 --> 00:23:39,570 Então, de que maneira você está utilizando seu disco. 395 00:23:39,570 --> 00:23:42,330 Ele está utilizando o cache e imagens disponíveis lá. 396 00:23:42,330 --> 00:23:45,320 397 00:23:45,320 --> 00:23:48,840 >> A parte final é o registro, que é como você distribuir suas imagens. 398 00:23:48,840 --> 00:23:52,710 E, como já referi anteriormente, há uma versão Nuvem dele, 399 00:23:52,710 --> 00:23:54,290 que é Docker Hub. 400 00:23:54,290 --> 00:23:57,550 Você pode ir e explorar uma grande quantidade de, basicamente 401 00:23:57,550 --> 00:24:04,900 é um produto público que SAS você ainda pode ter imagens privadas, 402 00:24:04,900 --> 00:24:06,590 mas há um monte de imagens públicas. 403 00:24:06,590 --> 00:24:10,580 Na verdade, é ilimitada, você pode empurre imagens públicas ilimitadas lá. 404 00:24:10,580 --> 00:24:13,730 E é assim que puder colaborar com sua equipe. 405 00:24:13,730 --> 00:24:17,159 >> Você pode apenas apontá-los em você repo e eles podem fazer o download ou a sua imagem 406 00:24:17,159 --> 00:24:18,200 e eles podem fazer o download. 407 00:24:18,200 --> 00:24:21,140 408 00:24:21,140 --> 00:24:24,990 Então, o suficiente com a conversa. 409 00:24:24,990 --> 00:24:29,110 Quem quiser ver algumas demos bem rápido? 410 00:24:29,110 --> 00:24:31,330 Tudo certo. 411 00:24:31,330 --> 00:24:34,050 Então aqui eu tenho. 412 00:24:34,050 --> 00:24:37,480 Ca vocês ver minha tela? 413 00:24:37,480 --> 00:24:38,390 Tudo certo. 414 00:24:38,390 --> 00:24:45,810 >> Então, eu tenho Docker correndo aqui, então eu pode verificar it's-- Esta é a versão 415 00:24:45,810 --> 00:24:47,510 de Docker que está sendo executado. 416 00:24:47,510 --> 00:24:49,320 Informação pode fazer Docker. 417 00:24:49,320 --> 00:24:55,730 Confira todas as informações sobre quantas eles têm imagens, e assim por diante e assim por diante. 418 00:24:55,730 --> 00:24:58,890 Docker PS, não há nada em execução. 419 00:24:58,890 --> 00:25:00,570 Concatenado aqueles. 420 00:25:00,570 --> 00:25:06,370 >> Então, a primeira coisa que eu quero fazer é mostrar como você pode facilmente executar um recipiente. 421 00:25:06,370 --> 00:25:09,350 Assim, a beleza sobre Doutor prazo, se ele realmente 422 00:25:09,350 --> 00:25:14,700 não encontrar uma imagem localmente, por padrão, ele fala ao Doutor Hub 423 00:25:14,700 --> 00:25:17,240 e tenta encontrá-lo lá e downloads isso por você. 424 00:25:17,240 --> 00:25:22,820 Por isso, inclui um Docker comando puxar, naturalmente. 425 00:25:22,820 --> 00:25:26,130 >> Então, se eu faço um Docker prazo, Olá-mundo. 426 00:25:26,130 --> 00:25:28,890 427 00:25:28,890 --> 00:25:31,200 Então, primeiro ele vai para tentar localizá-lo. 428 00:25:31,200 --> 00:25:36,140 Caso contrário, como você pode ver aqui, não poderia encontrá-lo localmente. 429 00:25:36,140 --> 00:25:41,830 Agora ele apenas puxou duas camadas que fez essa imagem e eu corri. 430 00:25:41,830 --> 00:25:45,440 O-Olá mundo é basicamente só saídas, o que você tem feito. 431 00:25:45,440 --> 00:25:47,680 Portanto, este é o mais fácil, um dos exemplos mais fáceis. 432 00:25:47,680 --> 00:25:53,840 Então, na verdade, eu apenas corri e rescindiu o recipiente bem rápido. 433 00:25:53,840 --> 00:25:59,500 >> Se eu quiser run-- e pela maneira, se Eu quero vez que, só assim você sabe, 434 00:25:59,500 --> 00:26:03,572 este é o tempo que leva para realmente girar para cima e contê-lo. 435 00:26:03,572 --> 00:26:05,030 Estamos medindo-a em milissegundos. 436 00:26:05,030 --> 00:26:10,600 Assim você pode ver o quanto isso pode realmente ajudá-lo não só em testes, 437 00:26:10,600 --> 00:26:13,200 mas também até mesmo a implantação. 438 00:26:13,200 --> 00:26:17,221 Então essa é uma breve nota sobre isso. 439 00:26:17,221 --> 00:26:18,970 A próxima coisa que eu sou vai fazer é, na verdade, 440 00:26:18,970 --> 00:26:21,930 executar uma imagem que eu já preparei. 441 00:26:21,930 --> 00:26:24,460 Assim janela de encaixe prazo. 442 00:26:24,460 --> 00:26:27,240 -d é apenas uma bandeira a dizer que ele seja executado em segundo plano. 443 00:26:27,240 --> 00:26:30,290 E -p atribui determinadas portas. 444 00:26:30,290 --> 00:26:32,670 Porque, por padrão, o recipientes são isolados, 445 00:26:32,670 --> 00:26:36,080 então você tem que especificar exatamente como ele pode acessá-los. 446 00:26:36,080 --> 00:26:41,150 E, neste caso, estou dizendo Docker para mapear uma porta aleatória no host 447 00:26:41,150 --> 00:26:44,560 a uma porta especificada dentro o próprio recipiente. 448 00:26:44,560 --> 00:26:47,130 449 00:26:47,130 --> 00:26:56,460 E isso é basicamente onde o image-- espero que este é o caminho certo. 450 00:26:56,460 --> 00:27:01,780 >> Então, ele faz downloads paralelos cada dessas camadas como você pode ver aqui. 451 00:27:01,780 --> 00:27:06,949 Aqueles são das camadas fazendo a imagem final que eu construí. 452 00:27:06,949 --> 00:27:08,115 Vai levar um segundo. 453 00:27:08,115 --> 00:27:11,290 454 00:27:11,290 --> 00:27:12,370 E pronto. 455 00:27:12,370 --> 00:27:16,590 >> Portanto, agora se eu fizer um ps janela de encaixe, que deveria ver algo que está sendo executado. 456 00:27:16,590 --> 00:27:22,250 I deve ver o ID, a imagem que este foi baseado fora, 457 00:27:22,250 --> 00:27:23,880 e o comando que foi executado. 458 00:27:23,880 --> 00:27:28,720 E como acessá-lo é basicamente você ir a essa porta. 459 00:27:28,720 --> 00:27:33,240 Então, eu estou indo para ir a-- este é que eu estou executando-o em AWS. 460 00:27:33,240 --> 00:27:37,150 Eu estou indo para ir para 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 aqui vamos nós. 464 00:27:41,120 --> 00:27:44,550 >> Portanto, esta é realmente apenas um serviço web que mostra 465 00:27:44,550 --> 00:27:46,240 que recipiente que está a ser servido a partir. 466 00:27:46,240 --> 00:27:50,450 Então você pode ver que ele é de recipiente a9f. 467 00:27:50,450 --> 00:27:52,850 E aqui esta é a nome do contêiner. 468 00:27:52,850 --> 00:27:56,550 Então vocês podem ver o quão rápido ele foi, na verdade, não só mas também puxar 469 00:27:56,550 --> 00:28:00,440 implantar esse recipiente. 470 00:28:00,440 --> 00:28:05,070 >> Agora, o próximo passo é a olhar para Dockerfiles 471 00:28:05,070 --> 00:28:09,430 e como nós podemos, na verdade, construir novas imagens. 472 00:28:09,430 --> 00:28:15,250 Eu só estou indo para ir buscar clone, uma sample Dockerfile com base no anteriormente 473 00:28:15,250 --> 00:28:17,755 diagrama, o único a Apache e PHP. 474 00:28:17,755 --> 00:28:26,740 475 00:28:26,740 --> 00:28:28,140 Esperemos que eu me lembro do meu repo. 476 00:28:28,140 --> 00:28:36,410 477 00:28:36,410 --> 00:28:38,750 >> Então, eu tenho meu repositório agora. 478 00:28:38,750 --> 00:28:43,080 E você vai ver muito isso na verdade. 479 00:28:43,080 --> 00:28:45,110 Eu não instalar árvore. 480 00:28:45,110 --> 00:28:48,700 >> Então, basicamente, você vai ver como a documentação do código-fonte em torno de 481 00:28:48,700 --> 00:28:51,240 -lo, e em seguida, um Dockerfile em como realmente empacotá-lo. 482 00:28:51,240 --> 00:28:57,970 Então é só uma amostra PHP que ecoa Olá CS50. 483 00:28:57,970 --> 00:29:01,550 >> Então, se eu quiser para executá-lo, Eu vou fazer de compilação janela de encaixe. 484 00:29:01,550 --> 00:29:03,370 Eu tenho que construir primeiro. 485 00:29:03,370 --> 00:29:12,420 Eu estou indo para nomeá-la demo_cs50. 486 00:29:12,420 --> 00:29:16,470 E você precisa de uma tag a ele também. 487 00:29:16,470 --> 00:29:19,802 Então, vamos chamá-lo v1 dot. 488 00:29:19,802 --> 00:29:21,760 Então, como eu descrevi anteriormente, o que estou fazendo hoje 489 00:29:21,760 --> 00:29:26,840 é que eu estou dizendo para ir Docker uso isso--, na verdade, desculpe, meu mau. 490 00:29:26,840 --> 00:29:29,450 491 00:29:29,450 --> 00:29:32,500 Nós não dê uma olhada no próprio Dockerfile. 492 00:29:32,500 --> 00:29:39,020 Assim, as únicas coisas aqui são index.php, bem como o arquivo leia-me 493 00:29:39,020 --> 00:29:39,810 e um Dockerfile. 494 00:29:39,810 --> 00:29:44,600 >> Então, se você dê uma olhada o Dockerfile, por isso é 495 00:29:44,600 --> 00:29:47,150 muito semelhante ao que Eu descrevi anteriormente. 496 00:29:47,150 --> 00:29:51,220 É apenas um monte de etapas que executa Docker 497 00:29:51,220 --> 00:29:56,330 criando e destruindo recipientes e [? contando?]-los em uma imagem. 498 00:29:56,330 --> 00:29:59,570 >> E, basicamente, você pode see-- [inaudível] que aqui-- 499 00:29:59,570 --> 00:30:04,340 mas esta é a partir do repo local. 500 00:30:04,340 --> 00:30:06,410 Ele vai ir e agarrar index.php. 501 00:30:06,410 --> 00:30:10,970 Então, esse é o único código fonte que são na verdade parte do seu aplicativo. 502 00:30:10,970 --> 00:30:16,800 Tudo isto são basicamente canalização do sistema operacional, 503 00:30:16,800 --> 00:30:21,460 recebendo os pacotes corretamente e Apache e PHP, e outros enfeites. 504 00:30:21,460 --> 00:30:26,950 Mas este é, na verdade, tendo index.php e cometê-lo para dentro do recipiente, 505 00:30:26,950 --> 00:30:28,210 na imagem. 506 00:30:28,210 --> 00:30:33,120 >> Portanto, se você vá em frente e execute o comando, fazendo o seguinte, 507 00:30:33,120 --> 00:30:36,155 ele é, na verdade, going--, isto pode demorar um pouco. 508 00:30:36,155 --> 00:30:40,870 509 00:30:40,870 --> 00:30:42,455 Esperemos que não demore muito. 510 00:30:42,455 --> 00:30:45,129 511 00:30:45,129 --> 00:30:46,170 Assim você pode ver as etapas. 512 00:30:46,170 --> 00:30:49,320 E eu encorajá-lo a ir de volta para casa hoje e experimentá-lo. 513 00:30:49,320 --> 00:30:51,280 E Mano irá descrever exatamente como você fazer isso. 514 00:30:51,280 --> 00:30:57,810 Mas é realmente ótimo para ver exatamente o que está acontecendo nos bastidores. 515 00:30:57,810 --> 00:31:02,420 Mas é ridiculamente fácil de construir imagens e implantá-las usando Docker. 516 00:31:02,420 --> 00:31:12,170 517 00:31:12,170 --> 00:31:14,050 >> Está demorando um pouco mais do que eu esperava. 518 00:31:14,050 --> 00:31:29,085 519 00:31:29,085 --> 00:31:32,690 >> Vamos ver o que acontece quando vocę-- esfriar. 520 00:31:32,690 --> 00:31:36,260 Então, como você pode ver, cada uma dessas etapas representam linhas no Dockerfile. 521 00:31:36,260 --> 00:31:42,570 E aqui que mostra construiu com sucesso esta imagem. 522 00:31:42,570 --> 00:31:46,480 >> Então, se eu faço imagens Estivador, eu vou ver todas as imagens que eu tenho localmente. 523 00:31:46,480 --> 00:31:52,160 E um deles é chamado de meu nome de usuário eo nome da imagem, 524 00:31:52,160 --> 00:31:56,050 e a etiqueta de representing-- principalmente é uma marca de versão. 525 00:31:56,050 --> 00:31:58,040 >> Portanto, agora se eu quero correr -lo, eu faço janela de encaixe prazo. 526 00:31:58,040 --> 00:32:06,040 527 00:32:06,040 --> 00:32:14,960 E eu só quero fazer um -P -d. Faça v1. 528 00:32:14,960 --> 00:32:18,500 Assim eu posso ver agora que eu tenho dois recipientes de execução, o que eu apenas 529 00:32:18,500 --> 00:32:21,230 criado e Olá Docker um que eu tenho passado. 530 00:32:21,230 --> 00:32:24,320 >> E você pode ver aqui que atribuiu uma porta diferente. 531 00:32:24,320 --> 00:32:30,710 Então, se eu ir para o mesmo IP, mas atribuí-lo um port-- diferente espero que eu não fiz. 532 00:32:30,710 --> 00:32:33,060 Então, agora isso é aplicação que eu apenas implantado. 533 00:32:33,060 --> 00:32:35,980 534 00:32:35,980 --> 00:32:43,900 >> Se eu quiser fazer alterações, I pode editar rapidamente o código-fonte 535 00:32:43,900 --> 00:32:49,050 e faça o seguinte. 536 00:32:49,050 --> 00:32:55,170 Vamos fazer Olá Harvard. 537 00:32:55,170 --> 00:32:57,989 Então agora o que está acontecendo a acontecer é que eu sou 538 00:32:57,989 --> 00:32:59,905 vai marcá-lo com um diferente version-- oh, 539 00:32:59,905 --> 00:33:03,080 não esta guy-- marcá-lo com uma versão diferente. 540 00:33:03,080 --> 00:33:05,735 E você está indo see-- fazer vocês esperam 541 00:33:05,735 --> 00:33:11,020 para ter a mesma quantidade de tempo construí-lo uma segunda vez, ou não? 542 00:33:11,020 --> 00:33:14,470 Tudo bem, e ninguém sabe por quê? 543 00:33:14,470 --> 00:33:15,020 Fala. 544 00:33:15,020 --> 00:33:16,350 >> AUDIÊNCIA: [inaudível] 545 00:33:16,350 --> 00:33:19,830 >> NICOLA kabar: É basicamente nós só mudam um dos passos mais tarde. 546 00:33:19,830 --> 00:33:23,110 E, portanto, ele vai usar o cache e utilizar cada uma dessas camadas. 547 00:33:23,110 --> 00:33:27,080 E isso é realmente alguns dos características do assassino de Docker 548 00:33:27,080 --> 00:33:32,930 é como ele realmente utiliza e reutilizações assumir 549 00:33:32,930 --> 00:33:36,950 o disco para o mesmo peças exatas de informações. 550 00:33:36,950 --> 00:33:40,700 >> Então, se nós fazemos a mesma coisa, demorou apenas alguns segundos. 551 00:33:40,700 --> 00:33:48,860 Se queremos redeploy-- agora Eu deveria ter três recipientes. 552 00:33:48,860 --> 00:33:56,160 Mas este está sendo servido em um as-- sete. 553 00:33:56,160 --> 00:33:58,860 Portanto, agora é o terceiro recipiente. 554 00:33:58,860 --> 00:34:02,580 Todo mundo entende o que eu fiz aqui? 555 00:34:02,580 --> 00:34:06,320 >> Portanto, agora se você deseja compartilhar essa recipiente bem rápido com os seus amigos, 556 00:34:06,320 --> 00:34:14,840 você pode apenas fazer estivador empurrar o nome do contêiner, eu espero. 557 00:34:14,840 --> 00:34:20,130 Então, agora ele vai empurrá-lo para-- Eu não estou assinado em aqui. 558 00:34:20,130 --> 00:34:33,511 559 00:34:33,511 --> 00:34:34,219 Me desculpe por isso. 560 00:34:34,219 --> 00:34:39,219 Mas eu não vou resolver isso agora. 561 00:34:39,219 --> 00:34:42,780 Mas, basicamente, que um comando é só ir até empurrá-lo. 562 00:34:42,780 --> 00:34:45,670 E você vai ser capaz de vê-lo se você vai para Docker Hub 563 00:34:45,670 --> 00:34:48,587 E você log in, você é vai ser capaz de vê-lo. 564 00:34:48,587 --> 00:34:50,420 E então você pode apenas apontar quem vai 565 00:34:50,420 --> 00:34:52,750 usar essa imagem para ir e puxe-o. 566 00:34:52,750 --> 00:34:55,460 E eles podem usá-lo. 567 00:34:55,460 --> 00:34:57,760 >> Com isso, esperamos Eu meio que demonstraram 568 00:34:57,760 --> 00:35:01,230 como é fácil trabalhar com Docker. 569 00:35:01,230 --> 00:35:06,610 E eu estou indo só para devolvê-lo para Mano. 570 00:35:06,610 --> 00:35:11,760 E ele vai levá-lo a partir daqui. 571 00:35:11,760 --> 00:35:13,990 >> MANO MARCAS: Tudo bem obrigado, obrigado Nico. 572 00:35:13,990 --> 00:35:18,700 573 00:35:18,700 --> 00:35:20,614 E daí? 574 00:35:20,614 --> 00:35:24,410 Então, uma das coisas que eu queria fazer é colocar juntos 575 00:35:24,410 --> 00:35:28,820 porque este é um importante-- Docker por que e por quê 576 00:35:28,820 --> 00:35:33,000 recipientes são tal importante novo desenvolvimento, 577 00:35:33,000 --> 00:35:36,890 uma nova maneira de realmente fazer software. 578 00:35:36,890 --> 00:35:41,300 >> E antes que eu faço, eu vou apenas apresentar algumas estatísticas. 579 00:35:41,300 --> 00:35:42,790 Eu não vou ler tudo isso. 580 00:35:42,790 --> 00:35:52,540 Mas isso você mostra muito sobre como popular, este é na comunidade. 581 00:35:52,540 --> 00:35:56,310 As tecnologias Docker núcleo são de código aberto. 582 00:35:56,310 --> 00:36:03,560 Então, isso é Docker Engine, Compose, Swarm, um monte de outras coisas 583 00:36:03,560 --> 00:36:05,210 é tudo open source. 584 00:36:05,210 --> 00:36:10,590 E nós temos, o que eu fiz dizer, 1.300 colaboradores. 585 00:36:10,590 --> 00:36:15,630 Você está vendo agora, se você olhar para o número de vagas de emprego, a última vez 586 00:36:15,630 --> 00:36:19,640 nós olhamos, era cerca de 43.000 trabalho aberturas especificamente mencionando 587 00:36:19,640 --> 00:36:22,230 familiaridade com Docker. 588 00:36:22,230 --> 00:36:26,450 Centenas de milhões de imagens têm foi baixado do Docker Hub. 589 00:36:26,450 --> 00:36:31,870 E, bem, muito mais grandes stats. 590 00:36:31,870 --> 00:36:34,770 >> Para aqueles que estão curiosos, ele foi originalmente escrito em Python 591 00:36:34,770 --> 00:36:37,730 e depois reescrito em Go. 592 00:36:37,730 --> 00:36:40,320 E só se passaram abrir source-- é somente 593 00:36:40,320 --> 00:36:44,950 foi liberado para cerca de 2 anos e 1/2, o que significa que em 2 e 1/2 anos, 594 00:36:44,950 --> 00:36:48,020 temos visto uma quantidade enorme de crescimento e importância 595 00:36:48,020 --> 00:36:50,190 desta na comunidade. 596 00:36:50,190 --> 00:36:52,400 E assim eu quero falar um pouco sobre o porquê. 597 00:36:52,400 --> 00:36:54,940 598 00:36:54,940 --> 00:36:59,880 >> Então, só para reiterar algumas das Pontos-chave de Nico, Docker é rápido. 599 00:36:59,880 --> 00:37:00,630 É portátil. 600 00:37:00,630 --> 00:37:02,500 É reprodutível. 601 00:37:02,500 --> 00:37:06,130 E cria-se um ambiente padrão. 602 00:37:06,130 --> 00:37:13,370 >> E what-- esta é a minha cagado erradicar monólitos que slide-- 603 00:37:13,370 --> 00:37:17,990 ele está ajudando as pessoas fazem, que um lote da indústria de software 604 00:37:17,990 --> 00:37:21,400 comecei a fazer no início de 2000, está se movendo 605 00:37:21,400 --> 00:37:24,200 a partir destes monolítico aplicações individuais 606 00:37:24,200 --> 00:37:28,590 onde cada dependência tinha que ser testado antes de o aplicativo inteiro tinha 607 00:37:28,590 --> 00:37:31,280 para ser implantado, o que poderia significar um site 608 00:37:31,280 --> 00:37:36,240 só tem implantado uma vez a cada três meses, ou mais, 609 00:37:36,240 --> 00:37:42,650 a uma muito mais serviço arquitetura orientada 610 00:37:42,650 --> 00:37:46,090 ou em componentes tipo diferente de arquitetura de aplicação. 611 00:37:46,090 --> 00:37:48,610 E assim permitindo que estes tipo de arquiteturas 612 00:37:48,610 --> 00:37:52,250 que aproveitam Docker para executar nestes três 613 00:37:52,250 --> 00:37:58,450 principais áreas de desenvolvimento, que é o desenvolvimento de escrever seu código real, 614 00:37:58,450 --> 00:38:00,140 testar o seu código, e implantá-lo. 615 00:38:00,140 --> 00:38:03,000 616 00:38:03,000 --> 00:38:05,420 >> Então, por que isso é importante? 617 00:38:05,420 --> 00:38:09,920 Se você é um-- deixe-me dar um exemplo. 618 00:38:09,920 --> 00:38:13,600 Se você é um website desenvolvedor dispositivo, você é 619 00:38:13,600 --> 00:38:19,020 desenvolvimento de um site que é baseado no banco de dados que David produzido aqui. 620 00:38:19,020 --> 00:38:20,490 Desculpe David, eu estou te chamando para fora. 621 00:38:20,490 --> 00:38:22,984 622 00:38:22,984 --> 00:38:24,900 Se você queria para implantar a coisa toda, você 623 00:38:24,900 --> 00:38:28,870 tem que esperar sob um tradicional desenvolvimento de software monolítico 624 00:38:28,870 --> 00:38:32,710 ambiente, você teria que esperar até que ele foi feito com o banco de dados 625 00:38:32,710 --> 00:38:36,030 antes que você possa realmente fazer quaisquer alterações ao seu website. 626 00:38:36,030 --> 00:38:40,900 Você teria que reimplantar o Toda aplicação de fazê-lo. 627 00:38:40,900 --> 00:38:45,490 >> E o que Docker ajuda você a fazer é cada pessoa trabalho em componentes diferentes 628 00:38:45,490 --> 00:38:52,990 e atualizá-los como eles vão, apenas fazendo Certifique-se de que as interfaces permanecer o mesmo. 629 00:38:52,990 --> 00:38:56,350 Então, o que ele fez é que é deslocada pessoas 630 00:38:56,350 --> 00:39:03,950 de fazer estes maciço monolítico software que arquitetado 631 00:39:03,950 --> 00:39:07,610 implantado cada mês a um contínuo integração e desenvolvimento contínuo 632 00:39:07,610 --> 00:39:08,490 ambiente. 633 00:39:08,490 --> 00:39:12,580 >> Agora, isso não é exclusivo para Docker, mas Docker torna muito mais fácil, 634 00:39:12,580 --> 00:39:16,620 o que significa que você é, basicamente, constantemente implantando. 635 00:39:16,620 --> 00:39:20,690 Nós conversamos com empresas que são implantação de aplicativos voltados ao público 636 00:39:20,690 --> 00:39:30,180 milhares de vezes por dia, porque eles vêem o valor em apenas fazendo 637 00:39:30,180 --> 00:39:33,740 pequenas alterações, e contanto como ele é executado por meio dos testes, 638 00:39:33,740 --> 00:39:35,900 deixá-lo ir para fora em produção. 639 00:39:35,900 --> 00:39:41,890 Nico estava sempre me dizendo mais cedo que em muitos ambientes, 640 00:39:41,890 --> 00:39:46,580 o ciclo de vida normal de um recipiente é medido em segundos, 641 00:39:46,580 --> 00:39:50,460 Considerando uma máquina virtual pode ser medido em meses. 642 00:39:50,460 --> 00:39:54,590 643 00:39:54,590 --> 00:39:58,690 >> Eu queria tirar uma ligeira vire aqui, porque eu sou 644 00:39:58,690 --> 00:40:00,170 em uma instituição educacional. 645 00:40:00,170 --> 00:40:06,670 Eu queria dar um exemplo de como isso funciona em uma pesquisa educacional 646 00:40:06,670 --> 00:40:07,670 situação. 647 00:40:07,670 --> 00:40:10,930 Portanto, há uma organização chamados bioboxes. 648 00:40:10,930 --> 00:40:15,450 O DNA Bioboxes análise para os investigadores. 649 00:40:15,450 --> 00:40:22,029 >> Agora, o que eles descobriram foi que, quando um researcher-- e este não está 650 00:40:22,029 --> 00:40:24,070 a falha de qualquer especial researcher-- mas quando 651 00:40:24,070 --> 00:40:31,240 um pesquisador implantado um algoritmo para analisar, 652 00:40:31,240 --> 00:40:36,670 De modo particular, uma amostra de DNA, eles iriam escrever o software, 653 00:40:36,670 --> 00:40:39,980 publicar que, talvez para GitHub ou em outro lugar, 654 00:40:39,980 --> 00:40:42,680 e, em seguida, eles foram feitos. 655 00:40:42,680 --> 00:40:47,440 >> Bem, o problema foi que ele não era necessariamente reprodutível. 656 00:40:47,440 --> 00:40:51,610 Porque, a fim de compreender o software, 657 00:40:51,610 --> 00:40:54,830 que seria criado para o ambiente exata desenvolvimento 658 00:40:54,830 --> 00:41:00,460 que investigador que utilizado, geralmente seu laptop, ou um servidor, ou um conjunto de dados 659 00:41:00,460 --> 00:41:04,280 o centro que eles estavam usando. 660 00:41:04,280 --> 00:41:11,530 E, conseqüentemente, era muito difícil para reproduzir os resultados da investigação quando 661 00:41:11,530 --> 00:41:16,910 análise das amostras de ADN para olhar em coisas como incidence-- 662 00:41:16,910 --> 00:41:23,830 comparar incidência de ataques cardíacos com base em determinados genes estarem presentes, 663 00:41:23,830 --> 00:41:28,900 por exemplo, ou o risco de câncer, ou qualquer um dos outros tipos de coisas. 664 00:41:28,900 --> 00:41:33,900 >> Então, o que eles fizeram em vez foi eles começaram a criar recipientes. 665 00:41:33,900 --> 00:41:39,380 E você pode ir para bioboxes.org, é uma grande organização. 666 00:41:39,380 --> 00:41:43,900 E o que eles fazem é que eles produzem recipientes com base em pesquisas. 667 00:41:43,900 --> 00:41:46,840 E então, sempre que alguém envia em sua amostra, eles podem executá-lo. 668 00:41:46,840 --> 00:41:52,770 E tem todo o ambiente necessário para executar esse algoritmo 669 00:41:52,770 --> 00:41:55,370 e produzir os resultados. 670 00:41:55,370 --> 00:41:58,250 E eles estão descobrindo que eles são muito mais provável e mais 671 00:41:58,250 --> 00:42:01,300 mais rapidamente capaz de retornar resultados para as pessoas. 672 00:42:01,300 --> 00:42:06,860 >> E, na verdade, o que as pessoas estão fazendo está executando sua própria análise sobre o DNA, 673 00:42:06,860 --> 00:42:11,220 em que o envio para bioboxes, e então biobox só tem os dados, 674 00:42:11,220 --> 00:42:15,350 executa-lo contra a variedade recipientes de diferentes 675 00:42:15,350 --> 00:42:19,030 para ver resultados diferentes com base em pesquisa diferente. 676 00:42:19,030 --> 00:42:21,860 Portanto, é uma muito poderosa maneira em que os investigadores 677 00:42:21,860 --> 00:42:28,070 pode fazer uma única instância que permite outras pessoas para tentar reproduzir 678 00:42:28,070 --> 00:42:28,650 os resultados. 679 00:42:28,650 --> 00:42:31,710 680 00:42:31,710 --> 00:42:34,360 >> Então, como você começou? 681 00:42:34,360 --> 00:42:37,950 682 00:42:37,950 --> 00:42:39,800 Estamos bem suportado no Linux. 683 00:42:39,800 --> 00:42:43,070 Então, se você deseja instalar nada no Linux, 684 00:42:43,070 --> 00:42:45,620 você usar o seu padrão gerenciador de pacotes para instalar. 685 00:42:45,620 --> 00:42:47,600 Se você estiver usando um Debian, é get apt. 686 00:42:47,600 --> 00:42:50,500 CentOS é yum. 687 00:42:50,500 --> 00:42:53,500 Fedora da Red Hat é rpm-- Eu não me lembro. 688 00:42:53,500 --> 00:42:56,070 De qualquer forma, está tudo lá. 689 00:42:56,070 --> 00:42:59,610 Apoiamos uma grande variedade de distribuições Linux. 690 00:42:59,610 --> 00:43:01,150 Você pode verificar os para fora. 691 00:43:01,150 --> 00:43:06,370 >> Nós também temos opções para que você Pode ser executado em Mac ou Windows. 692 00:43:06,370 --> 00:43:10,670 Agora Nico mencionado anteriormente que foi suportado apenas em Linux. 693 00:43:10,670 --> 00:43:18,180 Isso é verdade porque precisa de um kernel do Linux. 694 00:43:18,180 --> 00:43:20,540 Mas, você pode ser executado em uma máquina virtual. 695 00:43:20,540 --> 00:43:25,290 E o que o Docker Toolbox faz, que você pode baixar, 696 00:43:25,290 --> 00:43:27,610 dá-lhe essa máquina virtual. 697 00:43:27,610 --> 00:43:37,260 >> Assim, apenas uma rápida 48 em segundo lugar, penso eu, a baixar. 698 00:43:37,260 --> 00:43:40,670 Você só procurar no Docker Caixa de ferramentas, transferi-lo para o Mac, 699 00:43:40,670 --> 00:43:43,910 e esta parte é de Claro acelerou porque quem 700 00:43:43,910 --> 00:43:47,620 quer assistir a um sinal de download? 701 00:43:47,620 --> 00:43:54,190 Instalação do Mac Padrão, e então você está 702 00:43:54,190 --> 00:43:59,795 vai ver Jerome colocar em sua senha. 703 00:43:59,795 --> 00:44:00,670 Isso é muito emocionante. 704 00:44:00,670 --> 00:44:03,510 705 00:44:03,510 --> 00:44:06,230 E, em seguida, ele instala um todo monte de ferramentas. 706 00:44:06,230 --> 00:44:10,010 E, particularmente, ele vai instalar uma linha de comando. 707 00:44:10,010 --> 00:44:14,220 E então você pode ver Jerome testando as suas imagens. 708 00:44:14,220 --> 00:44:19,050 709 00:44:19,050 --> 00:44:22,640 >> E, em seguida, com base nisso, você pode ver que o YouTube 710 00:44:22,640 --> 00:44:27,420 acha que Nico está interessado em Star Wars, O show Jimmy Kimmel, 711 00:44:27,420 --> 00:44:29,020 e eu acho que Ellen. 712 00:44:29,020 --> 00:44:34,130 Penso que último é um clipe de um show de Ellen. 713 00:44:34,130 --> 00:44:37,760 >> Então Docker Toolbox vem embora com mais do que apenas Máquina Docker. 714 00:44:37,760 --> 00:44:39,840 Então Docker Machine é a única coisa que ajuda 715 00:44:39,840 --> 00:44:43,710 você configurar um virtual máquina em seu Windows 716 00:44:43,710 --> 00:44:52,080 ou Mac-- sua caixa de Windows ou o Mac box-- e ajuda você a fazer o provisionamento, 717 00:44:52,080 --> 00:44:54,040 >> Mas ele também vem com Swarm e Compose, 718 00:44:54,040 --> 00:45:00,840 que são projetados para ajudá-lo a fazer grande implementações à escala de sua aplicação. 719 00:45:00,840 --> 00:45:04,000 Então, se você deseja gerenciar clusters de nós, 720 00:45:04,000 --> 00:45:08,450 aglomerados de contentores, compor e Swarm são a maneira de ir sobre isso. 721 00:45:08,450 --> 00:45:11,430 >> E, claro, ele vem com Docker Motor e Kitematic, 722 00:45:11,430 --> 00:45:13,250 o que é essa GUI desktop. 723 00:45:13,250 --> 00:45:17,060 Gostaria também de mencionar Docker Registro, que não está incluído na caixa de ferramentas, 724 00:45:17,060 --> 00:45:23,150 mas é uma maneira para que você execute o seu próprio registros de Docker Imagens como Docker 725 00:45:23,150 --> 00:45:28,970 Hub, mas você também pode simplesmente usar Docker Hub como uma maneira de fazer isso. 726 00:45:28,970 --> 00:45:32,955 >> E, reviravolta na história, você está vendo -lo funcionando em um recipiente. 727 00:45:32,955 --> 00:45:34,830 E é assim que nós somos distribuição de nossos slides. 728 00:45:34,830 --> 00:45:38,610 Toda essa apresentação é na verdade, um conjunto de slides em HTML. 729 00:45:38,610 --> 00:45:43,170 E ele está sendo executado em um contêiner, que você pode obter por-- 730 00:45:43,170 --> 00:45:45,596 >> NICOLA kabar: Sim, por isso é funcionando em tempo integral no meu Max. 731 00:45:45,596 --> 00:45:47,540 E eu estou apresentando a partir dele. 732 00:45:47,540 --> 00:45:50,910 E você acabou de fazer Docker depois você instalar o Toolbox. 733 00:45:50,910 --> 00:45:57,340 Você pode apenas fazer uma corrida de estivador e obtê-lo, e usar os slides. 734 00:45:57,340 --> 00:45:58,830 >> MANO MARCAS: E é isso. 735 00:45:58,830 --> 00:46:02,160 Por isso, agradeço a todos por terem vindo. 736 00:46:02,160 --> 00:46:03,990 E estamos felizes em responder a perguntas. 737 00:46:03,990 --> 00:46:07,810 Devo mencionar antes que alguém deixa lá é t-shirt por lá. 738 00:46:07,810 --> 00:46:10,940 Desculpe quem está assistindo isso em Livestream ou vídeo, 739 00:46:10,940 --> 00:46:12,820 mas temos Docker T-shirts por lá. 740 00:46:12,820 --> 00:46:16,250 E sabemos alunos Docker, e na minha experiência, 741 00:46:16,250 --> 00:46:18,940 professores também, como roupas livre. 742 00:46:18,940 --> 00:46:22,490 >> Então, obrigado a todos por terem vindo. 743 00:46:22,490 --> 00:46:27,050 E siga-nos no Twitter se você quiser, ou não. 744 00:46:27,050 --> 00:46:27,910 Eu não me importo. 745 00:46:27,910 --> 00:46:29,430 Também acompanhar Docker no Twitter. 746 00:46:29,430 --> 00:46:31,890 Isso também é interessante. 747 00:46:31,890 --> 00:46:32,990 E então é isso. 748 00:46:32,990 --> 00:46:33,490 Docker.com. 749 00:46:33,490 --> 00:46:35,410 Obrigado. 750 00:46:35,410 --> 00:46:39,360 >> [Aplausos] 751 00:46:39,360 --> 00:46:41,625