﻿1
00:00:04,670 --> 00:00:09,710
‫Todo bien. Los volúmenes parecen bastante simples desde el principio, pero en realidad hay mucho que hacer.

2
00:00:09,710 --> 00:00:16,480
‫La primera forma de decirle a un contenedor que necesita preocuparse por un volumen es en un archivo Docker.

3
00:00:16,480 --> 00:00:18,540
‫Vamos a ver algunos de ellos.

4
00:00:18,590 --> 00:00:21,040
‫Voy a hacer lo que hago mucho.

5
00:00:21,170 --> 00:00:24,110
‫Voy a buscar MySQL.

6
00:00:24,320 --> 00:00:30,320
‫Así es como aprendí mucho sobre Dockerfiles, y cómo usarlos correctamente, es que los repositorios oficiales tienen

7
00:00:30,380 --> 00:00:34,040
‫muy buenos valores predeterminados y las mejores prácticas incorporadas en ellos.

8
00:00:34,040 --> 00:00:40,250
‫Cuando vaya a MySQL uno, voy a hacer clic en el último archivo Docker aquí. probablemente tenga un comando de volumen.

9
00:00:40,250 --> 00:00:45,040
‫Te apuesto porque es una base de datos,

10
00:00:45,200 --> 00:00:45,950
‫Aquí vamos.

11
00:00:45,950 --> 00:00:52,640
‫Esta es la ubicación predeterminada de las bases de datos MySQL. Esta imagen está programada para decirle a Docker

12
00:00:52,640 --> 00:00:58,670
‫que cuando comencemos un nuevo contenedor desde allí, realmente cree una nueva ubicación de volumen

13
00:00:58,670 --> 00:01:05,450
‫y asígnela a este directorio en el contenedor. Lo que significa que cualquier archivo que coloquemos allí, en el

14
00:01:05,450 --> 00:01:08,600
‫contenedor, sobrevivirá al contenedor hasta que eliminemos manualmente el volumen.

15
00:01:08,660 --> 00:01:13,250
‫Y eso es algo que debemos señalar aquí es que los volúmenes necesitan borrado manual.

16
00:01:13,280 --> 00:01:15,900
‫No puedes limpiarlos simplemente quitando un contenedor.

17
00:01:15,930 --> 00:01:21,350
‫Son un paso extra. Eso es solo para el seguro en realidad, porque el objetivo

18
00:01:21,380 --> 00:01:26,990
‫de un comando de volumen es decir que esta información es particularmente importante, al menos mucho más importante que el contenedor en sí.

19
00:01:26,990 --> 00:01:29,930
‫Si hacemos un docker tirando de MySQL, y luego

20
00:01:33,500 --> 00:01:40,360
‫hago una inspección de la imagen de Docker en MySQL, no vemos el archivo Docker porque el archivo Docker no

21
00:01:40,370 --> 00:01:46,340
‫es realmente parte de los metadatos de la imagen, que notará en este área de configuración, que

22
00:01:46,340 --> 00:01:47,680
‫especificó ese volumen allí.

23
00:01:47,810 --> 00:01:53,600
‫Siempre puedo decir que la configuración, que vino del archivo Docker cuando se creó, asignó un volumen

24
00:01:53,600 --> 00:01:54,460
‫a esa ruta.

25
00:01:54,470 --> 00:01:57,150
‫Vamos a ejecutar un contenedor desde allí.

26
00:02:00,990 --> 00:02:05,640
‫Entonces contenedor acoplador run -d --name mysql.

27
00:02:05,730 --> 00:02:09,120
‫Si recuerda desde antes, el MySQL es poco especial.

28
00:02:09,230 --> 00:02:11,390
‫Ahora requiere una variable de

29
00:02:11,400 --> 00:02:13,450
‫entorno antes de que funcione.

30
00:02:13,530 --> 00:02:19,090
‫Es MYSQL_ALLOW_EMPTY_PASSWORD.

31
00:02:19,180 --> 00:02:19,430
‫DE ACUERDO.

32
00:02:22,810 --> 00:02:29,020
‫Lo que ves es MySQL ejecutándose. la configuración que hay un volumen.

33
00:02:29,170 --> 00:02:37,200
‫Si hacemos un contenedor docker inspecciona mysql, deberíamos ver lo mismo donde nos dice en

34
00:02:38,360 --> 00:02:39,370
‫Aquí.

35
00:02:39,450 --> 00:02:47,400
‫También podemos verlo aquí debajo de las monturas. Lo que es esto, es realmente el contenedor en funcionamiento que obtiene su

36
00:02:47,400 --> 00:02:55,770
‫propia ubicación única en el host, para almacenar esos datos, y luego está en segundo plano, mapeado o montado, en esa ubicación del contenedor, de modo que

37
00:02:55,770 --> 00:02:59,730
‫la ubicación en el contenedor en realidad solo piensa que está escribiendo en

38
00:02:59,730 --> 00:03:02,040
‫/ var / lib / mysql.

