‫Hola.
‫Este video es por dos razones.
‫Uno, es en caso de que no quieras ejecutar Docker localmente.
‫Usted quiere ejecutar Docker en un servidor de forma remota, ya sea para la producción, algún otro uso del servidor, o
‫simplemente porque no se puede ejecutar Docker localmente para los recursos de rendimiento de licencias, usted sabe que no es el administrador
‫local.
‫Pueden ser todo tipo de razones.
‫Así que esto es sobre el motor Docker para servidores Linux.
‫La razón por la que digo que es el motor y los servidores son componentes clave en los que entraremos a lo largo de este vídeo.
‫Este vídeo se va a centrar en conseguir la instalación más actualizada de Docker desde la ubicación correcta, que es diferente
‫a la de los gestores de paquetes de Linux por defecto.
‫A continuación, nos aseguraremos de que el suministro se instala en el lugar desde el que se va a operar, por
‫lo que no ssh ing en el servidor todo el tiempo.
‫En realidad vamos a configurarlo para poder controlarlo de forma remota, ¿cuál es la mejor forma de ejecutar
‫un motor Docker en un servidor Linux?
‫Y un pequeño descargo de responsabilidad, si no has visto el vídeo anterior, que trata sobre el
‫escritorio Docker para escritorios Linux, esto no es eso.
‫Esto es antes de que tuviéramos el escritorio Docker, sólo teníamos el motor Docker.
‫Todos los escritorios Docker tienen el motor Docker.
‫Lo gestiona por ti, pero el motor Docker, es un único binario llamado Docker D o el Docker Daemon, y que puede
‫operar en cualquier servidor Linux.
‫Mientras tengas un kernel de Linux, puedes ejecutar lo mismo.
‫Se puede ejecutar en un servidor de Windows, el Docker RD ESXi que en realidad podría ejecutarse como un servicio en un servidor de Windows para ejecutar
‫Windows Containers.
‫Pero no vamos a hablar de eso en este vídeo.
‫Así que el escritorio Docker, que es para ejecutar en su sistema local, que es realmente sólo para el uso local de
‫Docker.
‫Pero este es el motor Docker que puede funcionar en cualquier sistema Linux, ya sea local o remoto,
‫ya sea una VM o un servidor físico, ya sea una Raspberry Pi, lo que sea.
‫Si se ejecuta un kernel de Linux, está en la lista y Docker tiene una lista compatible de construcciones soportadas probadas
‫que saben que funcionan.
‫No son todas las distribuciones de Linux que existen.
‫No incluye BSD, que no es técnicamente Linux, y realmente se centra en los grandes,
‫ya sabes, el Central West, el red hat, el Ubuntu, el Debian, ese tipo de cosas.
‫Y hay varias arquitecturas que soportará.
‫Así que como referencia en este vídeo, verás el enlace a esta página que te muestra la lista de distribuciones
‫de Linux actualmente soportadas para el motor.
‫Por supuesto, voy a utilizar Docker en Ubuntu, mi distribución de Linux para servidores favorita, y voy a guiarte
‫por ello.
‫Voy a pasar por alto los detalles porque en realidad sólo vas a leer esto o ejecutar el guión, del que
‫hablaremos a continuación.
‫Ahora, sí, te estoy dando enlaces como los recursos a este video para toda la documentación en torno a todas las formas
‫de instalarlo en variantes de Linux, distribuciones como Ubuntu, Fedora y todas las demás.
‫Pero realmente la forma más fácil de hacer esto la mayoría de las veces es simplemente ejecutar un script.
‫Si escribes en tu navegador, obtienes Docker.
‫Eso te dará un script de shell que puedes mirar, puedes descargar, puedes ejecutar automáticamente.
‫Con Curl, se pretende básicamente obtener la configuración correcta y desinstalar las cosas viejas, instalar las nuevas, asegurarse
‫de que estás recibiendo las fuentes correctas y todas esas cosas de una sola vez.
‫Así es como siempre he instalado Docker, desde que lo conocí hace mucho, mucho tiempo, al principio
‫del proyecto.
‫Así que tal vez para el aprendizaje, tal vez la primera vez que se instala Docker en un servidor Linux, usted va a
‫seguir la documentación que va paso a paso con su gestor de paquetes.
‫Tal vez sea apt, tal vez sea yum, tal vez sea APK sólo dependiendo de lo que estés haciendo en tu distro de Linux.
‫Pero voy a usar este script, que es más fácil.
‫Básicamente, se trata de rizar el rizo en un archivo y luego ejecutar ese archivo con un intérprete de comandos.
‫Y esto es exactamente lo que esa secuencia de comandos, si usted fue a la última diapositiva, le diría que copiar y pegar
‫eso y copiar hacia abajo y luego ejecutarlo.
‫Así que estamos haciendo eso y va a averiguar qué distribución estoy en, qué versión de esa distribución,
‫si son compatibles se conectará en este caso apt al gestor de paquetes con la clave para asegurarse de que usted consigue
‫el derecho.
‫Repositorio para su instalación, y luego ese comando se ejecuta durante unos minutos dependiendo de la velocidad de su servidor.
‫Y luego terminas aquí de vuelta en tu prompt de shell con la línea de comandos de Docker, el motor o Daemon
‫de Docker y algunas otras utilidades.
‫Por lo general, viene con algunos plug-ins como kit de construcción para la construcción de imágenes, componer para ejecutar eso.
‫A lo largo del curso nos ocuparemos de todo eso.
‫Así que date cuenta de que hay quizás cuatro o cinco binarios flotando en tu sistema.
‫Ahora, al igual que todas las demás formas de instalar Docker, haz un comando de versión del espacio Docker, escribe
‫ese comando en tu shell, y deberías obtener al menos la versión del cliente de la línea de comandos y la del servidor.
‫Cuando se recupera esa versión del servidor, significa que se puede hablar con la API del servidor en ese servidor.
‫Si estás en el shell del servidor, entonces técnicamente está hablando con los hosts locales usando un socket.
‫Sólo quiero recordarte que todo lo que acabas de hacer ahí es de código abierto, el motor Docker,
‫la línea de comandos Docker, todos los plug ins ahí.
‫Todos ellos son de código abierto.
‫El escritorio Docker con licencia Apache, sin embargo, a partir de los videos anteriores está incluyendo todas estas
‫cosas, así como el software de código cerrado o con licencia de Docker.
‫El escritorio Docker es más bien un superconjunto de un montón de cosas diferentes.
‫El motor Docker que estamos instalando aquí es sólo el mínimo.
‫Es el demonio que necesitas para ejecutar un contenedor en Docker.
‫Y como recordatorio, como he hecho en los vídeos anteriores, si utilizas el comando de inicio de sesión de Docker porque
‫sólo tienes acceso a la línea de comandos aquí, si escribes en el espacio de Docker, iniciar sesión,
‫puedes iniciar sesión con tu ID de Docker y eso te dará más piscinas.
‫Si lo recuerdas, las piscinas son las cosas de los primeros vídeos de este curso que contienen el software.
‫Se extrae la imagen y se ejecuta como un contenedor y se hace ese cierto número de veces.
‫Y Docker puede eventualmente quejarse y decir, Hey, mira, has excedido y creo que el número
‫actual es como 106 horas.
‫Dice que has superado el número de piscinas.
‫Bueno, si estás detrás de un firewall corporativo y todos en tu compañía están usando Docker y están
‫todos detrás de una sola dirección IP, ese límite puede ser golpeado bastante rápido.
‫Pero si simplemente entras, Docker te da al menos el doble de pulls para nada de forma gratuita con la cuenta gratuita si pagas
‫por Docker, cosa que no tienes que hacer con este curso, pero si quisieras pagar
‫por Docker por una suscripción a Docker, obtendrías, creo, pools ilimitados siempre que entraras
‫con esa cuenta.
‫Pero pasemos a controlar este demonio localmente.
‫Ahora, lo que va a suceder aquí es cualquier sistema que va a utilizar, digamos que esta es una configuración
‫de servidor, o podría ser simplemente que usted no desea ejecutar Docker en su máquina local.
‫Tal vez no se te permita, tal vez no puedas.
‫Tal vez no tengas suficientes recursos.
‫Tal vez no seas root en tu máquina local.
‫Pero tiene la capacidad de ejecutar Docker en esta máquina remota.
‫Bueno, no tienes que sentarte en el shell de esa máquina remota y escribir todos tus comandos allí y hacer todo
‫tu trabajo de código fuente allí o clonar el repo para este curso.
‫Ahí no puedes hacer nada.
‫Puedes ignorar eso.
‫Puedes instalar Docker allí y vamos a hablar con él de forma remota.
‫Ahora, volvamos atrás por un segundo.
‫Hace años, antes de que existiera esta función de túnel SSH en algún momento de 2018, antes de eso habrías tenido que
‫hacer ssh en el servidor y hacer todo en el servidor y eso a veces apesta porque entonces tienes que copiar
‫tus cosas y simplemente no es genial.
‫Tienes todo lo demás localmente, tienes tu editor de código, tal vez estás usando código de Visual
‫Studio y tienes tu código fuente para esta clase y tienes cosas aquí, ¿verdad?
‫Así que lo ideal es que hagas todo ese trabajo en tu máquina local.
‫Docker lo solucionó cuando salió por primera vez en 2013.
‫La única manera de hacerlo era a través de un puerto TCP, que no tiene autenticación incorporada
‫y por defecto no proporciona cifrado para la conexión.
‫Por lo tanto, en general se consideraba una mala manera de conectarse a Docker.
‫Era algo que sólo querías hacer en redes seguras, y sobre todo porque no estaba autentificado.
‫Técnicamente podría permitirte el acceso remoto de root a un servidor si simplemente te conectas desde cualquier lugar
‫que tenga acceso a ese puerto, eso es una mala idea.
‫Así que Docker entonces añadió esta nueva característica incorporada que podemos simplemente hacer una conexión SSH transparente, siempre
‫y cuando usted puede SSH a ese servidor y tener la autenticación o un certificado, preferiblemente a SSH en ese servidor.
‫Puedes hacerlo y no necesitas pasar por el aro ni exponer ningún puerto adicional.
‫Así que eso es lo que vamos a hacer.
‫Así que este paso aquí es simplemente conseguir el cliente de línea de comandos Docker en cualquier sistema que
‫va a estar trabajando desde y puede ser en Windows, Mac, Linux, Raspberry, PIs, lo que sea.
‫Sólo tienes que conseguir el cliente de línea de comandos si estás en un mac.
‫Sorprendentemente el instalador brew, que si no conoces brew, te estás perdiendo el mejor
‫instalador para Mac y Brew install Docker no instala realmente el motor completo de Docker o el escritorio de Docker.
‫Sólo instala el cliente porque son.
‫No hay motor Docker para Mac.
‫Los kernels de Mac no soportan contenedores, por lo que la instalación sorprendentemente sólo instala una línea de comandos, que en este
‫caso es lo que queremos.
‫Si su máquina local fuera Linux, podría utilizar el paquete de instalación de Linux de la documentación
‫de Dockers y luego, una vez que tenga ese paquete configurado como repositorio, puede entonces apt instalar el paquete Docker
‫CCI desde ese repositorio.
‫Y por último, si estás en Windows, puede que hayas oído hablar de Chocolaty.
‫Es uno de los gestores de paquetes para Windows actualmente.
‫Y puedes hacer una instalación de chocolate para instalar sólo el cliente de línea de comandos.
‫Pero Docker también tiene todo esto explicado en su documentación donde te dicen cómo puedes obtener
‫las librerías cliente para tu sistema operativo y sólo la librería cliente.
‫De acuerdo.
‫El momento de la verdad.
‫Has instalado el motor Docker en un servidor Linux.
‫Independientemente de lo que vayas a utilizar, ya sea para practicar o para producción
‫real, tienes Docker en el servidor, ahora tienes el cliente en Southern, tu máquina local.
‫Debo recordarte que todo lo que acabo de decirte sobre la instalación del cliente, si ya tienes instalado
‫el escritorio Docker, no necesitas hacerlo.
‫El escritorio Docker viene con el cliente, pero podemos decirle al cliente dónde apuntar para hablar con el motor del
‫servidor y eso es lo que vamos a hacer ahora.
‫Así que imagina que puedo decir en un servidor con algo como este comando aquí arriba, ruta ssh en una dirección IP o un nombre
‫de host.
‫Y digamos que tengo un certificado SSH.
‫Así que todo esto asume que usted entiende los fundamentos de SSH que usted sabe cómo obtener un certificado en un servidor
‫para que pueda iniciar sesión de forma remota.
‫Hay montones de tutoriales al respecto y ese conocimiento se presupone.
‫De nuevo, se presupone un conocimiento básico de Linux antes de involucrarse con Docker.
‫Así que asumiendo que podemos hacer eso, si tengo ese acceso, entonces todo lo que tendría que hacer es crear una variable
‫de entorno.
‫La variable de entorno Docker underscore host indica a la línea de comandos de Docker con qué servidor debe hablar
‫por defecto.
‫Si sólo instalas Docker en algo y empiezas a usar la línea de comandos, asume el socket local
‫o el host local.
‫Y por eso ni siquiera tiene esta variable de entorno.
‫Y por defecto, si está en blanco, esta variable de entorno, aunque Docker intente
‫buscarla y no encuentre ninguna, dirá, vale, debes asumir que necesito hablar con el host
‫local y lo hará sin problemas.
‫Pero si cambiamos esto añadiendo un export docker host equals ssh colon slash tal y como se usaría
‫en una URL https.
‫Así que si reemplazamos eso con el nombre de usuario de la barra de dos puntos de ssh en el nombre de host, entonces puedo entrar con docker simplemente escribiendo los
‫comandos regulares de docker.
‫Así que fíjate que escribo una versión de Docker aquí, pero no tengo Docker corriendo en mi máquina local.
‫Acabo de tener ese cliente Docker y ya es SSH derecho a través de Internet a esta instancia de nube remota que acabo de configurar
‫hace momentos y devuelve la versión del servidor, así como la versión del cliente.
‫Si empezara a husmear, vería que estoy en Darwin, que es Mac OS para mi cliente y si nos desplazamos
‫hacia abajo el servidor mostraría Linux porque es donde el servidor está ejecutando el
‫motor y eso es todo.
‫Eso es todo lo que tienes que hacer.
‫Si quieres desactivar la variable de entorno de Docker underscore host, entonces tu línea de comandos de Docker volvería a tu máquina
‫local, suponiendo que tuvieras el motor ejecutándose localmente y pudieras alternar entre
‫una y otra.
‫De hecho, podrías tener un montón de servidores diferentes y simplemente cambiar la variable de entorno en cada
‫shell que estés utilizando para decirle a qué servidor debe hablar.
‫Hay un comando de contexto de Docker que también puede hacer esto.
‫No vamos a hablar de eso todavía.
‫Eso es más avanzado para más adelante en el curso, pero técnicamente hay un comando incorporado llamado
‫contexto Docker que te permite guardar estas configuraciones y gestionar una lista de diferentes motores con los que quieres
‫hablar.
‫Pero esto es genial para empezar, y el último paso aquí es clonar su repositorio para este curso localmente, el que
‫se menciona un par de conferencias atrás en las conferencias escritas donde hay el repo del curso que
‫se descarga, usted quiere poner eso en su máquina local junto con su editor de código
‫y todo lo demás y el cliente Docker.
‫Lo único que va a estar en el servidor es el motor que instalamos y no vamos a necesitar hacer
‫ssh en él constantemente porque todos los comandos Docker que ejecutamos localmente sólo se ejecutarán contra ese servidor
‫remoto.
‫Ese servidor remoto.
‫Por cierto, recuerda que siempre que escriba "local host" en mi navegador para probar cosas en Docker, como por ejemplo
‫un sitio web o algo que estemos ejecutando en Docker, no vas a escribir "local host", vas a escribir
‫el nombre del servidor o la dirección IP en la que has instalado Docker.
‫Es la máquina que está ejecutando el motor, ejecutando sus contenedores, y que tendrá que escribir
‫en su navegador.
‫O si estás ejecutando cualquier otro comando local como curl o ping, vas a tener que hacer esos
‫a esa IP del servidor Y eso es todo.
‫Ahora tienes un motor funcionando en un servidor Linux en algún lugar del mundo.
‫Estás corriendo en tu sistema local con tu código y tu repo y todo lo demás, y estás listo
‫para empezar.