﻿1
00:00:02,530 --> 00:00:10,610
‫En esta conferencia, vamos a hablar sobre el montaje de enlaces y los datos persistentes en esos montajes. Los requisitos son realmente que usted solo

2
00:00:10,610 --> 00:00:15,300
‫sabe sobre la administración de contenedores y cómo ejecutar contenedores.

3
00:00:15,320 --> 00:00:20,230
‫Vamos a entrar Hablemos de monturas de unión. En realidad son bastante geniales.

4
00:00:20,240 --> 00:00:25,550
‫Cuando supe por primera vez sobre ellos, me dio una idea de cómo podría usar Docker fácilmente para el

5
00:00:25,550 --> 00:00:26,180
‫desarrollo local.

6
00:00:26,180 --> 00:00:33,380
‫Realmente, un montaje de enlace es solo una asignación de los archivos de host, o directorios, en un archivo o

7
00:00:33,380 --> 00:00:35,330
‫directorio contenedor. Puedes hacer exactamente eso.

8
00:00:35,330 --> 00:00:39,040
‫Puede especificar un directorio o un solo archivo. En el fondo, básicamente se

9
00:00:39,050 --> 00:00:43,780
‫trata de que las dos ubicaciones apunten a las mismas ubicaciones físicas en el disco.

10
00:00:43,910 --> 00:00:49,730
‫Nuevamente, esto realmente omite el UFS como lo hacen los otros volúmenes para que no borre su

11
00:00:49,730 --> 00:00:52,620
‫ubicación de host cuando elimine el contenedor.

12
00:00:52,640 --> 00:00:58,550
‫Si hay archivos en el contenedor al que asigna los archivos de host, los archivos de host ganan. En realidad, no elimina los archivos

13
00:00:58,550 --> 00:01:03,650
‫en el contenedor que sobrescribió porque realmente no está sobrescribiendo nada en

14
00:01:03,680 --> 00:01:04,770
‫el contenedor.

15
00:01:04,910 --> 00:01:07,100
‫Está justo allí mientras existe el montaje de unión.

16
00:01:07,100 --> 00:01:11,570
‫En el momento en que ya no necesite el montaje de enlace y vuelva a ejecutar el contenedor

17
00:01:11,570 --> 00:01:17,650
‫sin él, en realidad verá los datos subyacentes que estaban allí antes. Debido a que los montajes de enlace generalmente son específicos

18
00:01:17,660 --> 00:01:21,870
‫del host, necesitan datos específicos para estar en el disco duro del host para poder funcionar.

19
00:01:21,890 --> 00:01:23,500
‫No puede especificarlos en un Dockerfile.

20
00:01:23,510 --> 00:01:29,080
‫Debe usarlos en tiempo de ejecución cuando usa el comando de ejecución del contenedor docker. Puedes ver el formato aquí.

21
00:01:29,090 --> 00:01:33,980
‫Es realmente el -v que usamos antes, solo en el lado izquierdo del colon, en

22
00:01:34,100 --> 00:01:38,360
‫realidad estamos colocando un camino completo en lugar de solo un nombre.

23
00:01:38,360 --> 00:01:42,260
‫Y la forma en que Docker realmente puede notar la diferencia entre el volumen con nombre, como lo

24
00:01:42,410 --> 00:01:46,490
‫hicimos hace un tiempo, y el montaje de enlace, es que el montaje de enlace comienza con una barra diagonal.

25
00:01:46,490 --> 00:01:51,470
‫En Windows, notará que se trata de dos barras diagonales y luego la letra de la unidad, y luego

26
00:01:51,470 --> 00:01:52,120
‫su ruta.

27
00:01:52,130 --> 00:01:57,620
‫Siempre que tenga los dos puntos izquierdos y derechos, realmente puede asignar todo lo que desee

28
00:01:57,620 --> 00:02:01,860
‫del host al contenedor, y también puede especificar cosas como solo lectura.

29
00:02:01,880 --> 00:02:07,910
‫Donde esto realmente brilla es con los servicios de desarrollo y ejecución dentro de su contenedor que están

