‫Todo bien.
‫Donde sea que esté ejecutando su Docker, en realidad podemos crear un enjambre de un solo nodo para nuestras
‫propias pruebas.
‫La forma en que puedo saber si Swarm está activado o no, solo puedo hacer una información del acoplador y notará que Swarm
‫está inactivo.
‫Entonces sabemos que Swarm no se ha habilitado aquí. Nuevamente, de forma predeterminada, Docker no habilita ninguna
‫de las funciones de Swarm.
‫Puedo ejecutar un inic de enjambre de portador para inicializar. Eso tomó aproximadamente medio segundo y terminamos.
‫Lo que tenemos ahora es un enjambre de un solo nodo con todas las funciones y funcionalidades que
‫obtenemos de fábrica.
‫Así que esa fue probablemente la demostración más corta de todo este curso.
‫Quiero decir, ¿qué acaba de pasar? Escribimos un comando y magia. En realidad no era ninguna magia.
‫Hubo muchas cosas muy rápidas y eficientes en la programación de Go de Docker, pero básicamente, desde el primer
‫momento, hace
‫un montón de PKI y cosas de seguridad. Crea un certificado raíz para el enjambre que usará para establecer
‫certificados de confianza y firma para todos los nodos y todos los administradores. es un administrador frente a un trabajador.
‫Creará un certificado especial para este primer nodo de administrador porque
‫Luego crea estos tokens que realmente podemos usar en otros nodos para unirnos a este enjambre.
‫Luego hay un montón de otras cosas en el fondo donde se habilita la API de enjambre y se crea algo llamado
‫Base de datos de consenso de balsa, del que hablaremos más adelante en una parte de producción del curso.
‫Para que lo sepas, Raft es un protocolo que realmente garantiza la coherencia entre varios nodos, y es
‫ideal para usar en la nube, donde no podemos garantizar que haya algo disponible en
‫cualquier momento.
‫Crea esa base de datos en el disco. primer administrador, y realmente lo encripta.
‫Almacena la configuración del enjambre, y ese
‫Asumiendo que estás en la Versión 1. 13 o más nuevo. Luego esperará a que aparezcan otros nodos antes
‫de que empiece realmente a replicarles la base de datos.
‫De nuevo, todo este tráfico que estaría haciendo una vez que creamos otros nodos, todo estará encriptado.
‫Uno de los componentes clave de Swarm que lo diferenció cuando salió por primera vez
‫fue que no necesitábamos un sistema de almacenamiento de valor clave adicional o alguna arquitectura de base de datos para ser la
‫gestión de configuración back-end de nuestro enjambre.
‫necesita para hacer redundante que almacenará toda la información sobre su sistema de automatización y orquestación.
‫Si ha estado en la industria durante años o décadas, existe este concepto típicamente del config db, que es
‫este sistema de base de datos separado que generalmente Swarm en realidad ha incorporado eso directamente
‫en Docker directamente en el daemon y lo maneja para nosotros.
‫Realmente nunca necesitamos hacer nada. No hay contraseñas de qué preocuparse. No hay servicios especiales para
‫iniciar o algo por el estilo. si quiero agregar un trabajador al
‫Entonces, de vuelta a la línea de comando. enjambre, realmente necesito cortar y pegar
‫Notarás aquí de lo que se trata. esto en los otros servidores que agregaría. Más tarde, en realidad vamos a construir un
‫enjambre de múltiples nodos, pero por ahora, vamos a mantener esto en un solo nodo. Echemos un vistazo a algunos de los comandos saldrá de ella.
‫Lo primero es que podemos hacer docker node ls. En este caso, solo estamos viendo el nodo de
‫administrador que hemos creado.
‫Notarás que está marcado como líder, y solo puede haber un líder a la vez entre todos los gerentes.
‫Nuevamente, dado que solo tenemos uno, obviamente es el líder. Podemos
‫ver ayuda para ver qué otras opciones tenemos aquí. En realidad, los comandos de nodos que se utilizan para poner y quitar servidores del enjambre, o promocionarlos de los trabajadores
‫a los gerentes, o degradarlos de los administradores a los trabajadores.
‫Si vuelve atrás el comando de enjambre de
‫dockers por un rato, notaremos que en realidad es un alcance muy limitado para mandar.
‫Realmente solo es para inicializar, ya sea unirse o irse.
‫El nuevo comando de desbloqueo, del que podemos hablar en una conferencia posterior.
‫Por ahora, centrémonos en el nuevo y emocionante comando del servicio Docker.
‫De nuevo, el servicio en un enjambre reemplaza la ejecución de Docker.
‫No lo sé con certeza, pero realmente creo que esto se centró en la
‫idea de que no queríamos romper la funcionalidad de ejecución de Docker existente, pero
‫la ejecución de Docker siempre se construyó desde cero como una única solución de host.
‫Toda la idea era centrarse en los contenedores locales en el sistema con el que está hablando. comenzamos a hablar sobre un clúster, no nos importan tanto los nodos individuales.
‫Mientras que, cuando
‫En realidad, probablemente no los nombremos. Los tratamos como ganado, si alguna vez has
‫oído hablar de la analogía entre mascotas y ganado donde son solo un número.
‫Realmente no vamos individualmente a cada nodo y ponemos en marcha un contenedor individual.
‫Realmente solo lanzamos los requisitos al enjambre
‫en forma de servicios y luego orquestarán cómo debe explicar
‫todo eso, en qué nodos deben estar, y solo sabemos que nos respalda. Docker Service Create es cómo le damos
‫algunos nuevos pedidos. Hagamos algo realmente simple.
‫Dejemos que comience la imagen alpina. Entonces vamos a tener la imagen
‫Alpine solo use ping para golpear 8. 8. 8. 8, que en realidad es un servidor DNS
‫de Google, pero realmente solo queremos darle algo que hacer mientras investigamos lo que sucede.
‫Entonces verás como se ejecuta Docker, escupe una ID, solo que esa no es la ID del contenedor. Esa es realmente
‫la identificación del servicio.
‫Verás que ahora tenemos un servicio en la lista. Al igual que con nuestro comando de ejecución
‫del acoplador, dado que no
‫lo nombramos, le dio un nombre aleatorio. Podemos ver que en realidad ya está activado.
‫El de uno. Cuando mira servicios,
‫siempre verá este número con un / en el medio. Eso representa el de la izquierda es cuántos se están ejecutando en realidad.
‫Y el de la derecha es cuántos has especificado para que se ejecute.
‫El objetivo del orquestador es hacer que estos números coincidan, sea lo que sea que tome.
‫Pero esto de nuevo en realidad no nos muestra el contenedor real.
‫Esto realmente solo nos muestra una lista de nuestros servicios, por lo que podemos profundizar un poco más.
‫Hacemos un servicio de acoplador ps, y luego le
‫damos el nombre o la identificación del servicio, y eso realmente nos mostrará las tareas o contenedores para este servicio. de varios servidores, es posible que necesitemos saber en qué servidor se está ejecutando.
‫Verá que es similar al comando l contenedor docker, pero en realidad ahora tiene este componente de
‫nodo porque cuando se trata de escenarios Notará que realmente le dio
‫un nombre de incremento en el nombre del servicio.
‫Si regresamos al comando del contenedor docker ls, eso sigue funcionando.
‫En este caso, la orquestación de Swarm en realidad está agregando
‫cierta información a los nombres y a las imágenes reales que se están ejecutando. También cubriremos algunas de esas sutiles diferencias más adelante.
‫Por ahora, tomemos ese servicio y aumentemos la escala. Para eso, usamos la actualización del servicio del acoplador, y luego el nombre de nuestro servicio, o el ID,
‫en este caso, haré la identificación. sobre el servicio.
‫Y quiero cambiar un atributo
‫En este caso, quiero cambiar el número de réplicas.
‫Entonces, si hacemos un servicio de acoplador de nuevo, ahora vemos tres de tres. Si hacemos un
‫servicio de acoplador ps, actualmente vemos tres tareas. Notarás que dos se crearon hace unos segundos.
‫Si fuéramos lo suficientemente rápidos, y si desplegáramos algo lo suficientemente grande, podríamos ejecutar el servicio
‫ls y realmente ver que nos muestra cero de tres. Uno de tres.
‫En realidad aumentará a medida que las cosas comiencen. Da la casualidad de que Alpine ya estaba en esta máquina, en términos de su imagen, y no tomó
‫mucho tiempo iniciar un comando de ping.
‫Simplemente no podríamos ser tan rápidos.
‫Lo interesante de ese comando de actualización es que puede imaginarse
‫la diferencia entre el comando de ejecución de
‫Docker que podría usar en un único servidor de prueba o desarrollo o en su
‫máquina local, y las preocupaciones de producción de mantener siempre algo disponible tanto como sea posible.
‫Esa es una de las metas de diseño de Swarm. Ese comando que aún no hemos utilizado es el comando
‫de actualización de Docker. Ese era un comando para los contenedores Docker
‫Run que nos permitía actualizar ciertas variables en nuestro contenedor en ejecución sin tener que matarlo y reiniciarlo.
‫Casi todas esas opciones están relacionadas con la limitación y el control del uso de recursos para ese contenedor.
‫Porque esa es una de las cosas típicas que ves cuando estás ejecutando una aplicación
‫a largo plazo es que necesitas cambiar sus recursos tal vez porque las bases de datos se han hecho más grandes y necesitan más RAM.
‫O tal vez tiene un proceso fuera de control que está consumiendo demasiada CPU y necesita limitarlo.
‫Si hacemos una ayuda en el comando de actualización del servicio Docker, verá que tenemos muchas más opciones.
‫Porque el objetivo de un servicio Swarm es
‫que pueda reemplazar contenedores y actualizar los cambios en el servicio sin eliminar todo.
‫uno a la vez para realizar un cambio y hacer una actualización progresiva, que es el patrón verde azul del que hablamos.
‫Si tuviera un servicio con tres contenedores, técnicamente podría eliminar Es por eso que vemos muchas más opciones
‫aquí porque podemos cambiar estas opciones que pueden requerir un reinicio del contenedor, pero el enjambre
‫se asegurará inteligentemente de que la forma
‫en que las actualizamos esté en un patrón que garantice la disponibilidad constante.
‫Así que volvamos a nuestra lista de contenedores de docker muy rápido. Notarás que tenemos estos tres ahora, y qué pasaría si entro y, en cierto modo como digamos que gané al primero y
‫un pícaro, hice un contenedor Todo bien.
‫contenedor, y especifiqué uno de estos contenedores, y lo forcé. simplemente lo saqué. Ahora hago un servicio de acoplador ls, ¿y ves cómo muestra dos de tres?
‫de hecho me llevé un contenedor en funcionamiento, lo identificará y lanzará uno nuevo en cuestión de segundos para reemplazar el que se cayó.
‫Debido a que entré detrás de Swarm
‫y
‫Entonces, si hice un servicio de acoplador ps en Frosty, verá que realmente muestra que el historial de
‫la primera tarea aquí en la lista es que falló uno y comenzó uno nuevo hace 24 segundos.
‫Esta es una de las responsabilidades de un sistema de orquestación
‫de
‫contenedores es asegurarse de que los servicios que especificó estén siempre en ejecución, y si fallan, se recupera de esa falla. ¿Qué es diferente de Docker Run, verdad? Docker Run nunca recrearía
‫un contenedor.
‫Por eso, cada vez que hacemos alguno de estos comandos del servicio Docker, no estamos hablando
‫directamente a una acción como crear un contenedor.
‫En realidad le estamos diciendo a un sistema de orquestación, oye pon este trabajo en tu cola.
‫Cuando pueda acceder a él, realice las acciones en el enjambre que he solicitado aquí. Esa
‫es una gran diferencia.
‫Es sutil en la línea de comandos, pero es una gran diferencia porque significa que hay posibilidades de reversión.
‫Hay una mitigación de fallas y mucha inteligencia integrada en eso.
‫realmente quisiera eliminar todos estos contenedores, tendría que eliminar el servicio.
‫En este caso, si Tendría que hacer el servicio de Docker.
‫Y luego el helado.
‫Si hacemos un servicio de acoplador ls, no vemos nada. Si hacemos un contenedor docker ls,
‫vemos tres contenedores.
‫Ah, y ahí vamos.
‫Eso muestra que la automatización ocurre en el back-end.
‫Pudimos mostrar rápidamente que eliminamos el servicio, pero el sistema de
‫orquestación no había pasado por todos sus procesos de limpieza del servicio y la tarea detrás de él. de Docker que hemos tenido anteriormente en este curso.
‫Estos conceptos deberían ser bastante
‫fáciles de entender porque simplemente están expandiendo los conceptos de ejecución
‫A continuación, construyamos un enjambre de múltiples nodos y comencemos a escalar nuestros contenedores.
‫