1 00:00:00,750 --> 00:00:23,570 Bien, vamos a seguir un poco con todo esto. Vamos a ver ahora un proceso bastante interesante. Primero, en la adquisición de las imágenes, fijaos cómo aparece al lado de la imagen que tenemos, el nombre que tiene, un tag, una especie de etiqueta que pueda tener cada una de las imágenes de las que tenemos en el registro de Docker Hub. 2 00:00:23,570 --> 00:00:25,929 yo aquí me he abierto el navegador 3 00:00:25,929 --> 00:00:27,850 esto es mi cuenta, me parece que vosotros 4 00:00:27,850 --> 00:00:29,910 tenéis también ya cuenta con Docker Hub 5 00:00:29,910 --> 00:00:31,769 fijaos, estaba mirando por ejemplo una imagen 6 00:00:31,769 --> 00:00:33,390 de Ubuntu, si os fijáis 7 00:00:33,390 --> 00:00:35,729 aquí os viene como hacer un pull, Docker 8 00:00:35,729 --> 00:00:37,770 pull de Ubuntu, recordemos 9 00:00:37,770 --> 00:00:39,850 como esto simplemente lo que me hace es que me descarga 10 00:00:39,850 --> 00:00:41,789 la versión latest, es decir, el tag 11 00:00:41,789 --> 00:00:43,250 latest de 12 00:00:43,250 --> 00:00:45,770 esta imagen Ubuntu, pero observar 13 00:00:45,770 --> 00:00:47,429 como si vamos haciendo un scroll 14 00:00:47,429 --> 00:00:49,250 hay distintos 15 00:00:49,250 --> 00:00:51,909 tags o etiquetas 16 00:00:51,909 --> 00:00:53,530 vinculadas con distintas, bueno pues 17 00:00:53,530 --> 00:01:04,590 distintas imágenes de este mismo sistema operativo. Aquí tenemos, por ejemplo, la 2204, la 2104, aquí tenemos, por ejemplo, pues cualquiera de ellas 18 00:01:04,590 --> 00:01:16,659 están disponibles. Si queremos alguna en concreto, por ejemplo, vamos a ver, vamos a buscar engines, aquí tenemos, por ejemplo, las imágenes oficiales 19 00:01:16,659 --> 00:01:18,500 de engines, aquí tengo como hacer el 20 00:01:18,500 --> 00:01:20,480 pool y bueno pues aquí tenemos 21 00:01:20,480 --> 00:01:22,579 los tags 22 00:01:22,579 --> 00:01:24,420 soportados, si nos vamos a la versión 23 00:01:24,420 --> 00:01:26,640 de tags, aparece lo que os estaba enseñando 24 00:01:26,640 --> 00:01:28,420 antes, entonces fijaos por ejemplo aquí 25 00:01:28,420 --> 00:01:30,359 hay un engines con 26 00:01:30,359 --> 00:01:32,400 perl, bueno pues aquí 27 00:01:32,400 --> 00:01:34,439 hay distintos tags de engines 28 00:01:34,439 --> 00:01:36,079 ¿cómo podríamos hacer 29 00:01:36,079 --> 00:01:38,379 para descargar alguna de 30 00:01:38,379 --> 00:01:40,239 estas imágenes? 31 00:01:40,459 --> 00:01:42,260 bueno pues muy sencillo, no hay nada más que hacer 32 00:01:42,260 --> 00:01:44,219 algo como lo que viene aquí 33 00:01:44,219 --> 00:01:46,060 es decir, fijaos por ejemplo esta alpine 34 00:01:46,060 --> 00:01:47,900 pues lo que hacemos es 35 00:01:47,900 --> 00:01:48,939 me voy a mi docker 36 00:01:48,939 --> 00:01:50,840 y yo hago un docker 37 00:01:50,840 --> 00:01:52,879 pull 38 00:01:52,879 --> 00:01:56,709 en jinx, en este caso 39 00:01:56,709 --> 00:01:59,510 en jinx, dos puntos 40 00:01:59,510 --> 00:02:01,290 al pine, creo que era así 41 00:02:01,290 --> 00:02:07,159 como no lo encuentra en local, se va a ir a 42 00:02:07,159 --> 00:02:08,900 docker hub para descargárselo 43 00:02:08,900 --> 00:02:10,879 y se lo va a descargar 44 00:02:10,879 --> 00:02:12,719 a ver, era al pine, no era sin h 45 00:02:12,719 --> 00:02:22,659 ahí lo tenemos, no lo encuentra en local 46 00:02:22,659 --> 00:02:24,780 se va al registro de docker hub 47 00:02:24,780 --> 00:02:26,639 y ya tenemos la imagen disponible 48 00:02:26,639 --> 00:02:27,319 si hago un docker 49 00:02:27,319 --> 00:02:28,879 imágenes 50 00:02:28,879 --> 00:02:32,780 y ahí lo tenemos 51 00:02:32,780 --> 00:02:35,580 esto es una forma para que veáis 52 00:02:35,580 --> 00:02:37,439 un poquito como se trabaja con los tags 53 00:02:37,439 --> 00:02:39,740 también de las diferentes imágenes 54 00:02:39,740 --> 00:02:41,080 que podemos tener 55 00:02:41,080 --> 00:02:43,659 vamos a crear un contenedor de esta imagen 56 00:02:43,659 --> 00:02:45,500 entonces yo hago un docker 57 00:02:45,500 --> 00:02:47,699 recordemos 58 00:02:47,699 --> 00:02:48,180 docker 59 00:02:48,180 --> 00:02:50,939 vamos a hacer un docker run 60 00:02:50,939 --> 00:02:53,539 de, fijaos, si hago 61 00:02:53,539 --> 00:02:55,560 menos de, lo que vamos a hacer es que 62 00:02:55,560 --> 00:02:57,159 se va a lanzar al background, es decir 63 00:02:57,159 --> 00:02:59,000 no se va a hacer en interactivo 64 00:02:59,000 --> 00:03:00,780 el lanzamiento de este 65 00:03:00,780 --> 00:03:02,539 contenedor, entonces 66 00:03:02,539 --> 00:03:05,020 le vamos a poner un nombre, menos name 67 00:03:05,020 --> 00:03:06,599 este va a ser ejemplo 2 68 00:03:06,599 --> 00:03:08,840 y le vamos a decir 69 00:03:08,840 --> 00:03:10,819 de la imagen de la que yo quiero 70 00:03:10,819 --> 00:03:12,580 hacer el contenedor, en este caso 71 00:03:12,580 --> 00:03:13,900 de la imagen de Nginx 72 00:03:13,900 --> 00:03:17,419 Nginx 73 00:03:17,419 --> 00:03:20,280 vale, bueno, no he cogido, le tenía que haber dado 74 00:03:20,280 --> 00:03:21,860 perdón, le tenía que haber dado Nginx 75 00:03:21,860 --> 00:03:24,419 dos puntos al pin 76 00:03:24,419 --> 00:03:26,439 ¿de acuerdo? porque es la versión que tengo aquí 77 00:03:26,439 --> 00:03:27,639 claro, al haber 78 00:03:27,639 --> 00:03:30,199 hecho aquí solamente Nginx, ¿qué pasa? que 79 00:03:30,199 --> 00:03:32,400 directamente el sistema 80 00:03:32,400 --> 00:03:33,620 se va a la versión latest 81 00:03:33,620 --> 00:03:35,680 como la latest no la tengo descargada 82 00:03:35,680 --> 00:03:37,939 se ha ido directamente a docker hub 83 00:03:37,939 --> 00:03:39,460 y se la ha descargado, bueno no pasa nada 84 00:03:39,460 --> 00:03:40,860 me ha creado ya el contenedor 85 00:03:40,860 --> 00:03:43,580 y el contenedor está 86 00:03:43,580 --> 00:03:45,139 funcionando, me voy a abrir otro 87 00:03:45,139 --> 00:03:47,219 tengo aquí abierto, vale perfecto 88 00:03:47,219 --> 00:03:49,219 no tengo ningún problema, si yo hago aquí un docker 89 00:03:49,219 --> 00:03:51,580 ps, vale, aquí tengo 90 00:03:51,580 --> 00:03:52,979 el 91 00:03:52,979 --> 00:03:55,180 engines funcionando, de acuerdo 92 00:03:55,180 --> 00:03:56,580 con su contenedor, su IDE 93 00:03:56,580 --> 00:03:59,080 ahí lo tengo rulando perfectamente 94 00:03:59,080 --> 00:04:10,800 Muy bien. Entonces, hemos creado un contenedor de esta versión latest de engines. De acuerdo. Ahora hemos hecho el docker ps, lo tenemos funcionando. 95 00:04:11,740 --> 00:04:22,839 Quiero que veáis un poco el comando docker logs. El docker logs son los registros, ¿vale? El registro de sucesos, el registro del contenedor en cuestión. 96 00:04:22,839 --> 00:04:36,319 En este caso de ejemplo 2. Fijaos que no va a haber mucho registro porque en realidad está recién creado y bueno, pues lo único que tenemos es simplemente más o menos el proceso de un poco de creación de lo que ha sido el contenedor. 97 00:04:36,319 --> 00:04:40,500 Tenemos el contenedor funcionando 98 00:04:40,500 --> 00:04:42,000 Ahora mismo no lo tenemos en interactivo 99 00:04:42,000 --> 00:04:44,379 Está en background, pero yo sé que está trabajando 100 00:04:44,379 --> 00:04:46,100 Recordar que con docker 101 00:04:46,100 --> 00:04:46,480 Exec 102 00:04:46,480 --> 00:04:50,180 Yo podía ejecutar determinados comandos 103 00:04:50,180 --> 00:04:52,139 Dentro de este 104 00:04:52,139 --> 00:04:54,339 De este contenedor 105 00:04:54,339 --> 00:04:55,759 Entonces yo le podía dar 106 00:04:55,759 --> 00:04:57,060 Recordar por ejemplo 107 00:04:57,060 --> 00:04:59,560 Darle un it 108 00:04:59,560 --> 00:05:02,220 Y decirle que me voy a volver a conectar a él 109 00:05:02,220 --> 00:05:03,120 Ejemplo 2 110 00:05:03,120 --> 00:05:04,959 Y decirle que me voy a abrir un bash 111 00:05:04,959 --> 00:05:08,560 entonces en este caso ya tengo el bus 112 00:05:08,560 --> 00:05:10,600 tengo un ls, yo estoy aquí dentro 113 00:05:10,600 --> 00:05:12,699 del contenedor 114 00:05:12,699 --> 00:05:14,319 y no tengo ningún problema 115 00:05:14,319 --> 00:05:16,420 para trabajar con él, yo puedo hacer por ejemplo 116 00:05:16,420 --> 00:05:16,839 un apt 117 00:05:16,839 --> 00:05:19,839 get ubt 118 00:05:19,839 --> 00:05:22,839 y actualizar la paquetería 119 00:05:22,839 --> 00:05:25,000 la lista de paquetes 120 00:05:25,000 --> 00:05:26,439 de el engines 121 00:05:26,439 --> 00:05:27,660 que tengo aquí funcionando 122 00:05:27,660 --> 00:05:29,279 y por ejemplo yo podría 123 00:05:29,279 --> 00:05:31,720 hacer un ejemplo de 124 00:05:31,720 --> 00:05:34,519 instalar dentro de esta 125 00:05:34,519 --> 00:05:46,829 máquina hacer un apt install por ejemplo wget para instalarme el wget dentro de engines 126 00:05:46,829 --> 00:05:51,329 si yo hago por ejemplo me puedo hacer un wget a mi propio localhost recordad que este comando 127 00:05:51,329 --> 00:05:59,069 lo que me hace es que digamos que toma a nivel de web hace una especie de hace un get vale 128 00:05:59,069 --> 00:06:04,250 hace una solicitud a una ip en este caso si hago localhost hace una solicitud a la propia 129 00:06:04,250 --> 00:06:14,550 máquina en la que está, ¿de acuerdo? Yo ahora he hecho esto, fijaos que si yo me voy aquí a mi otra terminal, voy a hacer aquí un docker 130 00:06:14,550 --> 00:06:24,769 y trabajar los logs, ¿vale? Para ver los logs, a ver si ha pasado algo en el contenedor en Liza, en el contenedor del ejemplo que tengo yo, 131 00:06:24,769 --> 00:06:41,689 por ejemplo 2, y fijaos como aquí el log sí que me está diciendo que ya hay, bueno pues, resulta que se ha hecho un wget al localhost, al 127.0.0.1, que es la IP del bucle local, ¿de acuerdo? 132 00:06:41,689 --> 00:06:51,069 Así es como funciona un poco el tema de la gestión de los registros de los contenedores. Quería que lo vieseis un poco también estos comandos. 133 00:06:52,209 --> 00:07:10,910 Más cosas, pues fijaos que desde aquí, desde el propio docker, a ver estoy dentro de la máquina aquí, desde el propio, perdonad, desde el otro terminal yo puedo hacer un docker y hacer un docker top del propio contenedor. 134 00:07:10,910 --> 00:07:19,670 De manera que yo estoy viendo los procesos que tiene lanzados el contenedor de Nginx en ese momento. 135 00:07:20,529 --> 00:07:23,329 Desde fuera, desde el propio Docker. 136 00:07:24,069 --> 00:07:32,850 Si yo, por ejemplo, mandase, hiciese un sleep ahora mismo, se me ocurre, a ver, esta es la, esta es esta de aquí. 137 00:07:33,009 --> 00:07:36,269 Si yo hago aquí, ahora mismo estoy dentro del contenedor, ¿de acuerdo? 138 00:07:36,269 --> 00:07:55,449 a un slip de 500 dentro del contenedor, aquí cuando yo haga el top de ejemplo 2 voy a ver el slip, el slip 500 que acabo de mandar desde dentro de la máquina, ¿de acuerdo? 139 00:07:55,449 --> 00:08:23,519 Yo puedo sacar también estadísticas, fijaos que aquí yo estoy fuera, hago un docker stats de el contenedor y saco las estadísticas del mismo, de utilización de memoria, de CPU, de uso de memoria, de utilización de disco, bueno pues un poco las estadísticas de lo que sería el contenedor con el que estamos trabajando. 140 00:08:23,519 --> 00:08:28,769 aquí lo que tengo, fijaos 141 00:08:28,769 --> 00:08:30,569 en este, estoy dentro de esta máquina 142 00:08:30,569 --> 00:08:32,549 está aquí durmiendo, haría un control c 143 00:08:32,549 --> 00:08:34,070 sigo dentro de la máquina 144 00:08:34,070 --> 00:08:36,549 fijaos que me podría salir haciendo un exit, pero también 145 00:08:36,549 --> 00:08:38,429 puedo matar, digamos 146 00:08:38,429 --> 00:08:40,870 el contenedor, o el proceso del contenedor 147 00:08:40,870 --> 00:08:42,929 eso se puede hacer con el comando de docker 148 00:08:42,929 --> 00:08:45,750 de la siguiente forma 149 00:08:45,750 --> 00:08:47,950 voy a la terminal 150 00:08:47,950 --> 00:08:50,110 esta de aquí, hago un control c 151 00:08:50,110 --> 00:08:52,629 y hago un docker kill 152 00:08:52,629 --> 00:08:53,509 mato 153 00:08:53,509 --> 00:09:08,590 a el contenedor que tengo creado con el engines. Ahí lo tenemos. En este caso, si yo ahora hago un docker ps, ya no tengo el contenedor funcionando. 154 00:09:08,590 --> 00:09:22,990 como un docker ps-a y aquí sí que veo como tengo aquí mi engines y como ya no lo tengo en funcionamiento, fijaos el nombre que aparece como ejemplo 2, 155 00:09:22,990 --> 00:09:33,929 veis que es el nombre que le he dado al principio con el menos. Bueno, pues más ejemplos de operativas que se pueden realizar, como lanzamos un contenedor en background, 156 00:09:33,929 --> 00:09:46,789 digamos por debajo, cómo me puedo meter en él con el exec y cómo puedo ver sus logs, ver su estado desde otro terminal mientras estoy metido en esa misma máquina. 157 00:09:46,789 --> 00:10:14,830 Hay una cosa que también se puede hacer y es que cuando lanzamos un contenedor, por ejemplo, si hago un docker en run, menos de, por ejemplo, aquí he lanzado el contenedor, este de Ubuntu, el background, está funcionando. 158 00:10:14,830 --> 00:10:17,830 yo aquí podría ver 159 00:10:17,830 --> 00:10:19,269 con docker ps 160 00:10:19,269 --> 00:10:22,210 a ver, con docker ps 161 00:10:22,210 --> 00:10:23,370 aquí estoy dentro de la máquina 162 00:10:23,370 --> 00:10:37,820 vale, me tengo que salir aquí, vale, ya lo tengo lanzado 163 00:10:37,820 --> 00:10:39,340 bueno, lo vamos a dejar aquí 164 00:10:39,340 --> 00:10:40,379 porque es que no tenía la imagen 165 00:10:40,379 --> 00:10:43,299 y en el próximo vídeo os explico cómo lanzar 166 00:10:43,299 --> 00:10:45,480 los distintos ejecutables 167 00:10:45,480 --> 00:10:47,000 dentro del contenido 168 00:10:47,000 --> 00:10:48,600 lo dejamos aquí que se ha hecho muy largo