30
00:02:07,910 --> 00:02:12,940
‫accediendo a los archivos que está utilizando en su host o que está cambiando.

31
00:02:12,950 --> 00:02:14,720
‫Hagamos eso con Nginx.

32
00:02:14,930 --> 00:02:22,370
‫Si va a la raíz de nuestro repositorio para este curso, y luego vamos al directorio Dockerfile

33
00:02:22,370 --> 00:02:24,750
‫sample 2. Ahora estábamos aquí antes.

34
00:02:24,770 --> 00:02:28,580
‫Si recuerdas, hay dos archivos. Esto es para Nginx, ¿verdad?

35
00:02:28,580 --> 00:02:36,530
‫Si miramos el Dockerfile muy rápido, es bastante simple. Simplemente especifica un directorio de trabajo y luego copia un

36
00:02:36,560 --> 00:02:39,050
‫archivo de índice en ese directorio.

37
00:02:39,050 --> 00:02:40,490
‫No hay volúmenes aquí.

38
00:02:40,490 --> 00:02:45,290
‫Un montaje de enlace no requiere un volumen para funcionar, aunque ciertamente uno podría estar allí.

39
00:02:45,530 --> 00:02:52,590
‫El anfitrión siempre gana, ¿recuerdas? Entonces, cuando estamos ejecutando un contenedor Docker, entonces

40
00:02:52,630 --> 00:02:56,330
‫hacemos un -d ... vamos a llamarlo nginx.

41
00:02:56,390 --> 00:03:00,420
‫Vamos a darle el puerto 8080 como antes.

42
00:03:00,770 --> 00:03:06,470
‫Entonces le daremos el volumen esta vez. Y necesito decirle que mi directorio de trabajo actual se

43
00:03:06,650 --> 00:03:12,230
‫montará en ese directorio de trabajo en el contenedor. Debido a que mi archivo de índice está aquí

44
00:03:12,230 --> 00:03:13,390
‫en esta carpeta,

45
00:03:13,430 --> 00:03:19,040
‫quiero que esté en el contenedor para poder editarlo aquí, y se ve en vivo en el contenedor.

46
00:03:19,040 --> 00:03:20,320
‫Entonces tendrá sentido en un segundo.

47
00:03:20,540 --> 00:03:24,280
‫Aquí hay un pequeño consejo rápido. En lugar de tener que

48
00:03:24,290 --> 00:03:28,370
‫descubrir mi camino completo y escribir todo, puedes usar pwd aquí así.

49
00:03:28,460 --> 00:03:36,210
‫Que es un acceso directo de shell que dice: 'imprime el directorio de trabajo y reemplaza este comando con esa ruta.

50
00:03:36,380 --> 00:03:43,460
‫'Entonces solo vamos a usar el mismo directorio de trabajo del Dockerfile allí, y luego vamos a

51
00:03:43,460 --> 00:03:45,360
‫especificar la imagen Nginx.

52
00:03:47,590 --> 00:03:52,930
‫Lo que voy a hacer, muy rápido, es abrir otra ventana de terminal para que podamos hacer dos

53
00:03:52,930 --> 00:03:54,480
‫cosas a la vez.

54
00:03:54,590 --> 00:03:56,010
‫Realmente no necesitas hacer esto.

55
00:03:56,050 --> 00:04:01,840
‫Básicamente, solo vamos a editar el archivo en nuestro host, y luego voy a estar en el contenedor y ver

56
00:04:01,840 --> 00:04:02,780
‫qué está sucediendo.

57
00:04:02,920 --> 00:04:04,730
‫Entonces, solo para asegurarnos de que

58
00:04:04,780 --> 00:04:06,350
‫funciona, vamos a localhost.

59
00:04:06,700 --> 00:04:10,000
‫OK, este no es el archivo HTML predeterminado de Nginx.

60
00:04:10,030 --> 00:04:13,080
‫Y utilizamos la imagen regular de Nginx.