39
00:03:02,310 --> 00:03:08,570
‫En este caso, podemos ver que los datos realmente están viviendo en esa ubicación en el host. docker, y podemos ver que

40
00:03:08,570 --> 00:03:10,790
‫ahora tenemos un volumen.

41
00:03:10,860 --> 00:03:16,760
‫Así que hagamos un volumen Ahora notamos que tiene una ID única que nunca

42
00:03:16,760 --> 00:03:18,190
‫sabremos qué diablos va,

43
00:03:18,200 --> 00:03:18,560
‫¿verdad?

44
00:03:18,560 --> 00:03:21,090
‫Entonces, hagamos una inspección sobre eso.

45
00:03:21,150 --> 00:03:22,310
‫No tiene que escribir todo.

46
00:03:22,310 --> 00:03:26,270
‫Puede escribir los primeros dos caracteres y presionar Tab para completarlo. Obtendrá esa información similar

47
00:03:26,270 --> 00:03:28,390
‫sobre el volumen en sí.

48
00:03:29,440 --> 00:03:35,050
‫en una máquina Linux, puede navegar a esa ubicación en su disco duro y ver los datos.

49
00:03:35,050 --> 00:03:36,790
‫Si realmente está haciendo esto

50
00:03:37,090 --> 00:03:38,530
‫En realidad, habrá algunas bases de datos allí.

51
00:03:38,560 --> 00:03:43,870
‫Si está en una Mac o Windows, recuerde que Docker para Windows y Docker para Mac están

52
00:03:43,870 --> 00:03:49,620
‫haciendo un poco de fondo que está oculto para nosotros en donde está creando una máquina virtual Linux.

53
00:03:49,750 --> 00:03:55,420
‫Entonces, esta información está técnicamente dentro de esa VM de Linux. No podrá ir a esa ruta en su máquina

54
00:03:55,450 --> 00:03:59,530
‫Windows o Mac y ver los datos. En realidad está dentro de esa máquina virtual.

55
00:03:59,530 --> 00:04:04,210
‫Veremos en un momento, con volúmenes montados, cómo podemos superar esa limitación también.

56
00:04:04,210 --> 00:04:10,810
‫fácil de usar en términos de decirnos qué contiene o a qué se asigna este volumen.

57
00:04:11,140 --> 00:04:14,250
‫Al observar esto, observa que no es muy

58
00:04:14,260 --> 00:04:20,260
‫Podemos ver desde la perspectiva del contenedor qué volumen está usando, pero no podemos ver desde el punto de vista

59
00:04:20,410 --> 00:04:22,150
‫del volumen con qué está conectado.

60
00:04:22,150 --> 00:04:22,910
‫¿Derecha?

61
00:04:23,230 --> 00:04:28,910
‫Si solo tuviera que presionar la flecha hacia arriba y, a ver, crear un mysql2.

62
00:04:29,170 --> 00:04:32,190
‫Ahora se creó otro servidor MySQL ejecutándose en segundo plano.

63
00:04:32,200 --> 00:04:36,430
‫Si hago otro volumen docker, verá dos de ellos.

64
00:04:36,430 --> 00:04:37,770
‫Comienzas a ver el problema, ¿verdad?

65
00:04:37,790 --> 00:04:41,630
‫Aquí no hay una manera muy fácil de distinguir uno de otro.

66
00:04:41,740 --> 00:04:53,500
‫Si solo, para demostrar un punto, hacemos un contenedor docker stop mysql, y un docker un contenedor

67
00:04:53,590 --> 00:04:54,930
‫detiene mysql2.

68
00:04:55,190 --> 00:05:01,180
‫Hacemos un contenedor docker ls, no veremos ningún contenedor en ejecución. Si hacemos un ls -a,

69
00:05:01,180 --> 00:05:06,900
‫podemos verlos a todos. Y note que están detenidos. Y luego hacemos un volumen docker ls,

70
00:05:06,910 --> 00:05:08,580
‫nota que todavía tenemos los dos volúmenes.

71
00:05:08,590 --> 00:05:16,390
‫Si hago un contenedor docker rm mysql, y luego mysql2, porque puedo hacer ambas cosas

72
00:05:16,390 --> 00:05:23,590
‫en un solo comando, eliminará ambos contenedores. un volumen docker ls, mis volúmenes siguen ahí.

73
00:05:23,590 --> 00:05:26,560
‫Si ahora hago Mis datos aún están seguros.

74
00:05:26,560 --> 00:05:28,510
‫Entonces, hemos resuelto un problema.

75
00:05:28,510 --> 00:05:31,660
‫Las bases de datos sobreviven al ejecutable.

76
00:05:31,660 --> 00:05:34,180
‫¿Cómo hacemos esto un poco más amigable para el usuario?

77
00:05:35,090 --> 00:05:40,010
‫Ahí es donde entran los volúmenes nombrados y la capacidad de especificar cosas en el comando de

78
00:05:40,010 --> 00:05:40,850
‫ejecución del acoplador.

79
00:05:41,120 --> 00:05:47,810
‫Si toco la flecha hacia arriba un par de veces hasta que llegue al contenedor contenedor, realmente no importa

