1 00:00:00,880 --> 00:00:14,179 Bien, vamos ahora con aspectos básicos un poco de Docker, ¿vale? Vamos a empezar un poco a ver manipulaciones varias con Docker. Recordar el concepto de imagen y el concepto de contenedor, ¿de acuerdo? 2 00:00:14,179 --> 00:00:34,340 Un contenedor se genera o se crea a través de una imagen que se descarga fundamentalmente de Docker Hub. Luego trataremos un poco cómo va todo eso, pero recordad, por ejemplo, cómo con Docker Images yo puedo ver las imágenes que, en este caso, yo tengo disponibles en mi sistema. 3 00:00:34,340 --> 00:00:36,100 fijaos que una imagen tiene 4 00:00:36,100 --> 00:00:37,500 evidentemente 5 00:00:37,500 --> 00:00:40,079 un repositorio 6 00:00:40,079 --> 00:00:42,119 que en este caso es Ubuntu, un tag 7 00:00:42,119 --> 00:00:44,340 este tag ya hablaremos luego, en este caso 8 00:00:44,340 --> 00:00:46,000 es el latest, que sería la última versión 9 00:00:46,000 --> 00:00:47,539 de esta imagen que es de Ubuntu 10 00:00:47,539 --> 00:00:50,380 aquí tenemos un id, es único 11 00:00:50,380 --> 00:00:52,359 para cada imagen que tenemos, cuando se 12 00:00:52,359 --> 00:00:54,100 crea en el sistema, el tamaño, etc. 13 00:00:55,000 --> 00:00:55,820 igual que tengo imagen 14 00:00:55,820 --> 00:00:58,479 yo puedo tener con docker la posibilidad 15 00:00:58,479 --> 00:01:00,219 de listar los 16 00:01:00,219 --> 00:01:02,359 contenedores que tengo activos, con docker ps 17 00:01:02,359 --> 00:01:04,459 yo hago una lista de contenedores activos 18 00:01:04,459 --> 00:01:05,760 en este caso no tengo nada 19 00:01:05,760 --> 00:01:07,459 ¿por qué? porque no hay ninguno activo 20 00:01:07,459 --> 00:01:08,640 ¿eso quiere decir que no tengo ninguno? 21 00:01:08,760 --> 00:01:10,400 no, quiere decir que los que tengo 22 00:01:10,400 --> 00:01:11,780 yo en este caso he creado 23 00:01:11,780 --> 00:01:14,159 no están activos 24 00:01:14,159 --> 00:01:16,060 no están levantados 25 00:01:16,060 --> 00:01:16,859 no están cargados 26 00:01:16,859 --> 00:01:17,540 entonces 27 00:01:17,540 --> 00:01:21,760 para poder sacar el listado de todos los contenedores 28 00:01:21,760 --> 00:01:22,700 que yo tengo en mi sistema 29 00:01:22,700 --> 00:01:25,480 hago un ps-a 30 00:01:25,480 --> 00:01:26,000 ¿vale? 31 00:01:26,579 --> 00:01:27,579 entonces fijaos 32 00:01:27,579 --> 00:01:28,519 como aquí 33 00:01:28,519 --> 00:01:29,420 ¿vale? 34 00:01:29,799 --> 00:01:30,200 tengo 35 00:01:30,200 --> 00:01:33,340 los ids de los diferentes 36 00:01:33,340 --> 00:01:35,280 contenedores vinculados 37 00:01:35,280 --> 00:01:37,299 con la imagen de la que está creado 38 00:01:37,299 --> 00:01:38,620 cada contenedor, fijaos que esta imagen 39 00:01:38,620 --> 00:01:40,180 es precisamente la de Ubuntu 40 00:01:40,180 --> 00:01:43,159 y bueno, pues aquí el estado 41 00:01:43,159 --> 00:01:45,340 en el que estaban, cuando fue creado 42 00:01:45,340 --> 00:01:47,180 la última vez que me 43 00:01:47,180 --> 00:01:48,939 he conectado a ellos, fijaos que puedo tener por ejemplo 44 00:01:48,939 --> 00:01:51,200 un listado con "-l", del 45 00:01:51,200 --> 00:01:53,219 último contenedor o los últimos contenedores que yo 46 00:01:53,219 --> 00:01:54,640 con los que he trabajado 47 00:01:54,640 --> 00:01:56,680 en última instancia 48 00:01:56,680 --> 00:01:59,099 este nombre de Mike1 ahora no hagamos caso 49 00:01:59,099 --> 00:02:07,739 pues luego lo veremos en otro tutorial cómo trabajar con. Entonces, ¿cuál es la cuestión? Bueno, pues la cuestión es cómo lanzar, cómo empezar a trabajar con esto. 50 00:02:08,439 --> 00:02:20,099 Cuando yo quiero descargar una imagen, lo que hacemos con Docker es hacer un pull, es decir, lo que hago con docker pull es irme a docker hub, 51 00:02:20,099 --> 00:02:30,060 Docker Hub, recordar que es el gran registro en la nube que hay de imágenes disponibles para Docker y traerme la imagen en cuestión. Para esto tengo que saber el nombre 52 00:02:30,060 --> 00:02:43,219 de la imagen o el tag vinculado con la misma. En este caso lo vamos a hacer muy sencillo porque voy a hacer un pool de Nginx, ¿vale? Nginx es, como sabéis, es un servidor web 53 00:02:43,219 --> 00:02:45,500 del tipo de Apache. Entonces, esto lo que va a hacer 54 00:02:45,500 --> 00:02:47,419 este comando va a ser lo siguiente. Voy a dar a 55 00:02:47,419 --> 00:02:48,840 Enter y 56 00:02:48,840 --> 00:02:50,539 lo que va a hacer es buscar 57 00:02:50,539 --> 00:02:53,919 el tag que por defecto 58 00:02:53,919 --> 00:02:55,219 está vinculado con 59 00:02:55,219 --> 00:02:57,620 esta imagen 60 00:02:57,620 --> 00:02:59,280 que yo estoy pidiendo, que es la de Nginx. 61 00:02:59,639 --> 00:03:01,280 Siempre el sistema se va a ir 62 00:03:01,280 --> 00:03:03,219 a por las versiones latest, a por el tag 63 00:03:03,219 --> 00:03:04,840 latest, es decir, las últimas versiones 64 00:03:04,840 --> 00:03:06,280 estables disponibles. 65 00:03:07,219 --> 00:03:09,180 En este caso, fijaos que 66 00:03:09,180 --> 00:03:10,539 le asigna, 67 00:03:10,900 --> 00:03:12,060 tiene un chat, tiene 68 00:03:12,060 --> 00:03:15,159 un identificador, una clave 69 00:03:15,159 --> 00:03:19,139 unívoca a cada una de las imágenes y se la descarga 70 00:03:19,139 --> 00:03:21,879 esta imagen se descarga de este registro a mi banco 71 00:03:21,879 --> 00:03:25,979 de mi ordenador, es decir, a mi registro local 72 00:03:25,979 --> 00:03:28,219 de manera que yo ahora puedo verla 73 00:03:28,219 --> 00:03:31,360 entre las que yo tengo disponibles 74 00:03:31,360 --> 00:03:35,419 en mi sistema 75 00:03:35,419 --> 00:03:38,159 perdón, imágenes 76 00:03:38,159 --> 00:03:40,860 ahí las tenemos, tengo 77 00:03:40,860 --> 00:03:43,259 la que me descargué el otro día, que era de Ubuntu 78 00:03:43,259 --> 00:03:45,419 y esta nueva imagen que me he descargado 79 00:03:45,419 --> 00:03:46,620 de Nginx, vale 80 00:03:46,620 --> 00:03:49,479 ahora mismo, fijaos también 81 00:03:49,479 --> 00:03:51,219 el tamaño, vale, todo lo vemos ahí 82 00:03:51,219 --> 00:03:53,020 que yo quiero 83 00:03:53,020 --> 00:03:55,439 lanzar 84 00:03:55,439 --> 00:03:57,259 por ejemplo, un contenedor 85 00:03:57,259 --> 00:03:59,159 de los que ya tengo, fijaos, tengo 86 00:03:59,159 --> 00:04:01,060 en Docker, vamos a volver a ver 87 00:04:01,060 --> 00:04:01,759 Docker PS 88 00:04:01,759 --> 00:04:05,180 menos A, entonces yo puedo lanzar 89 00:04:05,180 --> 00:04:07,060 alguno de estos contenedores que tengo ya creados 90 00:04:07,060 --> 00:04:22,399 Estos contenedores están basados en la imagen que yo tenía de Ubuntu. Por lo tanto, yo puedo hacer un docker start de un contenedor como este. Fijaos, recomiendo trabajar aquí con el entorno de Ubuntu en una terminal gráfica porque yo puedo hacer esto. 91 00:04:22,399 --> 00:04:36,800 Podéis coger el identificador del contenedor, copiarlo, de momento lo vamos a hacer así, ya veremos que luego más sencillo, y decirle que lance precisamente el contenedor que yo le estoy indicando. 92 00:04:38,399 --> 00:04:47,759 ¿Esto qué ha hecho? Bueno, pues no ha hecho nada. ¿Realmente el contenedor está funcionando? Sí, pero está en background. No lo tengo activo, no lo tengo interactivo, no lo tengo en la terminal. 93 00:04:47,759 --> 00:04:57,860 ¿De acuerdo? ¿Cómo veo yo eso? Pues lo veo porque hago un docker ps y fijaos que ahora sí que me aparece el contenedor que tengo lanzado 94 00:04:57,860 --> 00:05:12,860 y que tengo activo en este momento. Fijaos que ahí tengo el docker ps y desde aquí yo podría parar este contenedor. 95 00:05:12,860 --> 00:05:28,180 Podría volver a apagar o poder apagar desde aquí. Entonces yo puedo hacer en el terminal docker stop y el identificador del contenedor en cuestión y me lo pararé. 96 00:05:28,720 --> 00:05:36,160 En este caso no lo voy a hacer porque lo que quiero es entrar o trabajar un poco dentro de ese contenedor. ¿Cómo lo hago? 97 00:05:36,160 --> 00:05:53,139 Hay un comando que es docker exec. Este docker exec me permite ejecutar comandos dentro de un contenedor. En este caso yo puedo decirle que voy a abrir una sesión interactiva con el contenedor que tengo rulando, con el contenedor que he lanzado antes. 98 00:05:53,139 --> 00:05:55,660 Entonces, evidentemente el comando que voy a hacer 99 00:05:55,660 --> 00:05:56,720 Que ejecute 100 00:05:56,720 --> 00:05:59,860 Es el comando bash, que es el intérprete de comando 101 00:05:59,860 --> 00:06:01,399 Es decir, ábreme 102 00:06:01,399 --> 00:06:03,560 Una sesión interactiva con este contenedor 103 00:06:03,560 --> 00:06:04,399 Que tengo rulando 104 00:06:04,399 --> 00:06:07,040 En la cual me lances el intérprete de comandos 105 00:06:07,040 --> 00:06:08,560 Para yo poder interactivamente 106 00:06:08,560 --> 00:06:11,959 Operar, interactuar con ese contenedor 107 00:06:11,959 --> 00:06:13,519 Entonces ahora veréis, si yo hago enter 108 00:06:13,519 --> 00:06:14,839 Fijaos que el prompt 109 00:06:14,839 --> 00:06:16,259 Ya me ha cambiado 110 00:06:16,259 --> 00:06:18,779 Y en el prompt me indica 111 00:06:18,779 --> 00:06:22,160 El id que se le asigna a este contenedor 112 00:06:22,160 --> 00:06:28,860 Eso quiere decir que estoy trabajando ya en el mismo y yo puedo hacer un ls, puedo mirar aquí cosas, puedo navegar, etc. 113 00:06:29,720 --> 00:06:31,899 Es decir, fijaos en la cadena de acontecimientos. 114 00:06:32,060 --> 00:06:37,839 Yo cojo, primero me había descargado la imagen, en este caso de Ubuntu, tenía unos contenedores basados en Ubuntu, ¿de acuerdo? 115 00:06:37,839 --> 00:06:46,180 Y entonces, como los tengo, estos contenedores son locales, pues directamente yo cojo, hago un start de un contenedor y luego hago un exit. 116 00:06:46,480 --> 00:06:49,540 ¿Exit para qué? Para ejecutar comandos concretos dentro de ese contenedor. 117 00:06:49,540 --> 00:07:00,540 En este caso le digo que con el modificador "-it", me abra una sesión interactiva, porque yo voy a lanzar el comando bus del intérprete de comandos y voy a ponerme a trabajar con este contenedor. 118 00:07:01,800 --> 00:07:11,399 Ahí lo tenemos. Yo puedo salir, fijaos que es curioso, porque aunque me salga del contenedor, el contenedor no va a desaparecer, porque lo he lanzado con el docker start. 119 00:07:11,399 --> 00:07:13,120 aquí por ejemplo 120 00:07:13,120 --> 00:07:15,579 si yo hago un docker 121 00:07:15,579 --> 00:07:17,540 un docker ps 122 00:07:17,540 --> 00:07:18,959 veis que lo sigo teniendo 123 00:07:18,959 --> 00:07:20,839 yo podría pararlo desde aquí 124 00:07:20,839 --> 00:07:22,480 hacer un docker 125 00:07:22,480 --> 00:07:26,720 stop y parar este 126 00:07:26,720 --> 00:07:28,939 contenedor, volver a copiar 127 00:07:28,939 --> 00:07:34,279 pegarlo 128 00:07:34,279 --> 00:07:36,180 para el contenedor y 129 00:07:36,180 --> 00:07:38,199 aquí evidentemente tampoco 130 00:07:38,199 --> 00:07:39,279 lo tendría disponible 131 00:07:39,279 --> 00:07:41,879 un docker ps que es la principal 132 00:07:41,879 --> 00:07:44,279 y ya no lo tengo, es decir el contenedor 133 00:07:44,279 --> 00:07:45,120 sigue estando 134 00:07:45,120 --> 00:07:46,420 pero 135 00:07:46,420 --> 00:07:51,060 está como de los últimos utilizados 136 00:07:51,060 --> 00:07:53,519 el estado es exited pero se ha utilizado 137 00:07:53,519 --> 00:07:55,500 hace poco y ya no está activo 138 00:07:55,500 --> 00:07:57,540 bueno, pues esto simplemente 139 00:07:57,540 --> 00:07:59,519 es este pequeño micro vídeo 140 00:07:59,519 --> 00:08:01,180 de ver como recopilando 141 00:08:01,180 --> 00:08:03,660 como tenemos las imágenes 142 00:08:03,660 --> 00:08:05,519 por un lado, como hemos hecho un 143 00:08:05,519 --> 00:08:07,560 pool de una imagen, es decir, nos las hemos 144 00:08:07,560 --> 00:08:09,120 descargado en local, la imagen 145 00:08:09,120 --> 00:08:11,620 ¿vale? luego como hemos 146 00:08:11,620 --> 00:08:13,019 lanzado 147 00:08:13,019 --> 00:08:14,980 hemos visto los 148 00:08:14,980 --> 00:08:17,279 perdón, los contenedores que teníamos, hemos lanzado 149 00:08:17,279 --> 00:08:18,379 un contenedor que teníamos 150 00:08:18,379 --> 00:08:21,000 respecto de una imagen de Ubuntu que ya teníamos descargada 151 00:08:21,000 --> 00:08:23,160 y luego cómo trabajar y meterme dentro 152 00:08:23,160 --> 00:08:24,980 de un contenedor que lo he lanzado 153 00:08:24,980 --> 00:08:26,660 en modo background, en modo simplemente 154 00:08:26,660 --> 00:08:28,540 no interactivo 155 00:08:28,540 --> 00:08:30,360 con este comando de docker exit 156 00:08:30,360 --> 00:08:32,340 seguimos luego en el siguiente video