>> [REPRODUCCIÓN DE MÚSICA]
DAVID MALAN: De acuerdo.
Muchas gracias por haber venido.
Esta es CS50 seminario sobre Docker, un tecnología que nosotros mismos y CS50 Nosotros
han comenzado a utilizar desde hace algún tiempo.
Así que mi nombre es David Malan, I enseñar Introducción de Harvard
de Ciencias de la Computación.
Desde hace algún año, hemos estado dando a los estudiantes
del lado del cliente descargable maquinas virtuales
en la que lo hacen sus problemas conjuntos.
Que ahora hemos hecho la transición a un entorno de nube
que realmente utiliza esta tecnología llamado acoplable, de manera que todo el CS50
los estudiantes ahora tienen su contenedores propios Docker
que pronto se oye todo.
>> Por otra parte, en el servidor del CS50 clúster lado, durante muchos años
estábamos usando el servidor de la nube de Amazon.
Estábamos corriendo individuo maquinas virtuales.
Eso también, hemos empezado a hacer la transición a estas cosas llamadas contenedores Docker
de modo que todas nuestras aplicaciones son ahora perfectamente aislados unos de otros.
Así que por eso y más, me permitirá introducir nuestros amigos, Nico y Mano,
de sí mismo Docker.
NICOLA kabar: Gracias, David.
Hola a todos.
Mi nombre es Nico y esto es Mano.
Somos de Docker.
Vamos a estar hablando sobre-- dándole chicos una introducción a Docker,
y espero que, hacia el final de esta charla usted puede darse cuenta
cuánto puede usar médico oxalato su desarrollo de aplicaciones
y despliegue.
>> Por lo tanto, vamos a empezar de verdad rápida con un poco de información de fondo.
Describa lo Docker se trata.
¿Como funciona?
¿Cómo es con arquitectura?
Voy a estar haciendo algunas demostraciones.
Y Mano va a ser que describe cómo se puede utilizar Docker
y que le da pasos específicos cómo se puede empezar.
>> Le agradecería si ustedes pueden sostener fuera de sus preguntas hacia el final.
De esa manera, yo podría estar abordando los preguntas durante la presentación.
Así que vamos a dejar algo de tiempo hacia el final de las preguntas.
>> Así que muy rápido, que tiene En realidad nunca trabajado en Docker,
como jugar con él?
Impresionante.
Guay.
Excelente.
Por lo tanto, voy a empezar con un poco de historia.
Así que allá por los años 90 y principios de 2000, básicamente
como desarrolladores web, desarrolladores de aplicaciones, cuando iban a desplegar una aplicación
que estaba atado al metal desnudo.
Era un servidor.
Era una sola aplicación.
>> Tradicionalmente, un ejemplo sería como una pila LAMP,
donde realmente había que abrir el conjunto de recursos.
CPU, memoria, disco, red, instalación sistema operativo por encima de eso.
Si usted está sirviendo algo, si en realidad estás teniendo servidor web,
necesita algo así como Apache para servir.
>> Si su aplicación necesidades de base de datos, de revés,
usted instalar algo como MySQL, y así sucesivamente.
Y si usted necesita el tiempo de ejecución, PHPS y el trabajo PHP Python estaban allí.
Y así, de hecho, tuvimos que tomar esos pasos en orden
para obtener su aplicación en funcionamiento.
>> Si usted necesita más poder de cómputo que, básicamente tuvimos que llamar a tu chico Operaciones
o chica para ir a acumular una nueva pieza de hardware, conéctelo,
y usted tiene que repetir los procesos y otra vez.
Así que este proceso fue relativamente caro.
Fue sin duda muy lento.
>> Era ineficiente.
Y en muchos casos, su hardware fue subutilizado.
Así, en los años 90 a finales de los años 2000 y principios, virtualización de hardware se encontró.
Y como se puede ver aquí, en el imagen, básicamente lo que hicieron
se abstrae de la piscina de recursos de hardware gratuitas
y el tipo de los que se sirve a las capas superiores,
en este caso, un cliente de sistema operativo.
>> Y la idea de máquinas virtuales toparon
y que realmente ayudó a la nube la computación tal como la conocemos hoy en día.
Así que lo que quería decir que es puede ejecutar varias máquinas virtuales, que
significaba varias pilas, múltiple aplicación en un mismo equipo físico.
>> Esto sin duda ayudó con el velocidad de despliegue de la aplicación.
Definitivamente con los gastos.
Usted no tiene que ir a pasar energía, tiempo y recursos para estante
más servidores para llegar a más de cómputo.
Y la velocidad de la realidad llevar los recursos arriba es mucho más rápido.
Excelente.
>> Así solucionamos hambre en el mundo, ¿no?
No en realidad no.
Así, la virtualización tanto como sea en realidad ayudó, abordar el problema,
lo que realmente introdujo una gran cantidad de desafíos.
El hipervisor definitivamente introducido una gran complejidad,
el manejo de las que subyacen conjunto de recursos.
>> Es más pesado en el sentido de que antes de que tenía un único sistema operativo que
es como tres, cuatro conciertos en el disco.
Ahora, si usted tiene 10 máquinas en un solo hardware
usted tiene que multiplicar esa por el número de máquinas.
Es definitivamente más caro en un sentido todavía
que obtener licencias para la tecnología de virtualización
si no es de código abierto.
>> Pero, no vamos a tomar todas las crédito de la virtualización.
Porque lo que pasa es que hay una gran cantidad de pilas y un montón de software
tecnologías que se habilitaron por la rapidez con que fueron capaces de obtener
a los recursos con el auge de la nube.
>> Así, hoy en día una sola aplicación o servicio puede estar utilizando cualquiera de los siguientes tiempos de ejecución
o bases de datos.
PHP, Python, MySQL, Redis, qué sé yo.
Así que hay una gran cantidad de complejidad en este número de pilas para traer realidad hasta
un único servicio.
Y junto con eso, que tenía una gran cantidad de recursos o infraestructura subyacentes
tipos de prueba de despliegue y, básicamente, tomar para la producción de estas aplicaciones
que está en desarrollo.
>> Sobre todo porque sus equipos tienen crecido trabajando en esas aplicaciones,
hay un montón de complejidad y desafíos
que fueron traídos a garantizar que el cycle-- básicamente aplicación
ciclo de desarrollo, es en realidad éxito.
Así, el hecho de que su aplicación está trabajando localmente en su local de VM
no garantiza que su colega va a esperar los mismos resultados.
>> Y cuando el equipo de operaciones es involucrados en tomar lo que tienes
y su despliegue en la producción escala, también no hay garantía
que eso es realmente va a suceder.
Así que esto nos deja con una realidad big-- un montón de signos de interrogación,
una gran cantidad de retos en realidad enfrentado de manera similar en los días.
Y eso nos recordó la industria naviera.
>> Así que la industria del transporte marítimo tenía una gran cantidad de bienes,
como se puede ver en el lado izquierdo.
Y en el lado derecho, hay un montón de, básicamente,
maneras de enviar esas mercancías.
¿Y qué pasa con la familia personas se reunieron y dijeron:
tenemos que estandarizar la forma en realidad nos enviamos esos bienes.
Y bum, usted tiene la intermodal de contenedores de envío.
>> Así que se pusieron de acuerdo sobre el más tamaños comunes para el contenedor.
Cómo manejarlos.
¿Qué método exacto que necesita para cargarlos y descargarlos.
Y por lo tanto, que realmente ayudado a la industria del transporte marítimo.
Ahora más del 90% de enfoque transportado a nivel mundial están utilizando dichos contenedores.
Y eso sin duda disminuye los gastos, así como
los daños causados ​​por el envío.
>> Así que tomamos el mismo modelo y nosotros aplicar el software de desarrollo de dos aplicaciones
arquitectura, en el sentido de que la contenerización
tomó la virtualización de un nivel.
Así que en vez de hacer eso a nivel de hardware,
se hizo más de un operativo virtualización a nivel de sistema.
>> Y lo hacemos proporcionando a cada aplicación en su propio ligero,
aislado, ejecutable, y portable, lo más importante,
una manera de empaquetar en realidad todo lo que necesita para funcionar.
En cualquier lugar se puede ejecutar.
Así que, sin importar si se está ejecutando en entorno de desarrollo local, su producción
medio ambiente, su puesta en escena o la prueba.
No importa lo que subyace infraestructura está ahí,
has tenido una aplicación de trabajo funcional.
>> Así que eso es exactamente lo que, básicamente, contenedores hacen a este problema.
Abordan por envasado de tal manera
que puede garantizar que se despliega éxito sin importar dónde vive.
Así que si usted va como, Bob sigue siendo Aceptar.
Si usted está confundido con lo que estoy diciendo, Voy a ser elaborar en eso.
>> Entonces, ¿cómo lo hace en sí Docker caber en esta foto?
Así Docker es una plataforma abierta fácilmente, destacar con facilidad,
para construir la nave, correr, auto ligero portátil
contenedores de aplicaciones suficientes en cualquier lugar.
Así que si usted toma algo de esto hablar, por favor tome la siguiente.
>> Si usted tiene su aplicación en ejecución a nivel local y que lo desarrolló
en el uso de la plataforma Docker, le espera que pueda ser desplegado con éxito.
No importa cuál es la infraestructura subyacente.
Así que si usted tiene un Docker contenedor y que está funcionando, entonces
siempre que hay un Docker motor en el otro side--
si su infraestructura de operación está usando cualquier nube, ya sea
es AWS, o la de Google o Microsoft, o cualquiera de las nubes públicas,
o su propia nube, o su pila abierta Nube, o en su entorno local.
>> Si usted tiene un motor correr, que los medios
Va a ser éxito desplegado allí.
Va a estar en ejecución exactamente el mismo comportamiento
como con arquitectura que sea.
Así que si nos fijamos at-- estoy yendo que pasar por lo que en realidad
están en los principales componentes de acoplable.
>> Así motor está en el centro de Docker.
Es el cerebro de.
Se organiza la construcción, el transporte, y la implementación y administración
los propios contenedores.
Voy a cavar en lo que hace de motor en más detalles en un segundo.
Básicamente, porque el doctor se construyó alrededor de las arquitecturas cliente-servidor,
por lo que con el fin de interactuar con el Motor que necesita algún tipo de cliente.
>> Las imágenes son las plantillas en que los contenedores están construidos a partir de.
Así que las imágenes son básicamente archivos simplemente estáticos.
Plantillas y contenedores En realidad, es lo que hay
se está ejecutando en tiempo de ejecución que está cumpliendo su aplicación
o hacer algo con los datos.
>> Registro se aborda como un problema de cómo usted distribuya imágenes.
Así que si usted necesita compartir una imagen el que ha trabajado a su colega
o al equipo de operaciones, que usarlo usando Registro.
Puede descargar una fuente abierta versión de la misma que Docker trabajó en
y abrir origen.
>> O puede utilizar Docker ayuda, que es la versión de la nube
empujar y tirar de las imágenes que hay.
Eso es una cosa enorme.
Porque hay una enorme ecosistema alrededor de Docker y es
realmente en gran medida utilizando el concentrador.
>> Así que para resumir aquí, así es como el minimalista cliente flujo de trabajo del estibador.
Puede interactuar con el anfitrión, en este caso se trata de los demonios Docker.
Es lo mismo que la del motor.
Haces comandos como Docker construir, tirar, correr.
Y el propio motor va y hace esas cosas.
>> Así que, o interactúa con Registro para tirar de esas imágenes
y las capas de las imágenes.
Ya sea si desea implementar, ejecutar contenedores, los matan, tirarlos abajo,
cualquier cosa.
Así que esto resume el flujo de trabajo de todos estos componentes.
>> Así que si usted toma todos los componente por sí mismo.
Así motor, es sólo un demonio.
Va a clase de jugar para apoyar en Linux porque lo hace
requerir ciertas características del kernel de Linux.
Pero Windows está trabajando en hacer lo mismo.
Se supone que ser apoyado Windows Server 2016.
>> Así, de nuevo, las responsabilidades con la motor es, o son para, construir imágenes.
Tire de las imágenes de la Docker Hub o en su propio Registro.
Si le hacen con esas imágenes o crear una nueva imagen,
usted puede empujar los de vuelta al registro distribuirlos a otros equipos.
>> Y tratando de contenerla localmente y gestionar el ciclo de vida de los envases
en la zona.
Está construido alrededor de la API HTTP REST.
Así que técnicamente sea posible escribir su propio cliente
siempre y cuando se utiliza HTTP, que es un muy mecanismo estándar para hablar con motor
y un montón de otros servicios.
Y se puede ver en aquí que, independientemente
de lo que la infraestructura es decir, siempre y cuando usted can-- todo
lo que necesita es un operativo sistema, Linux específicamente.
>> Y usted puede instalar Docker Motor encima de eso y tenerlo funcionando
y orquesta, en el fondo, todos estos aplicación uno, dos,
y tres son contenedores reales.
Así que eso es Engine.
Como he mencionado antes, porque que necesita para interactuar con el motor,
está el cliente.
>> Pero en realidad cuando se instala Docker, se distribuye con él.
Por lo que se instala, por lo que es un solo binario.
Y usted puede hacer llamadas locales a su motor de Docker.
O llamadas remotas a Motores remotas.
No utilice HTTP, como He mencionado antes.
Hay un cliente GUI llamada Kitematic de Docker.
Y hay duda un montón de otras personas
que están construyendo una gran cantidad de GUIs que básicamente implementan
algunos HTTP llama para hablar con motor.
>> Sólo algunos comandos de ejemplo.
Si lo hace la versión Docker, lo haría le mostrará la versión del cliente, así como
la versión del servidor.
Si lo haces información Docker lo hará decirle toda la información
acerca de cuántos contenedores se están ejecutando o creados, la cantidad de imágenes que tiene,
Y así sucesivamente y así sucesivamente.
>> Aquí tengo, en el lado de última caja, tengo doctor plazo.
Así que eso es lo que soy en realidad la creación de contenedor.
Y le doy a hacerse eco Hello World y dormir por un segundo y todo eso.
Y usted puede ver el resultado. Así que es permanente.
Y al igual que Linux ps, se puede ver todos los procesos y, en este caso,
todos los contenedores de funcionamiento.
Volver refiriéndose de este uno el contenedor que acaba de crear.
>> Por lo tanto, esto es muy importante porque, como, puede ser un poco confuso.
Así que las imágenes son de sólo lectura del colección de archivos, ¿verdad?
Son lo que nuestro contenedor se basa en.
Pero ellos sólo están de sólo lectura.
Así que empiezas una imagen base con.
Se tiende a imitar-OS como, por lo Ubuntu, CentOS, imagen base que sea.
Y a continuación, se inicia la construcción en la parte superior de la que, ciertas capas, que conformarán
su imagen final, el resultado final aquí.
>> Y cada una de esas capas debe tener una imagen de matriz
que hace referencia cuando se realmente quiere crear.
Ellos son inmutables, en el sentido que de sólo lectura porque están,
usted no puede realmente realizar cambios en ellos.
Usted las puede utilizar para crear un contenedor de una imagen, que
llamará a todos la subsiguiente imágenes necesarias por debajo de ella.
>> Puede realizar cambios a una capa diferente,
que es una capa de reescritura voy hablar en un segundo.
Pero cada una de esas capas Nunca se cambian.
Básicamente imágenes usan algo llama Unión Sistema, UFS archivo.
Y no son diferentes de almacenamiento backends que utilizan esta tecnología.
Y lo que eso significa es que reúne a los sistemas de archivos distintos
para que se vean como uno.
>> Así que en realidad se puede, a partir de una perspectiva de la aplicación,
usted tiene una parte superior de una vista que muestra todos los diferentes sistema de archivos necesario
para que la aplicación se ejecute.
Pero en realidad son, en esto, en realidad son en lugares separados
y siendo utilizado por otros recipientes, así.
>> Así como se puede ver aquí que si empezamos imagen daemon con
como una imagen de base, y luego entramos y añadimos [? emacs?]
y entonces eso es otra capa.
Y a continuación, añadir Apache.
Esa es otra capa.
Y luego pasamos la contenedor de eso.
Cada una de esas imágenes, cada una de esas capas,
es distinto y puede ser reutilizados por otros contenedores.
>> Si nos fijamos en los propios contenedores, que son de alguna manera como VM-como,
pero no se trata al mismo tiempo.
Por lo tanto, no tienen, técnicamente, la sistema operativo completo debajo de ellos.
Utilizan el único kernel del sistema operativo host.
Y ellos se basan en la parte superior.
Ellos imitan en su apariencia.
Ellos imitan sus archivos raíz sistema del sistema operativo.
Pero en realidad no se replican.
>> Así, en lugar de tener capas inmutables, la última capa, que es el contenedor
sí, es una capa de lectura y escritura.
Eso también se ejecuta los procesos de su solicitud.
Y depende de las capas subyacentes.
Cada contenedor es creado a partir de una imagen.
Y esa imagen puede ser un solo capa o imagen de múltiples capas.
>> Y quiero señalar aquí Docker que utiliza en gran medida,
o se basa en el mecanismo de Copy-on-Write.
Así que, en realidad, si no está realizar cambios en el recipiente,
que no va a tener espacio extra.
Así que eso es básicamente cómo resumir un Copy-on-Write.
Se va a acelerar definitivamente hasta el tiempo de arranque para el contenedor.
Porque si usted no está haciendo cambios en el recipiente,
está utilizando lo que ya está allí.
>> Entonces, ¿cómo funciona realmente.
Parte de ella es como, en este momento, utiliza al menos dos kernel clave
caracteristicas.
Y eso es básicamente lo que creado ese nivel de aislamiento
para los propios contenedores.
Esas características son espacios de nombres y cgroups.
Así que los espacios de nombres son una manera de crear recursos aislados,
de modo que dentro del propio recipiente, Sólo se puede ver ciertos recursos.
Tales como la interfaz de red o los determinados usuarios o lo que sea.
>> Y esos son accesibles solamente y sólo accesible dentro del recipiente.
Cgroup en los otros límites laterales cómo utilizar esos recursos.
CPU, la memoria, y el disco.
Cuando usted puede entrar, me significa esos son en realidad
características que se desarrollaron por-- que son parte del núcleo de Linux.
Así que no se reinventan ni está recreado por Docker.
Docker los utiliza.
>> Lo que realmente tenía Médico aquí es en realidad
creación orquestada espacios de nombres para cada contenedor
y la creación de los cgroups para que sea ridículamente fácil crear contenedores
utilizando esas características.
Por supuesto, como he descrito anteriormente, la Unión File Systems y copy-on-write verdad
ayudar a la velocidad y el disco utilización de los contenedores.
>> Y una vez que obtenga su manos alrededor de Docker,
vas a ver lo rápido que es de hecho girar contenedores y lágrima
ellos abajo.
Así pues, si usted puede preguntar, ¿cómo puede en realidad se construye imágenes?
Construimos imágenes por un proceso de creación contenedores y hacer cambios, alterar
ellos, y los entregaba para convertirse en una imagen.
>> Así que es un pollo y referencia huevo aquí,
porque todos los recipientes vienen a partir de imágenes e imágenes vienen
cometidos de los contenedores, en la mayor parte.
Hay tres opciones para crear imágenes.
Voy a describir el primero y el último.
Usted puede manualmente ir y ejecutar el contenedor
y hacer esos cambios, igual que lo haría en cualquier VM
o cualquier sistema operativo, tales como la instalación de nuevos binarios,
añadir sistemas de archivos, y otras cosas.
>> Y luego se sale, como se puede ver allí.
Estoy de salir de mi contenedor.
Y entonces yo estoy haciendo Docker cometió.
Y estoy cometiendo eso.
Usted puede ver que el número aquí es sólo un UUID, o el primer 12
bits del UUID.
O bytes del UUID.
Y entonces yo estoy llamando a mi imagen.
Así que ahora Docker se encarga de grabación de todo lo que hice
y la creación de la nueva imagen basada en eso.
>> No voy a hablar de tarball, pero hay una manera de conseguir una sola,
crear una sola, o hacer un solo imagen de la capa usando bolas de alquitrán.
Lo que voy a hablar de esto y lo que se utiliza sobre todo hoy en día,
es Dockerfile.
¿Qué es, técnicamente, el primero paso automatizado por sí mismo acoplable.
Así Dockerfiles son las cosas que usted es vamos a ver en un montón de repos GitHub
Este Dia.
Es básicamente un archivo de texto que describe
exactamente cómo construir una imagen.
>> Y por cada línea, se crea en realidad el contenedor, se ejecuta esa línea,
comete ese contenedor en una nueva imagen, y que, básicamente,
usarlo para todas las operaciones posteriores hasta llegar a la última imagen.
Lo cual es básicamente el terminar objetivo aquí, al final.
Y después de que exec-- después escribir su Dockerfile, que
es puramente en el texto, usted hace una Docker construir y el nombre de la imagen.
>> Y usted señala en aquel que es donde el Dockerfile es al.
Y usted puede esperar ver mi imagen como una imagen que tiene a nivel local.
Así que eso es sólo una visual ejemplo de lo que sucede.
Empiezas una imagen base con.
Corres que en un recipiente que no altera la imagen de base en sí.
Pero en vez crea una reescribir la capa en la parte superior de la misma
donde se hacen los cambios, en el que te comprometes
y se repite el proceso hasta que llegue a su imagen final.
>> Y al hacerlo, cada dos acumulación proceso puede utilizar las mismas capas
y la same-- básicamente Docker almacena en caché esas capas.
Así que si yo estoy haciendo lo mismo exacta proceso, pero en lugar de instalar PHP,
Estoy instalando Python.
Se va a utilizar Apache y Ubuntu.
Así que de esa manera se está utilizando el disco.
Está utilizando la caché y las imágenes disponibles allí.
>> La pieza final es del Registro, que es la forma de distribuir sus imágenes.
Y, como he mencionado antes, hay una versión de la nube de la misma,
que es acoplable de concentradores.
Usted puede ir y explorar una gran cantidad de, básicamente,
es un producto SAS pública que usted todavía puede tener imágenes privadas,
pero hay una gran cantidad de imágenes públicas.
En realidad es ilimitado, puede empujar imágenes públicas ilimitadas allí.
Y esto es como se puede colaborar con su equipo.
>> Usted sólo puede señalarlos en usted Repo y pueden descargarlo o su imagen
y pueden descargarlo.
Así que basta con la charla.
¿Quién quiere ver algunas demos realmente rápido?
Correcto.
Así que aquí lo que tengo.
Ca ustedes ver a mi pantalla?
Correcto.
>> Así que tengo Docker correr aquí, así que puede comprobar es-- Esta es la versión
de Docker que se está ejecutando.
Puede hacer información Docker.
Revise toda la información sobre el número de imágenes que tienen, y así sucesivamente y así sucesivamente.
Docker PS, no hay nada en marcha.
Concatenado ellos.
>> Así que lo primero que quiero hacer es espectáculo cómo se puede ejecutar fácilmente un contenedor.
Así que la belleza sobre Médico plazo, si en realidad
no encuentra una imagen a nivel local, por defecto se habla con el doctor Hub
y trata de encontrar allí y las descargas por usted.
Por lo tanto, incluye una Docker comando tirar, naturalmente.
>> Así que si hago un Docker plazo, hola-mundo.
Así, primero se va para tratar de localizarlo.
De lo contrario, como se puede ver aquí, no podía encontrar a nivel local.
Ahora mismo sólo sacó dos capas eso hizo que la imagen y me lo pasó.
El mundo hola es básicamente salidas, lo que has hecho.
Así que este es el más fácil, uno de los ejemplos más fáciles.
Así que en realidad yo sólo corrí y terminado el recipiente bien rápido.
>> Si quiero run-- y por cierto, si Quiero momento en que, para que lo sepas,
este es el tiempo que tarda en de hecho girar y contenerlo.
Estamos midiendo en milisegundos.
Así se puede ver lo mucho que esto puede realmente ayudará no sólo en las pruebas,
sino también incluso despliegue.
Así que eso es una nota rápida sobre eso.
Lo siguiente que soy vamos a hacer es en realidad
ejecutar una imagen que ya he preparado.
Así ventana acoplable plazo.
-d es sólo una bandera para decir que se ejecute en segundo plano.
Y -p asigna ciertos puertos.
Porque por defecto, el contenedores están aisladas,
lo que tiene que especificar exactamente cómo se puede acceder a ellos.
Y en este caso, yo estoy diciendo Docker para asignar un puerto aleatorio en el host
a un puerto especificado dentro el propio recipiente.
Y eso es básicamente donde el image-- espero que esto es la correcta.
>> Así lo hace descargas paralelas cada una de esas capas como se puede ver aquí.
Esas son de las capas haciendo la imagen final que he construido.
Va a tomar un segundo.
Y voilá.
>> Así que ahora si hago un ps estibador, que debería ver algo que se está ejecutando.
Debería ver el ID, la imagen que este se basa apagado,
y el comando que fue ejecutado.
Y la forma de acceder a ella es básicamente vas a ese puerto.
Así que me voy a ir a-- este es que estoy corriendo en AWS.
Voy a ir a 32,769.
Vaya.
Y aquí vamos.
>> Así que esto es en realidad un servicio web que muestra
cuyo contenedor está siendo sirve de.
Así se puede ver que es de A9F contenedor.
Y aquí se trata de la nombre del contenedor.
Así que ustedes pueden ver lo rápido que era en realidad no sólo tirar, sino también
implementar este contenedor.
>> Ahora el siguiente paso es buscar en Dockerfiles
y cómo podemos realmente construir nuevas imágenes.
Yo sólo voy a ir a buscar el clon, un MUESTRA Dockerfile basado en el anterior
diagrama, el de Apache y PHP.
Ojalá me acuerdo de mi repo.
>> Así que tengo mi repositorio en este momento.
Y vas a ver esto mucho en realidad.
No me instalo árbol.
>> Así que, básicamente vas a ver cómo la documentación de código fuente en torno
y, a continuación Dockerfile en una cómo empaquetar en realidad.
Así que es sólo una muestra de PHP que se hace eco CS50 hola.
>> Así que si quiero ejecutarlo, Haré acumulación ventana acoplable.
Tengo que construir primero.
Voy a nombrarlo demo_cs50.
Y usted necesita una etiqueta a ella también.
Así que vamos a llamarlo v1 dot.
Así como he descrito antes, lo que estoy haciendo hoy
es que estoy diciendo Docker ir uso que-- realidad, lo siento, mi mal.
No tomamos un vistazo en la propia Dockerfile.
Así que las únicas cosas de aquí están index.php, así como el archivo Léame
y un Dockerfile.
>> Así que si usted echa un vistazo a el Dockerfile, por lo que es
muy similar a lo He descrito anteriormente.
Es sólo un montón de pasos que ejecuta Docker
mediante la creación y derribar contenedores y [? contando?] ellos en una imagen.
>> Y, básicamente, se puede ver-- [inaudible] que aquí--
pero esto es de la repo local.
Se va a ir y index.php grab.
Así que ese es el único código fuente que son en realidad parte de su solicitud.
Todo esto son básicamente sistema de tuberías de funcionamiento,
obtener los paquetes correctos y Apache y PHP, y otras cosas.
Pero esto es en realidad tomando index.php y comprometerse en el contenedor,
en la imagen.
>> Así que si vas adelante y ejecutar el comando haciendo lo siguiente,
se going-- realidad, esto puede tardar un poco.
Esperemos que no toma demasiado tiempo.
Así que usted puede ver los pasos.
Y me animo a ir volver a casa hoy y probarlo.
Y Mano describirá exactamente cómo se hace eso.
Pero es realmente grande para ver exactamente lo que está sucediendo detrás de las escenas.
Pero es ridículamente fácil de construir imágenes y desplegar usando Docker.
>> Se trata de tomar un poco más de lo que esperaba.
>> Vamos a ver lo que sucede cuando usted-- enfriar.
Así como usted puede ver, cada uno de esos pasos representar líneas en el Dockerfile.
Y muestra que aquí construido con éxito esta imagen.
>> Así que si lo hago imágenes Trabajador Portuario, voy a ver todas las imágenes que tengo a nivel local.
Y uno de ellos se llama mi nombre de usuario, y el nombre de la imagen,
y la representing-- etiqueta sobre todo es una etiqueta de versión.
>> Así que ahora si quiero correr ella, lo hago plazo ventana acoplable.
Y yo sólo quiero hacer un -P -d. Haga v1.
Así que puedo ver ahora que tengo dos contenedores de correr, el que acabo de
creado y el hola Docker uno que me dieron pasado.
>> Y se puede ver aquí que asignado un puerto diferente.
Así que si voy a la misma IP, pero asigno un puerto: diferente espero que no lo hice.
Así que ahora se trata de la aplicación que acabo desplegado.
>> Si quiero hacer cambios, me puede editar rápidamente el código fuente
y haga lo siguiente.
Hagamos hola Harvard.
Así que ahora lo que está pasando a suceder es que yo soy
va a etiquetar con un diferente version-- oh,
No esta guy-- Etiquétalo con una versión diferente.
Y usted va a ver-- hacen ustedes esperáis
a tomar la misma cantidad de tiempo para construir una segunda vez o no?
Muy bien, y nadie sabe por qué?
Hablar alto.
>> AUDIENCIA: [inaudible]
>> NICOLA kabar: Es básicamente nos sólo cambian uno de los pasos posteriores.
Y por lo tanto se va a utilizar el caché y utilizar cada una de esas capas.
Y eso es realmente algo de la características asesinas de Docker
es la forma en que realmente utiliza y reutilizaciones hacerse cargo
su disco para el mismo piezas exactas de información.
>> Así que si hacemos lo mismo, tardó apenas un par de segundos.
Si queremos redeploy-- ahora Debería tener tres contenedores.
Pero éste está siendo que se presentan en el-- siete uno.
Así que ahora es el tercer recipiente.
Todo el mundo entiende lo que acabo de hacer aquí?
>> Así que ahora si desea compartir esta contenedor muy rápido con sus amigos,
sólo puede hacerlo ventana acoplable empujar el nombre del contenedor, con suerte.
Así que ahora que va a empujarlo a-- No me inscribí aquí.
Lo siento por eso.
Pero yo no voy a solucionar esto ahora.
Pero, básicamente, que un comando es justo subiendo empujarlo.
Y tú vas a ser capaz de ver si vas a Docker Hub
Y se conecte, eres va a ser capaz de verlo.
Y entonces usted puede simplemente apuntar todo el que está pasando
usar esa imagen para ir y tire de ella.
Y pueden usarlo.
>> Con eso, con suerte Yo como que demostré
lo fácil que es trabajar con Docker.
Y yo sólo voy a devolvérselo a Mano.
Y él va a partir de aquí.
>> MANO MARCAS: Muy bien gracias, gracias Nico.
¿Entonces qué?
Así que una de las cosas que querido hacer es poner juntos
por qué esto es un important-- qué Docker y por qué
contenedores son tal novedad importante,
una nueva manera de hacer realmente software.
>> Y antes que yo, me voy a solo introducir unas pocas estadísticas.
No voy a leer todo esto.
Pero esto muestra mucho sobre cómo popular este se encuentra en la comunidad.
Las tecnologías básicas Docker son de código abierto.
Así que eso es Docker motor, Compose, Swarm, un montón de otras cosas
es todo código abierto.
Y tenemos, ¿qué hice decir, 1.300 colaboradores.
Estás viendo ahora, si nos fijamos en la número de ofertas de trabajo, la última vez
buscamos, que estaba a unos 43 mil empleos aberturas mencionar específicamente
familiaridad con Docker.
Cientos de millones de imágenes tienen sido descargado de Docker Hub.
Y, bueno, mucho más grandes estadísticas.
>> Para los que tengan curiosidad, se fue escrito originalmente en Python
y luego reescrita en Ir.
Y sólo han pasado abrir source-- es sólo
sido puesto en libertad por cerca de 2 y 1/2 años, lo que significa que en 2 y 1/2 años,
hemos visto una enorme cantidad de crecimiento y la importancia
de esta en la comunidad.
Y por eso quiero hablar un poco sobre por qué.
>> Así que sólo reiterar algunos de Puntos clave de Nico, Docker es rápido.
Es portátil.
Es reproducible.
Y en ella se establece un entorno estándar.
>> Y qué-- ésta es mi mierda erradicar monolitos slide-- lo
está ayudando a la gente, que una gran cantidad de la industria del software
empezado a hacer en el década de 2000, se está moviendo
a partir de estos monolítica aplicaciones individuales
donde cada dependencia tenía que ser probado antes de que toda la aplicación tenía
para ser desplegado, que podría significar una página web
Sólo nos dieron una vez desplegado cada tres meses, o más,
a un servicio mucho más arquitectura orientada
o escribe en componentes diferentes de la arquitectura de la aplicación.
Y así permitiendo éstos tipo de arquitecturas
que aprovechan Docker se ejecute en estos tres
áreas principales de desarrollo, que se desarrollo escribiendo su código real,
probar su código, y su despliegue.
>> Entonces, ¿por qué es importante?
Si eres A-- permítanme darles un ejemplo.
Si usted es una página web desarrollador dispositivo, eres
el desarrollo de un sitio web que se basa en la base de datos que David produce aquí.
Lo sentimos, David, te estoy llamando.
Si quería implementar toda la cosa, que te
que esperar bajo un tradicional desarrollo de software monolítico
medio ambiente, que tendría que esperar hasta que se hizo con la base de datos
antes de poder realmente hacer cualquier cambio en su sitio web.
Habría que volver a implementar el toda solicitud para hacerlo.
>> ¿Y qué Docker le ayuda a hacer es cada trabajo persona en diferentes componentes
y actualizarlos a medida que avanzan, sólo hacer asegurarse de que las interfaces permanecen igual.
Así que lo que ha hecho se está desplazada personas
de hacer estos masiva monolítica software con arquitectura que
desplegado cada mes a un continuo integración y desarrollo continuo
ambiente.
>> Ahora bien, esto no es exclusivo de Docker, pero Docker hace que sea mucho más fácil,
lo que significa que es, básicamente, constantemente el despliegue.
Hablamos con empresas que son la implementación de aplicaciones de revestimiento públicos
miles de veces al día, ya que ven el valor en sólo hacer
pequeños cambios, y siempre ya que se ejecuta a través de las pruebas,
dejar que se salga a producción.
Nico siempre me decía anteriormente que en muchos entornos,
el ciclo de vida normal de un recipiente se mide en segundos,
mientras que una máquina virtual podrían ser medido en meses.
>> Quería tomar un ligero gire aquí porque soy
en una institución educativa.
Quería dar un ejemplo de cómo esto funciona en una investigación educativa
situación.
Así que hay una organización llamados bioboxes.
Bioboxes hace ADN análisis para los investigadores.
>> Ahora lo que encontraron fue que cuando un researcher-- y esto no es
la falla de cualquier particular, researcher-- pero cuando
un investigador desplegado un algoritmo para analizar,
De manera particular, una muestra de ADN, escribirían el software,
publicar eso, tal vez a GitHub o en otro lugar,
y luego fueron hechas.
>> Bueno, el problema era que No era necesariamente reproducible.
Porque el fin de entender el software,
se les prepara para el entorno exacta desarrollo
que el investigador que utiliza, por lo general su ordenador portátil o un servidor, o datos
centro que estaban usando.
Y, en consecuencia, era muy difícil para reproducir resultados de la investigación cuando
el análisis de muestras de ADN para buscar las cosas como incidence--
comparar la incidencia de ataques cardíacos sobre la base de ciertos genes que están presentes,
por ejemplo, o el riesgo de cáncer, o cualquiera de los otros tipos de cosas.
>> Así que en lugar de lo que hicieron fue empezaron a crear contenedores.
Y usted puede ir a bioboxes.org, que es una gran organización.
Y lo que hacen es que producen contenedores basan en la investigación.
Y entonces cada vez que alguien envía en su muestra, que pueden ejecutarlo.
Y tiene todo el entorno necesario para ejecutar el algoritmo
y producir los resultados.
Y están encontrando que son mucho más probable y mucho
más rápidamente capaz de devolver resultados a la gente.
>> Y de hecho, lo que la gente está haciendo se están ejecutando sus propios análisis de ADN,
enviar que para bioboxes, y entonces Biobox simplemente toma los datos,
corre contra la variedad de diferentes contenedores
para ver resultados diferentes basado en diferentes investigaciones.
Así que es una muy poderosa forma en que los investigadores
puede hacer una sola instancia que permite otras personas para tratar de reproducir
Los resultados.
>> Entonces, ¿cómo empezar?
Estamos bien soportado en Linux.
Así que si desea instalar nada en Linux,
usted utiliza su norma gestor de paquetes para instalar.
Si usted está utilizando una Debian, es get apt.
CentOS es muy rico.
Fedora Red Hat es rpm-- no me acuerdo.
De todos modos, todo está ahí.
Apoyamos una gran variedad de las distribuciones de Linux.
Puede comprobar ésos hacia fuera.
>> También tenemos opciones para que usted podría funcionar en Mac o Windows.
Ahora Nico mencionó anteriormente que sólo se admite en Linux.
Eso es cierto, ya que necesita un kernel de Linux.
Pero, se puede ejecutar en una máquina virtual.
Y lo que el Docker Toolbox hace, que se puede descargar,
que te da esa máquina virtual.
>> Así que sólo un rápido 48 segundo, creo, descargo.
Sólo busca en Docker Caja de herramientas, descargarlo a la Mac,
y esta parte es de curso acelerado porque quién
quiere ver una señal de descarga?
La instalación estándar de Mac, y entonces estás
ir a ver a Jerome puso en su contraseña.
Eso es muy emocionante.
Y luego de que se instale un todo grupo de herramientas.
Y particularmente, se hará instalar una línea de comandos.
Y entonces se podía ver Jerome probar sus imágenes.
>> Y a continuación, sobre esta base, se puede ver que YouTube
piensa que Nico le interesa Star Wars, El show de Jimmy Kimmel,
y creo que Ellen.
Creo que eso último es un clip de un show de Ellen.
>> Así Docker Toolbox viene aunque con algo más que la máquina Docker.
Así Docker máquina es lo que ayuda a
se configura una virtuales máquina en su Windows
o Mac-- su caja de Windows o Mac box-- y le ayuda a hacer el aprovisionamiento,
>> Pero también viene con Enjambre y Compose,
que están diseñados para ayudarle a hacer grande despliegues a escala de su aplicación.
Así que si usted desea gestionar grupos de nodos,
racimos de contenedores, componer y Enjambre son el camino a seguir al respecto.
>> Y por supuesto que viene con Docker Motor y Kitematic,
que es la interfaz gráfica de usuario de escritorio.
También debo mencionar Docker Registro, que no se incluye en la caja de herramientas,
pero es una manera para que pueda ejecutar su propio registros de Docker Imágenes como Docker
Hub, pero también puede simplemente usar Docker Hub como una manera de hacer eso.
>> Y, giro de la trama, que se está viendo que se ejecuta en un contenedor.
Y así es como estamos distribuir nuestras diapositivas.
Toda esta presentación es en realidad un conjunto de diapositivas HTML.
Y se está ejecutando en un contenedor, que puede obtener por--
>> NICOLA kabar: Sí, por lo que es correr a tiempo completo en mi Max.
Y estoy presentando de ella.
Y usted acaba de hacer Docker después instalar su caja de herramientas.
Usted sólo puede hacer una carrera ventana acoplable y hacerlo, y utilizar las diapositivas.
>> MANO MARCA: ¿Y eso es todo.
Así que gracias a todos por haber venido.
Y estamos dispuestos a responder a las preguntas.
Debo mencionar antes de que nadie deja existe camisetas allá.
Lo sentimos cualquiera que esté viendo esto en Livestream o vídeo,
pero tenemos Docker Camisetas allá.
Y sabemos estudiantes Docker, y en mi experiencia,
profesores también, como la ropa gratis.
>> Así que gracias a todos por venir.
Y síguenos en Twitter si quieres, o no lo hace.
No me importa.
También siga Docker en Twitter.
Eso también es interesante.
Y entonces eso es todo.
Docker.com.
Gracias.
>> [APLAUSOS]