80
00:05:47,810 --> 00:05:49,600
‫cuál vas a ejecutar nuevamente.

81
00:05:50,820 --> 00:05:59,340
‫En este caso, vamos a lanzar un comando -v. A -v nos permite especificar un nuevo volumen que

82
00:05:59,370 --> 00:06:06,660
‫queremos crear para este contenedor que está a punto de ejecutarse, o nos permite otras

83
00:06:06,660 --> 00:06:07,500
‫dos opciones.

84
00:06:07,500 --> 00:06:10,320
‫Uno de ellos aquí es crear un volumen con nombre.

85
00:06:10,320 --> 00:06:17,660
‫Si solo hiciera -v, y luego var lib mysql, eso haría lo mismo es lo que hizo

86
00:06:17,670 --> 00:06:20,040
‫nuestro comando de volumen en Dockerfile.

87
00:06:20,040 --> 00:06:24,970
‫Realmente no necesitamos hacer eso aquí. Pero lo que podemos hacer es ponerle un

88
00:06:26,810 --> 00:06:29,930
‫nombre con dos puntos. Eso se conoce como un "volumen nombrado". un nombre descriptivo.

89
00:06:30,080 --> 00:06:38,000
‫"Cuando hago eso, y luego hago un volumen de portador ls, verá que mi nuevo contenedor está usando un nuevo volumen

90
00:06:38,180 --> 00:06:39,300
‫y está usando

91
00:06:39,320 --> 00:06:45,980
‫Si hacemos un volumen de docker inspeccionando ese mysql, verás que aquí es más fácil de usar.

92
00:06:46,010 --> 00:06:49,550
‫Si eliminé mi contenedor de nuevo, y tenemos que poner un

93
00:06:52,470 --> 00:06:59,040
‫-f porque aún se está ejecutando, y luego ejecuto otro. Y esta vez, le

94
00:06:59,040 --> 00:07:04,280
‫daré un nombre diferente. Y luego hacemos otro volumen docker ls, verá que

95
00:07:04,280 --> 00:07:09,420
‫parece que no hemos creado un nuevo volumen. Todavía está usando el mismo volumen.

96
00:07:09,420 --> 00:07:17,680
‫Hagamos un contenedor docker inspeccionando el mysql3. es lo que se configuró, pero ¿qué estamos ejecutando?

97
00:07:18,990 --> 00:07:22,860
‫Entonces, lo que veremos aquí es, sí, esto

98
00:07:22,880 --> 00:07:24,300
‫Este es nuestro soporte aquí.

99
00:07:24,560 --> 00:07:29,510
‫Veremos aquí que no solo el nombre es más amigable, sino que también cambió la ubicación de la fuente para

100
00:07:29,510 --> 00:07:30,980
‫ser un poco más amigable también.

101
00:07:31,280 --> 00:07:38,480
‫aquí es que cuando estoy corriendo por días o semanas a la vez, una base de datos particular, en un contenedor particular que

102
00:07:38,540 --> 00:07:43,460
‫necesito seguir usando una y otra vez y no quiero un servidor de base de datos

103
00:07:43,460 --> 00:07:50,930
‫en blanco, Terminaré creando mis contenedores de esta manera y nombrándolos para el proyecto, de modo que sé para qué sirve ese volumen y

104
00:07:50,930 --> 00:07:52,250
‫que debe mantenerse.

105
00:07:52,370 --> 00:07:53,900
‫Para mí, un pequeño consejo

106
00:07:57,840 --> 00:07:59,200
‫Una última cosa aquí.

107
00:08:00,130 --> 00:08:06,390
‫¿Por qué querrías crear docker volume create?

108
00:08:06,550 --> 00:08:13,750
‫Si podemos crearlos desde un comando de ejecución de contenedor acoplable en tiempo de ejecución, y podemos crearlos al especificarlos en el archivo Docker, solo hay unos pocos

109
00:08:13,750 --> 00:08:18,670
‫casos en los que desearía crearlo antes de tiempo. Y en realidad puedes descubrirlo

110
00:08:18,670 --> 00:08:21,320
‫rápidamente usando el comando de ayuda.

111
00:08:22,210 --> 00:08:26,580
‫Porque esta es la única forma en que podemos especificar un controlador diferente.

112
00:08:26,590 --> 00:08:28,890
‫¿Recuerdas ese complemento de cosas de las que voy a hablar más adelante?

113
00:08:29,020 --> 00:08:33,370
‫Luego, cualquier opción de controlador que deseemos usar -o on.

114
00:08:33,370 --> 00:08:37,090
‫Luego, si queremos poner etiquetas en él, de lo cual también hablaremos más adelante en la sección de producción.

115
00:08:37,090 --> 00:08:42,530
‫En ocasiones, en casos especiales, es necesario crear el volumen de Docker con anticipación, pero generalmente para fines de desarrollo

116
00:08:42,540 --> 00:08:46,610
‫local, solo especificarlo en un archivo Docker o en el comando de ejecución es correcto.

