‫¿Bueno, hola?
‫¿O debería darle la bienvenida al futuro de la administración de software con Docker y las herramientas de contenedores?
‫Este video es específicamente sobre Docker.
‫Tuvo muchas herramientas a lo largo de los años, pero este video trata sobre las tres principales
‫innovaciones que iniciaron toda la evolución del software de Docker en 2013.
‫Son principalmente tres cosas: la imagen de Docker, el registro de Docker y luego el contenedor de Docker.
‫La mayoría de nosotros, cuando pensamos en Docker, pensamos en el contenedor.
‫Pero estas tres innovaciones van juntas como el pan y la mantequilla, y lo llaman Add, Docker, build,
‫ship run.
‫Esos son los tres pasos para tomar un software de identificación que antes no era de contenedor, convertirlo en una imagen acoplable, ponerlo en un
‫registro, llevarlo a donde necesite ejecutarlo y finalmente crear un contenedor a partir de él.
‫De hecho, la Fundación Ciencia para la computación nativa en la nube, de la que hablarán muchas de las herramientas a
‫lo largo de todos mis videos, esos productos, herramientas y flujos de trabajo suponen en la mayoría de los casos
‫que está utilizando un flujo de trabajo de contenedor, una ejecución de construcción. .
‫Así que analicemos estos y exactamente cuáles son los tres.
‫En primer lugar, la imagen del contenedor y me gusta pensar en ella como un empaquetador de aplicaciones universal y hemos tenido muchos administradores de paquetes
‫a lo largo de los años.
‫De hecho, he perdido la cuenta y he estado cerca de todos los administradores de paquetes, pero nunca ha habido
‫nada que pueda recordar que haya sido multiplataforma entre sistemas operativos y lenguaje de aplicación independiente, lo que significa que se ejecutará en todas partes
‫y se ejecuta en cualquier cosa siempre que se ejecute Linux o Windows.
‫Ahora echemos un vistazo rápido a un archivo Docker, que es la receta o el conjunto de instrucciones para hacer una imagen de contenedor,
‫imagen de ventana acoplable e imagen de contenedor son el mismo término para lo mismo.
‫De hecho, la especificación de imagen de Docker fue tan popular que ahora es un estándar conocido como el estándar de imagen
‫OCI.
‫Entonces verá un conjunto de instrucciones y cada archivo Docker necesita un desde para comenzar.
‫Podemos partir de la imagen de otra persona.
‫Podemos tener muchas imágenes de, muchas de.
‫Así que entraremos en toda esa complejidad más tarde.
‫Pero aquí comenzamos con una pitón y nos abrimos camino hacia abajo.
‫De hecho, comenzamos con estos como capas.
‫Cada uno de estos comandos en el archivo Docker a veces se llama una estrofa con letras mayúsculas,
‫que incluye desde y luego ejecutar y avanzar hacia abajo porque los procesa de arriba hacia abajo
‫y creará capas que se mueven alrededor de los servidores como tarballs.
‫Y dentro de esas capas hay archivos, directorios y permisos de archivos y, a veces, metadatos que veremos más
‫adelante.
‫Cuando comience a crear esta imagen, comenzará esa primera línea e irá a buscar la imagen de Python desde Docker Hub o donde
‫sea que le indique que obtenga la imagen.
‫Y eso incluye solo a Python, sus binarios y sus bibliotecas.
‫No contiene controladores de host ni el kernel de Linux ni nada fuera de lo que Python necesita para ejecutarse.
‫Si Python necesita SSL abierto, eso se incluye en esa capa de la imagen.
‫Luego podemos pasar a la siguiente línea del archivo Docker.
‫Ese es un comando PIP para un instalador de dependencias de Python y está instalando el matraz.
‫Eso iniciará una nueva capa que agregará un matraz como lo haría con un comando de instalación normal de pip.
‫De hecho, lo que sucede en segundo plano es ejecutar pequeños contenedores rápidos para cada una de estas capas,
‫ejecutar los comandos o hacer lo que sea necesario dentro de esas capas y luego almacenarlos
‫como su propia ubicación distinta en el host de Linux que está construyendo esto.
‫Así que estamos apilando capas aquí y luego vamos a la siguiente línea, el comando copiar, el trabajo.
‫Solo hay un cambio de metadatos.
‫Simplemente cambia de ubicación en el sistema de archivos, no es gran cosa.
‫El comando de copia copia nuestro código fuente del host en el que estamos construyendo en su propia capa apilada encima de
‫las demás.
‫Estos juntos forman una imagen usando el comando docker build.
‫Esta es una de esas cosas sobre Docker que se volvió tan fácil de usar porque solo necesitábamos este simple
‫comando de compilación de Docker para tomar un montón de cosas complejas que estaban sucediendo en el archivo de Docker y convertirlo en
‫una sola imagen.
‫Esa es solo nuestra aplicación y solo las dependencias que necesita y nada más.
‫Esa es la primera parte de la ejecución del barco de construcción que se está construyendo con Docker.
‫A continuación, hablemos del registro.
‫El registro de Docker es para la distribución de aplicaciones.
‫Cada sistema de empaquetado de aplicaciones tiene una forma de distribuir esos paquetes y el registro de Docker no es
‫diferente ahora.
‫Se conoce simplemente como especificación de distribución OCI o especificación de registro OCI.
‫Por lo tanto, es un estándar nuevamente en toda la industria sobre cómo mover imágenes de contenedores.
‫Y está en todas partes.
‫Cada nube tiene uno.
‫Docker hub es el predeterminado y probablemente el más popular.
‫GitHub tiene un Bitbucket GitLab.
‫Todos tienen sus propios registros de imágenes y usted puede ejecutar el suyo propio.
‫Probablemente haya al menos una docena de proyectos de software gratuito, de código abierto y de pago que le permitan
‫almacenar sus imágenes de Docker en ellos.
‫Así que analicemos cómo funciona.
‫Primero, tenemos nuestra imagen que acabamos de construir, y esa imagen tiene un hash sha único que identifica todas esas capas
‫juntas de una manera que podemos garantizar que si observamos el hash en dos sistemas diferentes, podemos estar
‫seguros de que es exactamente los mismos archivos, exactamente los mismos metadatos que acabamos de crear.
‫Esas capas de imagen van juntas y se distribuyen.
‫Podemos usar algo como Docker Push para tomar esas capas de imágenes y subirlas a un registro.
‫Puede usar uno de los muchos registros, como mencioné, pero una vez que está allí, puede
‫ir a otra máquina y hacer un Docker pull, que extraerá una copia idéntica de esa imagen en esa máquina, tal como la
‫habíamos construido. la primera maquina.
‫Y este es uno de los principios básicos de Docker, es que podemos tomar el
‫software que creamos en una máquina con todas sus dependencias y ejecutarlo exactamente de la misma manera en otro
‫sistema que podría ser una distribución de Linux completamente diferente. o ventanas.
‫Si está en Linux y crea una imagen de Linux que debe ejecutarse en Linux, ya que ejecuta binarios de Linux.
‫Si lo creó en CentOS y lo ejecutó en Bonita, sería exactamente la misma aplicación y dependencias, independientemente
‫de esa distribución.
‫Finalmente, llegamos al propio contenedor Docker.
‫Una vez que hayamos realizado todos esos pasos para crear la imagen, colocarla en una ubicación, podemos acceder a
‫ella desde nuestros servidores y luego descargarla en nuestros servidores.
‫Podemos ejecutarlo.
‫Imaginemos que tenemos un servidor con Linux.
‫Puede estar ejecutando Windows, pero en este caso solo nos centraremos en Linux.
‫Docker se ejecutará en segundo plano, lo que se conoce como el motor de Docker.
‫Y el motor en esta única máquina orquestará o administrará todas las cosas diferentes
‫que deben suceder para descargar imágenes, verificar que sean exactamente lo que se suponía que se descargaría
‫y luego finalmente ejecutarlas.
‫Luego obtenemos la imagen que acabamos de descargar con una encuesta de Docker y luego vamos a ejecutar un comando.
‫No es realmente importante que aprenda los comandos todavía, pero es un comando de ejecución de Docker.
‫Esta es la parte de ejecución de la ejecución de la nave de construcción.
‫Y en este caso, estamos ejecutando esa aplicación de Python en su propio contenedor.
‫Ese contenedor se conoce como espacio de nombres.
‫Esa es la función de Linux que evita que la aplicación que se ejecuta en este contenedor vea el
‫resto del sistema operativo.
‫Obtiene su propio sistema de archivos en blanco y solo incluirá los archivos que estaban en esa imagen que acabamos de
‫crear.
‫Obtendrá su propia dirección IP y su propia NIC virtual y su propia lista de procesos y básicamente se ve como
‫su propio sistema allí dentro.
‫Luego, si ejecutamos ese comando de ejecución de Docker nuevamente con nuestro nombre de imagen o hash de imagen, entonces obtenemos un contenedor
‫idéntico ejecutándose uno al lado del otro.
‫Ahora estos dos procesos están aislados el uno del otro.
‫Entonces, la aplicación de Python, un contenedor uno, no puede ver la aplicación de Python y el contenedor dos.
‫Y si cambia un archivo en el contenedor al contenedor uno, no verá ese archivo de forma predeterminada.
‫Si agregamos un segundo servidor con una segunda instancia del motor Docker ejecutándose e hicimos lo mismo, podríamos tener
‫una configuración de alta disponibilidad con nuestra aplicación, ejecutándose muchas veces por redundancia o un mejor rendimiento o
‫cualquiera que sea el motivo para ejecutar más que uno de ellos.
‫Serán idénticos desde el punto de vista del sistema de archivos, los permisos y los metadatos.
‫Ahora, hay mucho más que podemos aprender sobre este tema, por lo que el curso que tengo ahora
‫es tan largo.
‫Pero estas siguen siendo las tres cosas que no han cambiado después de Docker.
‫Primero los conceptualizó.
‫La idea de construir y ejecutar el barco es uno de los principios básicos del timón de contenedor y Kubernetes.
‫Usted nombra el proyecto en el ecosistema nativo de la nube y probablemente asume que tiene este tipo de
‫flujo de trabajo típico para sacar sus aplicaciones de las manos de su desarrollador a los sistemas de prueba y finalmente a los
‫servidores de producción.
‫Son estos mismos tres pasos, así que espero que estés empezando a comprender un poco que entiendes por qué estos
‫son los tres componentes clave.
‫Incluso hoy, muchos, muchos años después de que se inventara todo esto, averigüemos qué sigue.