61
00:04:13,090 --> 00:04:16,580
‫En realidad no utilizamos el personalizado de este directorio.

62
00:04:16,690 --> 00:04:24,270
‫Acabamos de utilizar una imagen de stock. Para probar ese punto, podemos hacer el mismo

63
00:04:24,280 --> 00:04:37,390
‫comando exacto de nuevo, pero elimine -v y lo ejecutaré en el puerto 8080. Y llamaré a este nginx2.

64
00:04:37,420 --> 00:04:47,930
‫Si voy a mi navegador y voy al localhost 8080, ese es el índice nginx predeterminado. archivo html

65
00:04:48,010 --> 00:04:52,130
‫Este es el personalizado que tenemos viviendo en este directorio.

66
00:04:52,780 --> 00:04:56,380
‫Entonces, ya podemos ver que lo mapeó correctamente.

67
00:04:56,560 --> 00:05:03,010
‫Si abro otra pestaña aquí y obtengo una línea de comando en el contenedor.

68
00:05:08,800 --> 00:05:10,130
‫Luego ve a ese directorio.

69
00:05:17,710 --> 00:05:21,580
‫Notarás que en realidad podemos ver el Dockerfile porque mapeamos todo el directorio.

70
00:05:21,620 --> 00:05:27,460
‫Si está a la izquierda, si realmente creamos un nuevo archivo y puedo usar ese comando táctil de Linux aquí para

71
00:05:30,440 --> 00:05:37,010
‫crear un nuevo archivo. Luego a la derecha ... Uy ... solo sigue olvidando que ... ls -al, y lo verás

72
00:05:37,010 --> 00:05:37,900
‫en tu archivo.

73
00:05:37,970 --> 00:05:43,350
‫Espero que entiendas lo que está sucediendo aquí, que ambas ubicaciones son la misma ubicación.

74
00:05:43,370 --> 00:05:47,350
‫Y si hice eco de algo en ese archivo testme y

75
00:05:57,430 --> 00:05:58,420
‫luego ...

76
00:06:01,620 --> 00:06:02,410
‫ahí tienes

77
00:06:02,410 --> 00:06:06,670
‫Nuestro nginx puede ver los cambios porque es solo una ruta de archivo normal en el contenedor,

78
00:06:06,670 --> 00:06:08,720
‫y esos archivos están en el host.

79
00:06:08,830 --> 00:06:12,670
‫Si tuviera que eliminarlos en el contenedor, se eliminarían en el host porque es el

80
00:06:12,670 --> 00:06:13,210
‫mismo archivo.

81
00:06:13,210 --> 00:06:19,090
‫Aquí es cuando generalmente hago que un desarrollador piense en todos sus entornos de desarrollo

82
00:06:19,090 --> 00:06:24,670
‫que tienen, que son esta configuración complicada. Tal vez están usando Vagrant, o algún

83
00:06:24,670 --> 00:06:30,880
‫otro método manual para configurar su entorno perfecto, y pueden comenzar a ver cómo esto podría simplificarlo mucho.

84
00:06:31,330 --> 00:06:35,920
‫Como no tenía que hacer ninguna configuración complicada en mi Mac, simplemente ejecuté un contenedor.

85
00:06:35,920 --> 00:06:43,670
‫Utilicé el comando -v con el montaje, y ahora mi código, en mi host, se puede editar en mi host.

86
00:06:43,840 --> 00:06:47,890
‫Y realmente nunca necesito entrar en la carcasa del contenedor.

87
00:06:47,890 --> 00:06:52,570
‫Por lo general, puede ejecutar el contenedor y mirar sus registros para ver si hay algún error mientras

88
00:06:52,570 --> 00:06:53,260
‫está codificando.

89
00:06:53,500 --> 00:06:58,750
‫Por supuesto, este es un ejemplo simple con Nginx. Más adelante, en realidad vamos a tener

90
00:06:58,750 --> 00:07:03,160
‫ejemplos específicos de diferentes entornos de desarrollo para desarrollo local y contenedores.

