‫Los requisitos para esta conferencia son que haya visto las conferencias de red anteriores y comprenda los conceptos clave
‫para las redes de Docker y los comandos que la acompañan.
‫Todo bien.
‫Y esta conferencia, aprenderá y jugará con DNS y cómo afecta a los contenedores en redes
‫personalizadas y redes predeterminadas.
‫Vamos a
‫repasar rápidamente lo importante que es tener un buen DNS porque no puede confiar en las direcciones IP dentro de los
‫contenedores, ya que las cosas son muy dinámicas. Analizaremos las diferencias entre las redes predeterminadas y personalizadas
‫con respecto a cómo manejan el DNS.
‫Y luego revisaremos la opción --link para la ejecución del contenedor para habilitar DNS en la red
‫puente predeterminada.
‫Entonces, hay una cosa más que es crucial para todos estos contenedores y redes virtuales y
‫para que se comuniquen entre sí; y eso es nombrar. Porque en el mundo de los contenedores que constantemente se
‫lanzan y desaparecen, se mueven, se expanden y se reducen, y toda la maravilla de estos microservicios que
‫vemos surgir en todas partes, es que ya no podemos confiar fácilmente en las direcciones IP como la forma de hablar
‫de una cosa a la otra. Porque no podemos suponer minuto a minuto que las direcciones IP
‫van a ser las mismas.
‫El contenedor puede desaparecer o puede fallar y luego Docker lo trae a otro lugar.
‫Es demasiado dinámico y demasiado complicado para lidiar con eso.
‫Entonces resulta que hay una solución incorporada para esto, y eso es la nomenclatura de DNS. Docker usa los nombres de los contenedores como el
‫equivalente de un nombre de host para los contenedores que se comunican entre sí.
‫Ahora, si recuerdas, solo teníamos dos contenedores funcionando ...
‫si recuerda que el Nginx estaba en una nueva red, llamada my_app_net.
‫Correcto.
‫Y tiene un contenedor en él. Debido a que creé esta nueva
‫red, esa no es la
‫red puente predeterminada, en realidad obtiene una nueva característica especial, que es la resolución automática de DNS para todos los contenedores en
‫esa red virtual de todos los otros contenedores en esa red virtual usando sus nombres de contenedor.
‫Si tuviera que crear un segundo contenedor en esa red virtual, podrán encontrarse, independientemente de cuál sea
‫la dirección IP, con sus nombres de contenedor.
‫Entonces intentemos esto: nombre de ejecución del contenedor docker ... y lo llamaremos mi nginx ... y vamos a especificar la red
‫como la red de mi aplicación a
‫partir de la imagen nginx.
‫Ahora, si miramos esa red, deberíamos ver 2 contenedores; y, si hago un exec de contenedor
‫de Docker, desde el nuevo contenedor que acabo de crear, vaya, también necesitamos la
‫TI allí, y hacemos un ping al nuevo nginx, notará que
‫la resolución de DNS simplemente funciona. Esto hace que sea muy fácil para usted tener un contenedor
‫y necesita establecer un archivo de configuración para hablar con él, tal vez digamos que el
‫servidor PHP se comunicará con el servidor MySQL. Ctrl-c fuera de eso, y verás que también funciona a la inversa.
‫Si salto al nuevo contenedor nginx e intento hacer ping a mi ngnix, verá que la resolución funciona en
‫ambos sentidos.
‫Y esto es lo que resuelve un gran problema cuando está girando contenedores porque no puede predecir cuánto
‫tiempo durarán y dónde podrían estar dentro de un minuto en un diseño de producción
‫donde tiene un grupo de Servidores Docker Swarm.
‫Por lo tanto, puede que no cambie mucho en su máquina local, pero si detiene 3 o 4 contenedores,
‫y luego inicia los mismos contenedores, y los inicia en un orden diferente,
‫es posible que no tengan la misma dirección IP. Pero sus nombres de host, o sus nombres de contenedor, siempre
‫serán los mismos.
‫Y para que pueda confiar en ellos.
‫Ahora debo tener en cuenta que si hacemos una lista de la red de acopladores, la red puente predeterminada tiene una desventaja aquí.
‫No tiene el servidor DNS integrado por defecto.
‫Entonces puedes usar el enlace.
‫Entonces, cuando cree un contenedor, notará que hay una opción de enlace y en realidad puede especificar enlaces
‫manuales entre contenedores en esa red puente predeterminada.
‫Pero realmente, es mucho más fácil crear una nueva red para sus aplicaciones para que no tenga que hacer
‫esto todo el tiempo.
‫Y en una sección futura, cuando hablemos de Docker Compose, verá cómo mucho de esto se
‫vuelve aún más fácil porque Compose creará automáticamente nuevas redes virtuales cada vez que inicie una aplicación con ella.
‫Por lo tanto, la comunicación entre sus contenedores se vuelve aún más fácil.
‫Como resumen rápido, cubrimos en esta conferencia sobre cómo los contenedores no pueden realmente, o no deberían realmente, confiar en las direcciones
‫IP para hablar entre sí porque simplemente no se puede confiar en ellas.
‫Y ese DNS es realmente el estándar aquí para la forma en que hacemos la intercomunicación entre
‫contenedores en el mismo host y entre hosts.
‫Por lo tanto, le recomendé que siempre cree redes personalizadas, ya que es más fácil de esa manera que
‫hacer un enlace todo el tiempo.
‫Y luego te di un adelanto sobre Docker Compose y cómo va a facilitar todo esto,
‫especialmente la creación de redes.