>> [Música tocando]
DAVID MALAN: Tudo bem.
Muito obrigado por terem vindo.
Este é seminário CS50 em encaixe, um tecnologia que nós mesmos e CS50 we
começaram a usar por algum tempo agora.
Então, meu nome é David Malan, I ensinar Introdução de Harvard
de Ciência da Computação.
Por muito anos, temos vindo a dar aos estudantes
do lado do cliente para download máquinas virtuais
onde eles fazem seus problemas sets.
Que temos agora a transição para um ambiente de nuvem
que realmente usa essa tecnologia chamado de encaixe, de tal modo que todo o CS50
os alunos agora têm a sua recipientes próprios Docker
que em breve você vai ouvir tudo.
>> Além disso, no servidor da CS50 cluster de lado, por muitos anos
estávamos usando servidor em nuvem da Amazon.
Nós estávamos correndo indivíduo máquinas virtuais.
Isso também, começamos a fazer a transição para essas coisas chamadas recipientes Docker
de modo a que todas as nossas aplicações são agora perfeitamente isoladas uma da outra.
Assim, por isso e muito mais, permitam-me apresentar nossos amigos, Nico e Mano,
da própria Docker.
NICOLA kabar: Obrigado, David.
Olá a todos.
Meu nome é Nico e este é Mano.
Somos de Docker.
Nós vamos estar falando about-- dando a vocês uma introdução para Docker,
e espero que, no final dessa conversa você pode perceber
o quanto você pode usar para médico oxalato seu desenvolvimento de aplicativos
e implantação.
>> Então, vamos começar reais rápido com algumas informações de fundo.
Descreva o Docker é tudo.
Como funciona?
Como é arquitetado?
Eu vou estar fazendo alguns demos.
E Mano vai ser descrevendo como você pode usar Docker
e dando-lhe os passos específicos como você pode começar.
>> Eu apreciaria se vocês podem segurar off para as suas perguntas para o final.
Dessa forma, eu poderia estar dirigindo-se àqueles perguntas durante a apresentação.
Então, vamos deixar algum tempo no final para perguntas.
>> Então, só real rápido, que tem na verdade, nunca trabalhou em Docker,
como jogado com ele?
Fantástica.
Frio.
Ótimo.
Então, eu vou começar com um pouco de história.
Então, de volta nos anos 90 e 2000s adiantados, basicamente,
como desenvolvedores web, desenvolvedores de aplicativos, quando eles foram para implantar um aplicativo
ele foi amarrado a nu metal.
Era um servidor.
Foi uma aplicação.
>> Tradicionalmente, um exemplo Seria como uma pilha LAMP,
onde você realmente teve que abrir o pool de recursos.
CPU, memória, disco, rede, instalação sistema operacional em cima disso.
Se você está servindo alguma coisa, se você está realmente tendo servidor web,
você precisa de algo como Apache para servi-lo.
>> Se o seu aplicativo precisa de banco de dados, backhand,
você instalar algo como MySQL, e assim por diante.
E se você precisar o tempo de execução, do PHP e trabalho PHP Python estavam lá.
E assim nós realmente tive que tomar essas medidas a fim
para obter o seu aplicativo instalado e funcionando.
>> Se você precisava de mais poder de computação que você, basicamente tive que chamar o seu Ops cara
ou galão para ir e acumular um novo peça de hardware, conectá-lo,
e você tem que repetir os processos de novo e de novo.
Portanto, este processo foi relativamente caro.
Definitivamente foi muito lento.
>> Foi ineficiente.
E em muitos casos, o seu hardware foi subutilizado.
Assim, no final dos anos 90 e início dos anos 2000, virtualização de hardware veio em frente.
E como você pode ver aqui no imagem, basicamente o que eles fizeram
é abstraída da piscina de recursos de hardware gratuitos
e tipo de servido aqueles para as camadas superiores,
Neste caso, um hóspede sistema operacional.
>> E toda a idéia de máquinas virtuais deparei
e que realmente ajudou Nuvem computação como a conhecemos hoje.
Então, o que quis dizer é que você pode executar várias VMs, que
significou várias pilhas, múltiplos aplicação em uma mesma máquina física.
>> Isso definitivamente ajudou com o velocidade de implementação do aplicativo.
Definitivamente com as despesas.
Você não tem que ir e gastar energia, tempo e recursos para rack
mais servidores para chegar a mais de computação.
E, na verdade, a velocidade de trazer os recursos para cima é muito mais rápido.
Ótimo.
>> Então nós resolvemos a fome no mundo, certo?
Não, não realmente.
Assim, a virtualização tanto quanto é realmente ajudou, resolver o problema,
ele realmente introduzido muitos desafios.
O hypervisor definitivamente introduzido um monte de complexidade,
manipulação aqueles subjacente conjunto de recursos.
>> É mais pesado no sentido de que antes você tinha um único sistema operacional que
é como três, quatro shows no disco.
Agora, se você tem 10 máquinas num único hardware
você tem que multiplicar esse pelo número de máquinas.
É definitivamente mais caro em um sentido você ainda
tem que obter licenciamento para a tecnologia de virtualização
se não é open source.
>> Mas, não vamos tomar todas as crédito de virtualização.
Porque o que aconteceu é que há uma monte de pilhas e lotes de software
tecnologias que foram habilitados pela rapidez com que você fosse capaz de obter
a recursos com a lança Cloud.
>> Então, hoje um único aplicativo ou serviço pode ser utilizando qualquer um dos seguintes tempos de execução
ou bases de dados.
PHP, Python, MySQL, Redis, outros enfeites.
Portanto, há um monte de complexidade nesta número de pilhas de realmente abrir
um único serviço.
E junto com isso, você tinha um monte de recursos subjacentes ou infra-estrutura
tipos para testar deploy e, basicamente, levar à produção desses aplicativos
que você está desenvolvendo.
>> Especialmente como suas equipes têm crescido trabalhar sobre essas aplicações,
há um monte de complexidade e os desafios
que foram trazidos para assegurar que o cycle-- basicamente aplicação
ciclo de desenvolvimento, é realmente bem sucedido.
Então, o fato de que a sua candidatura está trabalhando localmente no seu local de VM
não garante que o seu colega vai esperar os mesmos resultados.
>> E quando a equipe de operações é envolvido em tomar o que você tem
e implantá-lo em produção escala, também não há nenhuma garantia
que que realmente vai acontecer.
Então, isso nos deixa com um realmente big-- um monte de pontos de interrogação,
uma série de desafios, na verdade, enfrentado de forma semelhante nos dias.
E isso nos fez lembrar de a indústria naval.
>> Assim, a indústria naval teve um lote de mercadorias,
como você pode ver no lado esquerdo.
E no lado direito, há um monte de, basicamente,
maneiras de enviar esses produtos.
E o que acontece quando um casal pessoas reuniram-se e disse:
precisamos padronizar como nós realmente enviamos esses produtos.
E boom, você tem a contêiner de transporte intermodal.
>> Então, eles concordaram com a mais tamanhos comuns para o recipiente.
Como lidar com eles.
O método exato que você precisa para carregá-los e descarregá-los.
E, por conseguinte, que verdadeiramente ajudou a indústria naval.
Agora, mais de 90% foco transportados globalmente estão usando esses recipientes.
E isso definitivamente diminui as despesas, bem como
os danos devido ao transporte.
>> Então, tomamos o mesmo modelo e nós aplicar o software de desenvolvimento de dois app
Arquitectura, no sentido que conteinerização
tomou a virtualização para um nível acima.
Então, ao invés de fazer isso ao nível do hardware,
tornou-se mais de uma operação virtualização de nível de sistema.
>> E fazemos isso fornecendo cada aplicativo em seu próprio peso leve,
isolado, executável, e portátil, o mais importante,
uma maneira de realmente embalar tudo o que ele precisa ser executado.
Em qualquer lugar ele pode ser executado.
Assim, independentemente se você estiver executando-o em dev ambiente local, sua produção
ambiente, seu estadiamento ou testes.
Não importa o que subjacente infra-estrutura está lá,
você tinha um app de trabalho funcional.
>> Então, isso é exatamente o que, basicamente, recipientes fazer para esse problema.
Eles abordá-la por embalá-lo de tal maneira
que pode garantir que ele está implantado com sucesso, não importa onde ele vive.
Então, se você está indo como, Bob ainda é OK.
Se você está confuso com o que eu estou dizendo, Eu vou estar elaborando sobre isso.
>> Assim como faz em si Docker se encaixam nesse quadro?
Então Docker é uma plataforma aberta de forma fácil, enfatizar facilmente,
para construir navio, correr, portátil e leve auto
recipientes de aplicativos suficientes em qualquer lugar.
Então, se você tomar alguma coisa com este Discussão, visite o seguinte.
>> Se você tiver seu aplicativo em execução localmente e você desenvolveu-
no uso da plataforma Docker, esperar que ele seja implantado com sucesso.
Não importa qual é o infraestrutura subjacente.
Então, se você tem um Docker recipiente e está funcionando, então
enquanto há um Docker motor por outro side--
se a sua infra-estrutura de operação está usando qualquer Nuvem, se
é AWS, ou o Google ou Microsoft, ou qualquer uma das Nuvens públicas,
ou a sua própria nuvem, ou sua pilha aberto Nuvem, ou seu ambiente local.
>> Se você tem um motor execução, que meios
vai ser implantado com sucesso lá.
Vai estar em execução exactamente o mesmo comportamento
como você arquitetado que ele seja.
Portanto, se olharmos at-- estou indo para passar por aquilo que, na verdade,
estão nos principais componentes do encaixe.
>> Então Motor está no cerne de Docker.
É o cérebro da.
Ele orquestra construção, transporte, e implantação e gerenciamento
os próprios recipientes.
Eu vou cavar o motor faz em mais detalhes em um segundo.
Basicamente, porque Doctor foi construído em torno das arquiteturas de servidor de cliente,
por isso, para interagir com o Motor você precisa de algum tipo de um cliente.
>> As imagens são os modelos no que são construídos a partir de contêineres.
Assim, as imagens são basicamente apenas arquivos estáticos.
Modelos e contentores é, na verdade, o que é
está sendo executado no tempo de execução que está servindo a sua candidatura
ou fazer algo com os dados.
>> Registro é tratado como um problema de como você realmente distribuir imagens.
Então, se você precisa compartilhar uma imagem que você trabalhou para o seu colega
ou para a equipe ops, você usá-lo usando Registry.
Você pode baixar uma fonte aberta versão dele que trabalhou em Docker
e de código aberto.
>> Ou você pode usar Docker ajuda, que é a versão da nuvem
para empurrar e puxar imagens lá fora.
Isso é uma coisa enorme.
Porque há uma enorme ecossistema em torno Docker e é
muito fortemente utilizando o cubo.
>> Então, para resumir aqui, esta é a forma como o minimalista cliente fluxo de trabalho Docker.
Você interage com o anfitrião, no Neste caso, é os daemons Docker.
É a mesma coisa que Engine.
Você faz comandos como Docker construir, puxar, correr.
E o próprio motor vai e faz essas coisas.
>> Assim, ou ele interage com Registro para puxar as imagens
e as camadas das imagens.
Se se deseja implantar, executar recipientes, matá-los, jogá-los para baixo,
outros enfeites.
Portanto, este resume o fluxo de trabalho de todos estes componentes.
>> Então, se você tomar todas as componente por si só.
Então Engine, que é apenas um daemon.
Vai tipo de jogá-lo para apoiar -lo no Linux, porque ele faz
exigem certas características do kernel do Linux.
Mas o Windows está a funcionar em fazer a mesma coisa.
É suposto ser apoiada pelo Windows Server 2016.
>> Assim, outra vez, as responsabilidades com o motor é, ou são, construir imagens.
Puxe imagens do Docker Hub ou o seu próprio registo.
Se você é feito com essas imagens ou criar um novo imagens,
você pode empurrá-los de volta para registro para distribuí-las para outras equipes.
>> E tentando contê-lo localmente e gerenciar o ciclo de vida contentores
localmente.
Ele é construído em torno de HTTP API REST.
Então, tecnicamente você pode escrever seu próprio cliente
contanto que usa o HTTP, o que é muito mecanismo padrão para conversar com motor
e um monte de outros serviços.
E você pode ver a partir de aqui que, independentemente
de que a infra-estrutura é, contanto que você can-- tudo
você precisa é uma operação sistema, especificamente o Linux.
>> E você pode instalar Docker Motor em cima disso e tê-lo funcionando
e orquestra, basicamente, todos estes app um, dois,
e três recipientes são reais.
Então, isso é Engine.
Como mencionei anteriormente, porque você precisa interagir com Motor,
há o cliente.
>> Mas, na verdade, quando você instala Estivador, ele vem com ele.
Por isso, é instalado, por isso é um único binário.
E você pode fazer chamadas locais no seu Docker Engine.
Ou chamadas remotas para motores remotos.
Ele usa HTTP, como Mencionei anteriormente.
Há um cliente GUI chamada Kitematic de Docker.
E há definitivamente um monte de outras pessoas
que estão construindo um monte de GUIs que, basicamente, implementam
alguns HTTP chama para conversar Engine.
>> Apenas alguns exemplos de comandos.
Se você fizer versão Docker, seria mostrar-lhe a versão do cliente, bem como
a versão do servidor.
Se você fizer isso ele vai Informação Docker dizer-lhe todas as informações
sobre quantos contentores estão em execução ou criado, quantas imagens que você tem,
e assim por diante e assim por diante.
>> Aqui eu tenho, no lado de última caixa, eu tenho doutor prazo.
Então é assim que eu sou, na verdade, criando recipiente.
E eu estou dando-lhe a ecoar Olá Mundo e dormir por um segundo e outros enfeites.
E você pode ver o resultado. Portanto, é em curso.
E semelhante ao ps Linux, você pode ver Todos os processos, e, neste caso,
todos os recipientes em execução.
Essa é remeter para o recipiente I acabou de criar.
>> Então, isso é muito importante porque, como, ele pode ser um pouco confuso.
Assim, as imagens são o read-only coleção de arquivos, certo?
Eles são o que nosso recipiente se baseia.
Mas eles estão apenas só de leitura.
Então você começa uma imagem de base com.
Ele tende a imitar SO, sendo assim Imagem de base outros enfeites Ubuntu, CentOS,.
E então você começa a construir em cima de que, certas camadas, que comporá
sua imagem final, o resultado final aqui.
>> E cada uma dessas camadas deve ter uma imagem de pai
a que faz referência quando se realmente quer criar.
Eles são imutáveis, no sentido que porque eles são somente leitura,
você não pode realmente alterá-los.
Você pode usá-los para criar uma recipiente a partir de uma imagem, que
vai chamar toda a subsequente imagens necessárias debaixo dela.
>> Você pode fazer alterações a uma camada diferente,
é uma camada de reescrita eu vou falar em um segundo.
Mas cada uma destas camadas não são alteradas.
Basicamente imagens usar algo chamada União do sistema de arquivos, UFS.
E há armazenamento diferente backends que utilizam esta tecnologia.
E o que isso significa é que ele reúne os sistemas de arquivos distintos
para torná-los olhar como um.
>> Então você pode realmente, a partir de perspectiva de aplicação,
você tem um topo de uma exibição que mostra todo o sistema de arquivo diferente necessário
para esse aplicativo para ser executado.
Mas eles são realmente, por isso, eles são realmente em locais separados
e sendo utilizada pela outros recipientes, bem.
>> Então, como você pode ver aqui que se começarmos a imagem daemon com
como uma imagem de base, e em seguida nós vamos e adicionar [? emacs?]
e, em seguida, isso é outra camada.
E em seguida, adicione Apache.
Essa é outra camada.
E então passamos a Recipiente de que.
Cada uma dessas imagens, cada uma dessas camadas,
é diferente e pode ser reutilizados por outros recipientes.
>> Se você olhar para os próprios recipientes, eles são de alguma forma, como VM-like,
mas não tratado ao mesmo tempo.
Então, eles não têm, tecnicamente, o sistema operacional completo debaixo deles.
Eles usam o kernel do único do sistema operacional hospedeiro.
E eles construir em cima disso.
Eles imitam em sua aparência.
Eles imitam seus arquivos raiz sistema do sistema operativo.
Mas eles realmente não estão replicando.
>> Assim, em vez de ter camadas imutáveis, a última camada, que é o recipiente
em si, é uma camada de leitura e escrita.
Que também executa os processos de sua aplicação.
E depende das camadas subjacentes.
Cada recipiente é criado a partir de uma imagem.
E que a imagem pode ser uma única camada de imagem ou multicamada.
>> E quero ressaltar aqui Docker que usa pesadamente,
ou é baseado em Copy-On-Write mecanismo.
De modo que, na verdade, se você não for fazer mudanças para o recipiente,
ele não vai tomar espaço extra.
Então, isso é basicamente como você resumir a Copy-On-Write.
Ele vai definitivamente acelerar o tempo de inicialização para o recipiente.
Porque se você não está fazendo alterações no recipiente,
ele está utilizando o que já está lá.
>> Então, como ele realmente funciona.
Parte do que é como, agora, utiliza, pelo menos, dois do kernel tecla
características.
E isso é basicamente o que criado esse nível de isolamento
para os próprios contentores.
Essas características são namespaces e cgroups.
Então, namespaces são uma forma de criar recursos isolados,
de modo que dentro do próprio recipiente, só você pode ver certos recursos.
Tais como a interface de rede ou os determinados usuários ou outros enfeites.
>> E aqueles só são visíveis e só acessível no interior do recipiente.
Cgroup sobre os outros limites laterais como você usa esses recursos.
CPU, memória e disco.
Quando você pode ir, eu Quer dizer, na verdade, essas são
características que foram desenvolvidas por-- eles são parte do kernel Linux.
Assim, eles não foram reinventados por ou recriado por Docker.
Docker usa-los.
>> O que realmente fez Doctor aqui é, na verdade,
criação orquestrada namespaces para cada recipiente
e criando os cgroups de modo que seja ridiculamente fácil para criar recipientes
usando esses recursos.
Claro que, como eu descrevi anteriormente, União File Systems e Copy-on-write verdadeiramente
ajudar a velocidade eo disco utilização de recipientes.
>> E uma vez que você começa o seu mãos em torno de Docker,
você vai ver o quão rápido ele é realmente girar recipientes e lágrima
los para baixo.
Então, se você pode perguntar, como pode você realmente construir imagens?
Nós construir imagens através de um processo de criação de recipientes e fazendo mudanças, alterando
eles, e comprometendo- para se tornar uma imagem.
>> Portanto, é uma galinha e referência ovo aqui,
porque todos os recipientes entrem a partir de imagens e imagens vêm
a partir de recipientes cometidos, para a maior parte.
Há três opções para criar imagens.
Eu estou indo para descrever o primeiro eo último.
Você pode manualmente ir e executar o recipiente
e fazer essas mudanças, como você faria em qualquer VM
ou qualquer sistema operacional, tais como a instalação de novos binários,
acrescentando sistemas de arquivos, e outros enfeites.
>> E então você sair, como você pode ver lá em cima.
Estou saindo meu recipiente.
E então eu estou fazendo Docker cometer.
E eu estou cometendo isso.
Você pode ver que o número aqui é apenas um UUID, ou o primeiro 12
bits do UUID.
Ou bytes de o UUID.
E então eu estou chamando minha imagem.
Então, agora cuida de Docker gravar tudo o que eu fiz
e criar o novo imagem com base nisso.
>> Eu não vou falar sobre o arquivo tar, mas há uma maneira você pode obter um único,
criar um único, ou fazer uma única imagem da camada usando tarballs.
O que eu vou falar sobre isso e que é usado principalmente hoje,
é Dockerfile.
Que é tecnicamente o primeiro passo automatizado, por si só Docker.
Então Dockerfiles são coisas que você está vai ver em um monte de repos GitHub
hoje.
É basicamente apenas um arquivo de texto descrevendo
exatamente como construir uma imagem.
>> E para cada linha, ele realmente cria o recipiente, que executa linha,
compromete que um recipiente em nova imagem, e você, basicamente,
usá-lo para todas as operações subseqüentes até chegar à última imagem.
Que é basicamente o acabar objectivo aqui, o fim.
E depois que você exec-- depois de escrever seu Dockerfile, que
é puramente em texto, você faz um Docker e construir o nome da imagem.
>> E você aponta para que essa é onde a é a Dockerfile.
E você pode esperar para ver minha imagem como uma imagem que você tem localmente.
Então, isso é apenas visual exemplo do que se passa.
Você começa uma imagem de base com.
Você executar isso em um recipiente que não altera a imagem base em si.
Mas, em vez cria um reescrever a camada em cima dela
onde você fazer as mudanças, em que se comprometer
e você repita o processo até você começa a sua imagem final.
>> E ao fazê-lo, todas as demais compilações processo pode usar as mesmas camadas
e, basicamente, a same-- Docker armazena em cache essas camadas.
Assim que, se eu estou fazendo exatamente o mesmo processo, mas em vez de instalar PHP,
Estou instalando Python.
Vai usar o Apache e Ubuntu.
Então, de que maneira você está utilizando seu disco.
Ele está utilizando o cache e imagens disponíveis lá.
>> A parte final é o registro, que é como você distribuir suas imagens.
E, como já referi anteriormente, há uma versão Nuvem dele,
que é Docker Hub.
Você pode ir e explorar uma grande quantidade de, basicamente
é um produto público que SAS você ainda pode ter imagens privadas,
mas há um monte de imagens públicas.
Na verdade, é ilimitada, você pode empurre imagens públicas ilimitadas lá.
E é assim que puder colaborar com sua equipe.
>> Você pode apenas apontá-los em você repo e eles podem fazer o download ou a sua imagem
e eles podem fazer o download.
Então, o suficiente com a conversa.
Quem quiser ver algumas demos bem rápido?
Tudo certo.
Então aqui eu tenho.
Ca vocês ver minha tela?
Tudo certo.
>> Então, eu tenho Docker correndo aqui, então eu pode verificar it's-- Esta é a versão
de Docker que está sendo executado.
Informação pode fazer Docker.
Confira todas as informações sobre quantas eles têm imagens, e assim por diante e assim por diante.
Docker PS, não há nada em execução.
Concatenado aqueles.
>> Então, a primeira coisa que eu quero fazer é mostrar como você pode facilmente executar um recipiente.
Assim, a beleza sobre Doutor prazo, se ele realmente
não encontrar uma imagem localmente, por padrão, ele fala ao Doutor Hub
e tenta encontrá-lo lá e downloads isso por você.
Por isso, inclui um Docker comando puxar, naturalmente.
>> Então, se eu faço um Docker prazo, Olá-mundo.
Então, primeiro ele vai para tentar localizá-lo.
Caso contrário, como você pode ver aqui, não poderia encontrá-lo localmente.
Agora ele apenas puxou duas camadas que fez essa imagem e eu corri.
O-Olá mundo é basicamente só saídas, o que você tem feito.
Portanto, este é o mais fácil, um dos exemplos mais fáceis.
Então, na verdade, eu apenas corri e rescindiu o recipiente bem rápido.
>> Se eu quiser run-- e pela maneira, se Eu quero vez que, só assim você sabe,
este é o tempo que leva para realmente girar para cima e contê-lo.
Estamos medindo-a em milissegundos.
Assim você pode ver o quanto isso pode realmente ajudá-lo não só em testes,
mas também até mesmo a implantação.
Então essa é uma breve nota sobre isso.
A próxima coisa que eu sou vai fazer é, na verdade,
executar uma imagem que eu já preparei.
Assim janela de encaixe prazo.
-d é apenas uma bandeira a dizer que ele seja executado em segundo plano.
E -p atribui determinadas portas.
Porque, por padrão, o recipientes são isolados,
então você tem que especificar exatamente como ele pode acessá-los.
E, neste caso, estou dizendo Docker para mapear uma porta aleatória no host
a uma porta especificada dentro o próprio recipiente.
E isso é basicamente onde o image-- espero que este é o caminho certo.
>> Então, ele faz downloads paralelos cada dessas camadas como você pode ver aqui.
Aqueles são das camadas fazendo a imagem final que eu construí.
Vai levar um segundo.
E pronto.
>> Portanto, agora se eu fizer um ps janela de encaixe, que deveria ver algo que está sendo executado.
I deve ver o ID, a imagem que este foi baseado fora,
e o comando que foi executado.
E como acessá-lo é basicamente você ir a essa porta.
Então, eu estou indo para ir a-- este é que eu estou executando-o em AWS.
Eu estou indo para ir para 32769.
Oops.
E aqui vamos nós.
>> Portanto, esta é realmente apenas um serviço web que mostra
que recipiente que está a ser servido a partir.
Então você pode ver que ele é de recipiente a9f.
E aqui esta é a nome do contêiner.
Então vocês podem ver o quão rápido ele foi, na verdade, não só mas também puxar
implantar esse recipiente.
>> Agora, o próximo passo é a olhar para Dockerfiles
e como nós podemos, na verdade, construir novas imagens.
Eu só estou indo para ir buscar clone, uma sample Dockerfile com base no anteriormente
diagrama, o único a Apache e PHP.
Esperemos que eu me lembro do meu repo.
>> Então, eu tenho meu repositório agora.
E você vai ver muito isso na verdade.
Eu não instalar árvore.
>> Então, basicamente, você vai ver como a documentação do código-fonte em torno de
-lo, e em seguida, um Dockerfile em como realmente empacotá-lo.
Então é só uma amostra PHP que ecoa Olá CS50.
>> Então, se eu quiser para executá-lo, Eu vou fazer de compilação janela de encaixe.
Eu tenho que construir primeiro.
Eu estou indo para nomeá-la demo_cs50.
E você precisa de uma tag a ele também.
Então, vamos chamá-lo v1 dot.
Então, como eu descrevi anteriormente, o que estou fazendo hoje
é que eu estou dizendo para ir Docker uso isso--, na verdade, desculpe, meu mau.
Nós não dê uma olhada no próprio Dockerfile.
Assim, as únicas coisas aqui são index.php, bem como o arquivo leia-me
e um Dockerfile.
>> Então, se você dê uma olhada o Dockerfile, por isso é
muito semelhante ao que Eu descrevi anteriormente.
É apenas um monte de etapas que executa Docker
criando e destruindo recipientes e [? contando?]-los em uma imagem.
>> E, basicamente, você pode see-- [inaudível] que aqui--
mas esta é a partir do repo local.
Ele vai ir e agarrar index.php.
Então, esse é o único código fonte que são na verdade parte do seu aplicativo.
Tudo isto são basicamente canalização do sistema operacional,
recebendo os pacotes corretamente e Apache e PHP, e outros enfeites.
Mas este é, na verdade, tendo index.php e cometê-lo para dentro do recipiente,
na imagem.
>> Portanto, se você vá em frente e execute o comando, fazendo o seguinte,
ele é, na verdade, going--, isto pode demorar um pouco.
Esperemos que não demore muito.
Assim você pode ver as etapas.
E eu encorajá-lo a ir de volta para casa hoje e experimentá-lo.
E Mano irá descrever exatamente como você fazer isso.
Mas é realmente ótimo para ver exatamente o que está acontecendo nos bastidores.
Mas é ridiculamente fácil de construir imagens e implantá-las usando Docker.
>> Está demorando um pouco mais do que eu esperava.
>> Vamos ver o que acontece quando vocę-- esfriar.
Então, como você pode ver, cada uma dessas etapas representam linhas no Dockerfile.
E aqui que mostra construiu com sucesso esta imagem.
>> Então, se eu faço imagens Estivador, eu vou ver todas as imagens que eu tenho localmente.
E um deles é chamado de meu nome de usuário eo nome da imagem,
e a etiqueta de representing-- principalmente é uma marca de versão.
>> Portanto, agora se eu quero correr -lo, eu faço janela de encaixe prazo.
E eu só quero fazer um -P -d. Faça v1.
Assim eu posso ver agora que eu tenho dois recipientes de execução, o que eu apenas
criado e Olá Docker um que eu tenho passado.
>> E você pode ver aqui que atribuiu uma porta diferente.
Então, se eu ir para o mesmo IP, mas atribuí-lo um port-- diferente espero que eu não fiz.
Então, agora isso é aplicação que eu apenas implantado.
>> Se eu quiser fazer alterações, I pode editar rapidamente o código-fonte
e faça o seguinte.
Vamos fazer Olá Harvard.
Então agora o que está acontecendo a acontecer é que eu sou
vai marcá-lo com um diferente version-- oh,
não esta guy-- marcá-lo com uma versão diferente.
E você está indo see-- fazer vocês esperam
para ter a mesma quantidade de tempo construí-lo uma segunda vez, ou não?
Tudo bem, e ninguém sabe por quê?
Fala.
>> AUDIÊNCIA: [inaudível]
>> NICOLA kabar: É basicamente nós só mudam um dos passos mais tarde.
E, portanto, ele vai usar o cache e utilizar cada uma dessas camadas.
E isso é realmente alguns dos características do assassino de Docker
é como ele realmente utiliza e reutilizações assumir
o disco para o mesmo peças exatas de informações.
>> Então, se nós fazemos a mesma coisa, demorou apenas alguns segundos.
Se queremos redeploy-- agora Eu deveria ter três recipientes.
Mas este está sendo servido em um as-- sete.
Portanto, agora é o terceiro recipiente.
Todo mundo entende o que eu fiz aqui?
>> Portanto, agora se você deseja compartilhar essa recipiente bem rápido com os seus amigos,
você pode apenas fazer estivador empurrar o nome do contêiner, eu espero.
Então, agora ele vai empurrá-lo para-- Eu não estou assinado em aqui.
Me desculpe por isso.
Mas eu não vou resolver isso agora.
Mas, basicamente, que um comando é só ir até empurrá-lo.
E você vai ser capaz de vê-lo se você vai para Docker Hub
E você log in, você é vai ser capaz de vê-lo.
E então você pode apenas apontar quem vai
usar essa imagem para ir e puxe-o.
E eles podem usá-lo.
>> Com isso, esperamos Eu meio que demonstraram
como é fácil trabalhar com Docker.
E eu estou indo só para devolvê-lo para Mano.
E ele vai levá-lo a partir daqui.
>> MANO MARCAS: Tudo bem obrigado, obrigado Nico.
E daí?
Então, uma das coisas que eu queria fazer é colocar juntos
porque este é um importante-- Docker por que e por quê
recipientes são tal importante novo desenvolvimento,
uma nova maneira de realmente fazer software.
>> E antes que eu faço, eu vou apenas apresentar algumas estatísticas.
Eu não vou ler tudo isso.
Mas isso você mostra muito sobre como popular, este é na comunidade.
As tecnologias Docker núcleo são de código aberto.
Então, isso é Docker Engine, Compose, Swarm, um monte de outras coisas
é tudo open source.
E nós temos, o que eu fiz dizer, 1.300 colaboradores.
Você está vendo agora, se você olhar para o número de vagas de emprego, a última vez
nós olhamos, era cerca de 43.000 trabalho aberturas especificamente mencionando
familiaridade com Docker.
Centenas de milhões de imagens têm foi baixado do Docker Hub.
E, bem, muito mais grandes stats.
>> Para aqueles que estão curiosos, ele foi originalmente escrito em Python
e depois reescrito em Go.
E só se passaram abrir source-- é somente
foi liberado para cerca de 2 anos e 1/2, o que significa que em 2 e 1/2 anos,
temos visto uma quantidade enorme de crescimento e importância
desta na comunidade.
E assim eu quero falar um pouco sobre o porquê.
>> Então, só para reiterar algumas das Pontos-chave de Nico, Docker é rápido.
É portátil.
É reprodutível.
E cria-se um ambiente padrão.
>> E what-- esta é a minha cagado erradicar monólitos que slide--
ele está ajudando as pessoas fazem, que um lote da indústria de software
comecei a fazer no início de 2000, está se movendo
a partir destes monolítico aplicações individuais
onde cada dependência tinha que ser testado antes de o aplicativo inteiro tinha
para ser implantado, o que poderia significar um site
só tem implantado uma vez a cada três meses, ou mais,
a uma muito mais serviço arquitetura orientada
ou em componentes tipo diferente de arquitetura de aplicação.
E assim permitindo que estes tipo de arquiteturas
que aproveitam Docker para executar nestes três
principais áreas de desenvolvimento, que é o desenvolvimento de escrever seu código real,
testar o seu código, e implantá-lo.
>> Então, por que isso é importante?
Se você é um-- deixe-me dar um exemplo.
Se você é um website desenvolvedor dispositivo, você é
desenvolvimento de um site que é baseado no banco de dados que David produzido aqui.
Desculpe David, eu estou te chamando para fora.
Se você queria para implantar a coisa toda, você
tem que esperar sob um tradicional desenvolvimento de software monolítico
ambiente, você teria que esperar até que ele foi feito com o banco de dados
antes que você possa realmente fazer quaisquer alterações ao seu website.
Você teria que reimplantar o Toda aplicação de fazê-lo.
>> E o que Docker ajuda você a fazer é cada pessoa trabalho em componentes diferentes
e atualizá-los como eles vão, apenas fazendo Certifique-se de que as interfaces permanecer o mesmo.
Então, o que ele fez é que é deslocada pessoas
de fazer estes maciço monolítico software que arquitetado
implantado cada mês a um contínuo integração e desenvolvimento contínuo
ambiente.
>> Agora, isso não é exclusivo para Docker, mas Docker torna muito mais fácil,
o que significa que você é, basicamente, constantemente implantando.
Nós conversamos com empresas que são implantação de aplicativos voltados ao público
milhares de vezes por dia, porque eles vêem o valor em apenas fazendo
pequenas alterações, e contanto como ele é executado por meio dos testes,
deixá-lo ir para fora em produção.
Nico estava sempre me dizendo mais cedo que em muitos ambientes,
o ciclo de vida normal de um recipiente é medido em segundos,
Considerando uma máquina virtual pode ser medido em meses.
>> Eu queria tirar uma ligeira vire aqui, porque eu sou
em uma instituição educacional.
Eu queria dar um exemplo de como isso funciona em uma pesquisa educacional
situação.
Portanto, há uma organização chamados bioboxes.
O DNA Bioboxes análise para os investigadores.
>> Agora, o que eles descobriram foi que, quando um researcher-- e este não está
a falha de qualquer especial researcher-- mas quando
um pesquisador implantado um algoritmo para analisar,
De modo particular, uma amostra de DNA, eles iriam escrever o software,
publicar que, talvez para GitHub ou em outro lugar,
e, em seguida, eles foram feitos.
>> Bem, o problema foi que ele não era necessariamente reprodutível.
Porque, a fim de compreender o software,
que seria criado para o ambiente exata desenvolvimento
que investigador que utilizado, geralmente seu laptop, ou um servidor, ou um conjunto de dados
o centro que eles estavam usando.
E, conseqüentemente, era muito difícil para reproduzir os resultados da investigação quando
análise das amostras de ADN para olhar em coisas como incidence--
comparar incidência de ataques cardíacos com base em determinados genes estarem presentes,
por exemplo, ou o risco de câncer, ou qualquer um dos outros tipos de coisas.
>> Então, o que eles fizeram em vez foi eles começaram a criar recipientes.
E você pode ir para bioboxes.org, é uma grande organização.
E o que eles fazem é que eles produzem recipientes com base em pesquisas.
E então, sempre que alguém envia em sua amostra, eles podem executá-lo.
E tem todo o ambiente necessário para executar esse algoritmo
e produzir os resultados.
E eles estão descobrindo que eles são muito mais provável e mais
mais rapidamente capaz de retornar resultados para as pessoas.
>> E, na verdade, o que as pessoas estão fazendo está executando sua própria análise sobre o DNA,
em que o envio para bioboxes, e então biobox só tem os dados,
executa-lo contra a variedade recipientes de diferentes
para ver resultados diferentes com base em pesquisa diferente.
Portanto, é uma muito poderosa maneira em que os investigadores
pode fazer uma única instância que permite outras pessoas para tentar reproduzir
os resultados.
>> Então, como você começou?
Estamos bem suportado no Linux.
Então, se você deseja instalar nada no Linux,
você usar o seu padrão gerenciador de pacotes para instalar.
Se você estiver usando um Debian, é get apt.
CentOS é yum.
Fedora da Red Hat é rpm-- Eu não me lembro.
De qualquer forma, está tudo lá.
Apoiamos uma grande variedade de distribuições Linux.
Você pode verificar os para fora.
>> Nós também temos opções para que você Pode ser executado em Mac ou Windows.
Agora Nico mencionado anteriormente que foi suportado apenas em Linux.
Isso é verdade porque precisa de um kernel do Linux.
Mas, você pode ser executado em uma máquina virtual.
E o que o Docker Toolbox faz, que você pode baixar,
dá-lhe essa máquina virtual.
>> Assim, apenas uma rápida 48 em segundo lugar, penso eu, a baixar.
Você só procurar no Docker Caixa de ferramentas, transferi-lo para o Mac,
e esta parte é de Claro acelerou porque quem
quer assistir a um sinal de download?
Instalação do Mac Padrão, e então você está
vai ver Jerome colocar em sua senha.
Isso é muito emocionante.
E, em seguida, ele instala um todo monte de ferramentas.
E, particularmente, ele vai instalar uma linha de comando.
E então você pode ver Jerome testando as suas imagens.
>> E, em seguida, com base nisso, você pode ver que o YouTube
acha que Nico está interessado em Star Wars, O show Jimmy Kimmel,
e eu acho que Ellen.
Penso que último é um clipe de um show de Ellen.
>> Então Docker Toolbox vem embora com mais do que apenas Máquina Docker.
Então Docker Machine é a única coisa que ajuda
você configurar um virtual máquina em seu Windows
ou Mac-- sua caixa de Windows ou o Mac box-- e ajuda você a fazer o provisionamento,
>> Mas ele também vem com Swarm e Compose,
que são projetados para ajudá-lo a fazer grande implementações à escala de sua aplicação.
Então, se você deseja gerenciar clusters de nós,
aglomerados de contentores, compor e Swarm são a maneira de ir sobre isso.
>> E, claro, ele vem com Docker Motor e Kitematic,
o que é essa GUI desktop.
Gostaria também de mencionar Docker Registro, que não está incluído na caixa de ferramentas,
mas é uma maneira para que você execute o seu próprio registros de Docker Imagens como Docker
Hub, mas você também pode simplesmente usar Docker Hub como uma maneira de fazer isso.
>> E, reviravolta na história, você está vendo -lo funcionando em um recipiente.
E é assim que nós somos distribuição de nossos slides.
Toda essa apresentação é na verdade, um conjunto de slides em HTML.
E ele está sendo executado em um contêiner, que você pode obter por--
>> NICOLA kabar: Sim, por isso é funcionando em tempo integral no meu Max.
E eu estou apresentando a partir dele.
E você acabou de fazer Docker depois você instalar o Toolbox.
Você pode apenas fazer uma corrida de estivador e obtê-lo, e usar os slides.
>> MANO MARCAS: E é isso.
Por isso, agradeço a todos por terem vindo.
E estamos felizes em responder a perguntas.
Devo mencionar antes que alguém deixa lá é t-shirt por lá.
Desculpe quem está assistindo isso em Livestream ou vídeo,
mas temos Docker T-shirts por lá.
E sabemos alunos Docker, e na minha experiência,
professores também, como roupas livre.
>> Então, obrigado a todos por terem vindo.
E siga-nos no Twitter se você quiser, ou não.
Eu não me importo.
Também acompanhar Docker no Twitter.
Isso também é interessante.
E então é isso.
Docker.com.
Obrigado.
>> [Aplausos]