0
00:00:00.019 --> 00:00:00.050
ulgadas

1
00:00:00.159 --> 00:00:03.740
n este video, te enseñaré todos los conceptos principales de Docker,

2
00:00:03.750 --> 00:00:07.250
ncluida la experiencia práctica con él.

3
00:00:07.460 --> 00:00:09.819
ntonces, si tienes que usar Docker en el trabajo,

4
00:00:09.829 --> 00:00:14.300
 si necesitas aprender Docker para mejorar tus habilidades de ingeniería y necesitas obtener

5
00:00:14.310 --> 00:00:17.250
omencé rápido y entendí todos los conceptos principales y

6
00:00:17.260 --> 00:00:19.659
prenda los conceptos básicos sobre cómo trabajar con Docker,

7
00:00:19.870 --> 00:00:24.459
ste curso intensivo es perfecto para ti. Primero comenzaremos por

8
00:00:24.620 --> 00:00:25.040
 qué hacer

9
00:00:25.239 --> 00:00:27.479
s por qué se creó básicamente,

10
00:00:27.489 --> 00:00:30.770
ué problemas resuelve en ingeniería y cómo

11
00:00:30.780 --> 00:00:33.529
yuda en el proceso de desarrollo e implementación de software.

12
00:00:33.650 --> 00:00:35.560
ntonces entenderás exactamente por qué

13
00:00:35.759 --> 00:00:41.689
s tan importante y por eso se ha vuelto tan popular y ampliamente utilizado en proyectos de TI

14
00:00:42.119 --> 00:00:45.479
 como parte de una solución de virtualización, doer

15
00:00:45.709 --> 00:00:50.770
s una mejora con respecto a las máquinas virtuales o el siguiente paso de la evolución,

16
00:00:50.779 --> 00:00:54.330
ambién explicaré la diferencia entre una máquina virtual y una más oscura,

17
00:00:54.340 --> 00:00:56.430
 cuáles son las ventajas de

18
00:00:56.639 --> 00:00:58.099
acedor en esta comparación.

19
00:00:58.299 --> 00:01:00.810
espués de entender por qué queremos usar do

20
00:01:01.029 --> 00:01:03.209
n primer lugar, instalaremos

21
00:01:03.450 --> 00:01:07.209
azlo y aprende a trabajar realmente con él. Aprenderemos

22
00:01:07.349 --> 00:01:09.589
mágenes de doer, contenedores, más oscuros

23
00:01:09.690 --> 00:01:12.160
egistro, registros públicos y privados,

24
00:01:12.169 --> 00:01:18.580
 ejecutaremos contenedores localmente en función de algunas de las imágenes disponibles en Docker

25
00:01:18.790 --> 00:01:21.010
egistro público llamado Docker Hub.

26
00:01:21.260 --> 00:01:24.480
ambién aprenderemos el concepto de crear tus propias imágenes

27
00:01:24.489 --> 00:01:28.430
 aprender sobre el plano de imagen de Docker llamado Docker File.

28
00:01:28.589 --> 00:01:29.160
 por supuesto,

29
00:01:29.169 --> 00:01:33.540
eremos todo esto en acción y aprenderemos todos los comandos de Docker para extraer imágenes,

30
00:01:33.550 --> 00:01:37.199
jecutar contenedores, crear su propia imagen de Docker, etcétera.

31
00:01:37.440 --> 00:01:42.139
ambién aprenderemos sobre el control de versiones de imágenes con texto de imagen y, finalmente,

32
00:01:42.150 --> 00:01:44.720
espués de aprender a trabajar con Docker,

33
00:01:44.730 --> 00:01:48.580
ambién explicaré con animaciones gráficas cómo

34
00:01:48.790 --> 00:01:53.370
ncaja en el panorama general del proceso de desarrollo e implementación de software.

35
00:01:53.379 --> 00:01:54.910
ntonces, al final de este video,

36
00:01:54.919 --> 00:01:59.250
e sentirá mucho más seguro de su conocimiento y comprensión en

37
00:01:59.449 --> 00:01:59.730
acedor

38
00:01:59.919 --> 00:02:03.209
 puede aprovechar fácilmente ese conocimiento básico

39
00:02:03.325 --> 00:02:06.335
ara convertirse en un usuario avanzado de Docker si lo desea.

40
00:02:06.575 --> 00:02:08.015
 debajo de la descripción del vídeo,

41
00:02:08.026 --> 00:02:11.595
roporcionaré algunos recursos para aprender aún más sobre Docker

42
00:02:11.766 --> 00:02:15.656
 avance más en él. Pero antes de meternos de lleno,

43
00:02:15.886 --> 00:02:18.035
arece que muchos de ustedes están viendo el

44
00:02:18.046 --> 00:02:21.095
os vídeos de nuestro canal aún no están suscritos,

45
00:02:21.106 --> 00:02:23.695
ntonces, si estás sacando algún valor del

46
00:02:23.705 --> 00:02:26.716
utoriales gratuitos que publico regularmente en este canal,

47
00:02:26.725 --> 00:02:31.322
segúrate de suscribirte no a mí, a ningún vídeo o tutorial futuro.

48
00:02:31.332 --> 00:02:35.272
ambién me encantaría conectarme contigo en mis otras cuentas de redes sociales,

49
00:02:35.281 --> 00:02:39.841
onde publico contenido entre bastidores, actualizaciones semanales, etc.

50
00:02:40.011 --> 00:02:42.602
sí que espero conectarme contigo allí también.

51
00:02:42.611 --> 00:02:47.462
ueno, estoy muy emocionada de enseñarte todo esto, así que empecemos.

52
00:02:47.761 --> 00:02:51.022
omencemos con la pregunta más importante. ¿Qué es lo que hay que hacer?

53
00:02:51.261 --> 00:02:54.981
Por qué se creó? ¿Y qué problema resuelve?

54
00:02:58.199 --> 00:03:02.119
n palabras simples, Docker es un software de virtualización

55
00:03:02.229 --> 00:03:05.899
ue facilita mucho el desarrollo y la implementación de aplicaciones,

56
00:03:06.240 --> 00:03:10.669
s mucho más fácil en comparación con cómo se hacía antes de la introducción de Docker.

57
00:03:10.899 --> 00:03:14.460
 Docker lo hace empaquetando una aplicación

58
00:03:14.630 --> 00:03:17.660
n algo llamado contenedor que tiene

59
00:03:17.669 --> 00:03:20.169
odo lo que la aplicación necesita para ejecutarse,

60
00:03:20.360 --> 00:03:24.300
omo el código de la aplicación en sí, sus bibliotecas y dependencias,

61
00:03:24.330 --> 00:03:27.820
ino también el tiempo de ejecución y la configuración del entorno.

62
00:03:28.259 --> 00:03:31.210
ntonces, la aplicación y su entorno de ejecución son

63
00:03:31.220 --> 00:03:35.229
mbos empaquetados en un solo paquete de Docker,

64
00:03:35.240 --> 00:03:37.619
ue puede compartir y distribuir fácilmente.

65
00:03:38.029 --> 00:03:40.369
hora, ¿por qué es tan importante?

66
00:03:40.380 --> 00:03:42.570
 cómo se desarrollaron realmente las aplicaciones

67
00:03:42.580 --> 00:03:45.750
 se implementó antes de la introducción de Docker.

68
00:03:46.100 --> 00:03:50.770
eamos eso para comprender los beneficios de Docker con mayor claridad.

69
00:03:54.429 --> 00:03:57.940
ntonces, ¿cómo desarrollamos aplicaciones antes de los contenedores?

70
00:03:58.320 --> 00:04:01.610
or lo general, cuando tienes un equipo de desarrolladores trabajando en alguna aplicación,

71
00:04:01.649 --> 00:04:04.190
endrían que instalar todos los servicios.

72
00:04:04.199 --> 00:04:05.240
sa aplicación

73
00:04:05.350 --> 00:04:07.929
epende de nuestras necesidades, como los servicios de bases de datos,

74
00:04:07.940 --> 00:04:10.960
tcétera directamente en su sistema operativo.

75
00:04:10.970 --> 00:04:11.419
xacto.

76
00:04:11.550 --> 00:04:15.800
or ejemplo, si está desarrollando una aplicación de JavaScript y necesita una publicación

77
00:04:16.149 --> 00:04:17.369
ase de datos SQL,

78
00:04:17.640 --> 00:04:18.769
al vez necesites

79
00:04:19.070 --> 00:04:24.429
 por cobrar a Mosquito por mensajes. Como si tuvieras una

80
00:04:24.910 --> 00:04:28.920
hora necesita todos estos servicios localmente en su entorno de desarrollo

81
00:04:28.929 --> 00:04:32.269
ara que puedas desarrollar y probar la aplicación correctamente,

82
00:04:32.649 --> 00:04:38.420
 todos los desarrolladores del equipo tendrían que ir a instalar todos esos servicios,

83
00:04:38.429 --> 00:04:42.890
onfigúrelos y ejecútelos en su entorno de desarrollo local

84
00:04:42.899 --> 00:04:46.160
 según el sistema operativo que utilicen,

85
00:04:46.279 --> 00:04:48.640
l proceso de instalación será diferente

86
00:04:48.970 --> 00:04:50.130
orque instalar una publicación

87
00:04:50.470 --> 00:04:51.660
ase de datos SQL en

88
00:04:51.779 --> 00:04:52.079
o

89
00:04:52.339 --> 00:04:56.339
l sistema operativo es diferente de instalarlo en una máquina con Windows. Por ejemplo,

90
00:04:56.619 --> 00:04:59.859
tra cosa con la instalación de servicios directamente en

91
00:04:59.869 --> 00:05:03.049
n sistema operativo que siga alguna guía de instalación

92
00:05:03.149 --> 00:05:07.380
s que generalmente tiene varios pasos de instalación,

93
00:05:07.579 --> 00:05:09.700
, a continuación, la configuración del servicio.

94
00:05:09.730 --> 00:05:13.109
ntonces, con varios comandos que debe ejecutar para instalar,

95
00:05:13.119 --> 00:05:15.010
onfigurar y configurar el servicio,

96
00:05:15.019 --> 00:05:20.429
as posibilidades de que algo salga mal y se produzca un error son bastante altas.

97
00:05:20.440 --> 00:05:21.309
 este enfoque,

98
00:05:21.320 --> 00:05:25.535
 este proceso de configuración de un entorno de desarrollo para un desarrollador,

99
00:05:25.545 --> 00:05:30.765
n realidad, puede resultar bastante tedioso, según la complejidad de la aplicación.

100
00:05:30.774 --> 00:05:34.695
or ejemplo, si tiene 10 servicios que utiliza su aplicación,

101
00:05:34.954 --> 00:05:41.214
ntonces tendría que hacer esa instalación 10 veces para cada servicio.

102
00:05:41.225 --> 00:05:41.695
 de nuevo,

103
00:05:41.704 --> 00:05:44.795
erá diferente dentro del equipo según

104
00:05:44.804 --> 00:05:47.195
ué sistema operativo utiliza cada desarrollador.

105
00:05:47.464 --> 00:05:51.635
hora veamos cómo los contenedores resuelven algunos de estos problemas

106
00:05:51.970 --> 00:05:52.940
on contenedores.

107
00:05:52.950 --> 00:05:55.040
n realidad, no es necesario instalar ninguno

108
00:05:55.049 --> 00:05:57.880
e los servicios directamente en su sistema operativo,

109
00:05:58.019 --> 00:06:04.089
orque con Docker tienes ese servicio empaquetado en un entorno aislado.

110
00:06:04.170 --> 00:06:04.940
ntonces tienes

111
00:06:05.260 --> 00:06:10.170
resenta QL con una versión específica empaquetada con toda su configuración

112
00:06:10.380 --> 00:06:12.000
entro de un contenedor.

113
00:06:12.220 --> 00:06:16.950
ntonces, como desarrollador, no tienes que ir a buscar algunos binarios

114
00:06:17.100 --> 00:06:19.750
ara descargar e instalar en su máquina.

115
00:06:19.869 --> 00:06:22.630
ero más bien continúa e inicia ese servicio

116
00:06:22.640 --> 00:06:27.029
omo contenedor de Docker con un solo comando de Docker,

117
00:06:27.049 --> 00:06:30.559
ue obtiene el paquete contenedor de Internet

118
00:06:30.739 --> 00:06:32.750
 lo inicia en su computadora

119
00:06:33.170 --> 00:06:35.299
 el comando docker será el mismo

120
00:06:35.309 --> 00:06:38.690
ndependientemente del sistema operativo en el que se encuentre,

121
00:06:38.809 --> 00:06:42.709
 también será el mismo independientemente del servicio que esté instalando.

122
00:06:42.720 --> 00:06:46.149
ntonces, si tiene 10 servicios de los que depende su aplicación de JavaScript,

123
00:06:46.230 --> 00:06:52.079
olo tendría que ejecutar 10 comandos de Docker para cada contenedor, y eso será todo.

124
00:06:52.380 --> 00:06:55.239
ntonces, como puede ver, Docker estandariza,

125
00:06:55.250 --> 00:06:58.269
l proceso de ejecutar cualquier servicio en tu desarrollo

126
00:06:58.279 --> 00:07:01.769
ntorno y facilita mucho todo el proceso.

127
00:07:01.790 --> 00:07:05.239
sí que básicamente puedes concentrarte y trabajar más en el desarrollo

128
00:07:05.250 --> 00:07:08.510
e intentar instalar y configurar servicios en su máquina.

129
00:07:09.019 --> 00:07:13.269
 esto obviamente hace que la configuración de su entorno de desarrollo local

130
00:07:13.429 --> 00:07:16.070
ucho más rápido y fácil que

131
00:07:16.299 --> 00:07:19.010
a opción sin contenedores.

132
00:07:19.190 --> 00:07:21.089
demás, con el Docker,

133
00:07:21.100 --> 00:07:24.519
uedes incluso tener diferentes versiones de la misma aplicación

134
00:07:24.570 --> 00:07:28.535
jecutándose en su entorno local sin tener ningún conflicto,

135
00:07:28.545 --> 00:07:30.774
o cual es muy difícil de hacer

136
00:07:30.934 --> 00:07:33.904
i está instalando la misma aplicación con

137
00:07:33.915 --> 00:07:36.565
ersiones diferentes directamente en su sistema operativo,

138
00:07:36.855 --> 00:07:41.975
 veremos todo esto en acción en la parte de demostración de este vídeo.

139
00:07:42.105 --> 00:07:46.605
hora veamos cómo los contenedores pueden mejorar el proceso de implementación de aplicaciones.

140
00:07:46.924 --> 00:07:50.994
ntes de los contenedores. Un proceso de implementación tradicional tendría este aspecto

141
00:07:51.500 --> 00:07:55.910
l equipo de desarrollo produciría un artefacto de aplicación o un paquete

142
00:07:56.059 --> 00:07:59.410
unto con un conjunto de instrucciones sobre cómo

143
00:07:59.420 --> 00:08:03.380
nstale y configure ese paquete de aplicaciones en el servidor.

144
00:08:03.390 --> 00:08:06.920
ntonces tendrías algo como un archivo jar para el trabajo

145
00:08:06.929 --> 00:08:11.140
plicación o algo similar según el lenguaje de programación utilizado.

146
00:08:11.529 --> 00:08:13.190
 además, por supuesto,

147
00:08:13.200 --> 00:08:15.700
endrías algún tipo de servicio de base de datos

148
00:08:15.709 --> 00:08:18.339
 algunos otros servicios que su aplicación necesitaba,

149
00:08:18.489 --> 00:08:21.450
ambién con un conjunto de instrucciones sobre cómo configurar

150
00:08:21.600 --> 00:08:26.420
 configúrelo en el servidor para que la aplicación pueda conectarse y usarlo.

151
00:08:26.690 --> 00:08:28.920
ntonces, el equipo de desarrollo proporcionaría esa aplicación

152
00:08:28.929 --> 00:08:32.950
rtefacto o paquete al equipo de operaciones,

153
00:08:33.130 --> 00:08:34.489
 el equipo de operaciones

154
00:08:34.690 --> 00:08:36.510
e encargaría de la instalación

155
00:08:36.710 --> 00:08:38.510
 configurar la aplicación

156
00:08:38.760 --> 00:08:41.659
 todos sus servicios de inquilinos, como la base de datos, por ejemplo.

157
00:08:41.669 --> 00:08:44.880
hora, el problema con este tipo de enfoque es que, en primer lugar,

158
00:08:44.890 --> 00:08:47.880
ecesita configurar todo e instalar todo

159
00:08:48.049 --> 00:08:52.109
uevamente directamente en el sistema operativo, que mencioné

160
00:08:52.489 --> 00:08:55.659
n el contexto de desarrollo, que en realidad es muy propenso a errores,

161
00:08:55.669 --> 00:08:59.520
 puede tener varios problemas diferentes durante el proceso de configuración.

162
00:08:59.539 --> 00:09:03.330
ambién puede tener conflictos con las versiones de dependencia donde

163
00:09:03.340 --> 00:09:06.000
os servicios dependen de la misma biblioteca,

164
00:09:06.010 --> 00:09:08.070
or ejemplo, pero con diferentes versiones.

165
00:09:08.080 --> 00:09:09.239
 cuando eso suceda,

166
00:09:09.250 --> 00:09:12.659
ará que el proceso de configuración sea mucho más difícil y complejo.

167
00:09:12.700 --> 00:09:16.530
ásicamente, muchas cosas que pueden salir mal durante las operaciones

168
00:09:16.539 --> 00:09:21.780
l equipo está instalando y configurando aplicaciones y servicios en un servidor.

169
00:09:22.330 --> 00:09:25.830
tro problema que podría surgir de este tipo de proceso es

170
00:09:25.960 --> 00:09:28.750
uando hay una falta de comunicación entre

171
00:09:28.820 --> 00:09:31.500
l equipo de desarrollo y el equipo de operaciones.

172
00:09:31.880 --> 00:09:35.440
orque como todo está en una guía textual,

173
00:09:35.450 --> 00:09:40.559
omo una lista de instrucciones sobre cómo configurar y ejecutar la aplicación,

174
00:09:40.729 --> 00:09:42.489
 tal vez algún tipo de lista de verificación,

175
00:09:42.500 --> 00:09:45.400
odría haber casos en los que los desarrolladores olviden

176
00:09:45.409 --> 00:09:47.989
ara mencionar algún paso importante sobre la configuración.

177
00:09:48.000 --> 00:09:49.880
 cuando esa parte falla,

178
00:09:49.890 --> 00:09:55.565
l equipo de operaciones tiene que volver a los desarrolladores y solicitar más detalles y comentarios.

179
00:09:55.684 --> 00:09:58.585
 esto podría llevar a una comunicación de ida y vuelta

180
00:09:58.594 --> 00:10:02.025
asta que la aplicación se implemente correctamente en el servidor.

181
00:10:02.034 --> 00:10:05.494
ásicamente, tienes esta sobrecarga de comunicación adicional donde

182
00:10:05.505 --> 00:10:09.094
os desarrolladores tienen que comunicarse en algún tipo de texto

183
00:10:09.275 --> 00:10:11.705
ráfico en cualquier formato,

184
00:10:11.815 --> 00:10:13.744
ómo debe ejecutarse la aplicación,

185
00:10:13.994 --> 00:10:17.275
 como mencioné, esto podría provocar problemas y problemas de comunicación

186
00:10:17.469 --> 00:10:21.820
on contenedores. En realidad, este proceso está simplificado porque

187
00:10:22.080 --> 00:10:25.549
hora los desarrolladores crean un paquete de aplicaciones

188
00:10:25.700 --> 00:10:28.309
so no solo incluye el código en sí,

189
00:10:28.320 --> 00:10:33.109
ino también todas las dependencias y la configuración de la aplicación.

190
00:10:33.119 --> 00:10:36.789
ntonces, en lugar de tener que escribir eso en algún formato textual y documento,

191
00:10:37.020 --> 00:10:41.270
ásicamente, simplemente empaquetan todo eso dentro del artefacto de la aplicación.

192
00:10:41.280 --> 00:10:44.409
 dado que ya está encapsulado en un entorno,

193
00:10:44.995 --> 00:10:47.645
l personal de operaciones no tiene que configurar ninguna

194
00:10:47.656 --> 00:10:49.755
e estas cosas directamente en el servidor.

195
00:10:49.765 --> 00:10:53.125
or lo tanto, hace que todo el proceso sea mucho más fácil.

196
00:10:53.226 --> 00:10:57.185
 hay menos espacio para los problemas que mencioné anteriormente.

197
00:10:57.375 --> 00:11:00.846
ntonces, lo único que debe hacer el equipo de operaciones en este caso

198
00:11:00.856 --> 00:11:06.945
s ejecutar un comando docker que obtenga el paquete contenedor que crearon los desarrolladores

199
00:11:07.096 --> 00:11:08.955
 lo ejecuta en el servidor.

200
00:11:09.135 --> 00:11:11.426
e la misma manera que el equipo de operaciones ejecutará un servicio

201
00:11:11.771 --> 00:11:15.471
ue la aplicación también necesita como contenedores Docker,

202
00:11:15.502 --> 00:11:19.901
 eso facilita mucho el proceso de implementación desde el punto de vista operativo.

203
00:11:19.911 --> 00:11:20.661
hora, por supuesto,

204
00:11:20.671 --> 00:11:23.651
l equipo de operaciones tendrá que instalar y configurar Docker Run

205
00:11:23.661 --> 00:11:28.012
iempo en el servidor antes de que puedan ejecutar contenedores.

206
00:11:28.091 --> 00:11:32.781
ero eso es solo un esfuerzo de tiempo para un servicio o una tecnología.

207
00:11:32.901 --> 00:11:35.541
 una vez que tenga instalado el tiempo de ejecución de Docker,

208
00:11:35.552 --> 00:11:38.382
implemente puede ejecutar contenedores Docker en ese servidor

209
00:11:41.780 --> 00:11:46.770
hora. Al principio, mencioné que Docker es

210
00:11:46.969 --> 00:11:52.109
omo una máquina virtual, y las máquinas virtuales existen desde hace mucho tiempo.

211
00:11:52.289 --> 00:11:55.229
ntonces, ¿por qué se adoptó tanto el color oscuro?

212
00:11:55.239 --> 00:11:58.950
ué ventajas tiene sobre las máquinas virtuales,

213
00:11:58.960 --> 00:12:00.799
y cuál es la diferencia entre los dos?

214
00:12:01.070 --> 00:12:03.739
ara eso, necesitamos ver un poco cómo hacerlo

215
00:12:03.960 --> 00:12:05.890
unciona a nivel técnico.

216
00:12:06.099 --> 00:12:07.809
ambién dije eso con Docker,

217
00:12:07.820 --> 00:12:11.500
o necesita instalar los servicios directamente en el sistema operativo.

218
00:12:11.679 --> 00:12:12.270
ero

219
00:12:12.520 --> 00:12:17.510
n ese caso, ¿cómo ejecuta Docker sus contenedores en un sistema operativo?

220
00:12:17.700 --> 00:12:19.679
hora, para entender todo esto,

221
00:12:19.849 --> 00:12:23.909
eamos primero cómo se compone un sistema operativo.

222
00:12:23.919 --> 00:12:26.130
os sistemas operativos tienen dos capas principales.

223
00:12:26.309 --> 00:12:28.369
ienes el núcleo del sistema operativo

224
00:12:28.559 --> 00:12:31.669
 las aplicaciones del sistema operativo. 

225
00:12:32.039 --> 00:12:37.989
 el kernel es la parte que se comunica con los componentes de hardware, como la CPU,

226
00:12:38.000 --> 00:12:39.969
lmacenamiento de memoria, etcétera.

227
00:12:39.979 --> 00:12:42.289
ntonces, cuando tienes una máquina física

228
00:12:42.409 --> 00:12:45.909
on todos estos recursos e instalas el sistema operativo

229
00:12:46.159 --> 00:12:47.710
n esa máquina física,

230
00:12:47.859 --> 00:12:50.494
l núcleo del sistema operativo en realidad

231
00:12:50.505 --> 00:12:53.244
ea quien hable con los componentes de hardware

232
00:12:53.354 --> 00:12:57.354
ara asignar recursos como el almacenamiento de memoria de la CPU, etcétera,

233
00:12:57.515 --> 00:13:01.255
 las aplicaciones y, a continuación, a ejecutarlas en ese sistema operativo.

234
00:13:01.364 --> 00:13:05.005
 esas aplicaciones forman parte de la capa de aplicaciones,

235
00:13:05.114 --> 00:13:07.505
 se ejecutan en la parte superior de la capa del núcleo.

236
00:13:07.840 --> 00:13:12.049
ntonces, el kernel es una especie de intermediario entre las aplicaciones que ve

237
00:13:12.169 --> 00:13:14.409
uando interactúas con tu computadora

238
00:13:14.520 --> 00:13:17.770
 el hardware subyacente de su computadora.

239
00:13:17.950 --> 00:13:23.950
 ahora, dado que Docker y Virtual Machine son herramientas de virtualización,

240
00:13:23.960 --> 00:13:25.340
a pregunta es

241
00:13:25.500 --> 00:13:30.549
qué parte del sistema operativo virtualizan realmente?

242
00:13:30.630 --> 00:13:32.289
 ahí es donde está la principal diferencia

243
00:13:32.299 --> 00:13:34.765
ntre Docker y máquinas virtuales en realidad como

244
00:13:34.955 --> 00:13:38.005
ara que Docker virtualice la capa de aplicaciones.

245
00:13:38.244 --> 00:13:40.465
sto significa que cuando ejecutas un contenedor Docker,

246
00:13:40.474 --> 00:13:43.934
n realidad contiene la capa de aplicaciones

247
00:13:44.094 --> 00:13:47.515
el sistema operativo y algunas otras aplicaciones

248
00:13:47.525 --> 00:13:49.674
nstalado en la parte superior de esa capa de aplicación.

249
00:13:49.924 --> 00:13:52.815
odría ser un tiempo de ejecución de Java o Python o lo que sea,

250
00:13:53.104 --> 00:13:58.625
 usa el núcleo del host porque no tiene su propio núcleo.

251
00:13:58.929 --> 00:14:01.090
a máquina virtual, por otro lado,

252
00:14:01.109 --> 00:14:04.500
iene la capa de aplicaciones y su propio núcleo.

253
00:14:04.510 --> 00:14:07.919
or lo tanto, virtualiza todo el sistema operativo,

254
00:14:07.929 --> 00:14:12.750
o que significa que cuando descargas una imagen de máquina virtual en tu host.

255
00:14:13.010 --> 00:14:17.325
o usa el núcleo de hosts. De hecho, arranca el suyo propio

256
00:14:17.544 --> 00:14:21.715
ntonces, ¿qué significa realmente esta diferencia entre una máquina más oscura y una máquina virtual?

257
00:14:21.724 --> 00:14:26.875
n primer lugar, el tamaño de los paquetes o imágenes más oscuros es mucho más pequeño

258
00:14:27.015 --> 00:14:30.674
orque solo tienen que implementar una capa

259
00:14:30.895 --> 00:14:32.215
el sistema operativo

260
00:14:32.455 --> 00:14:35.224
or lo que las imágenes más oscuras suelen ocupar un par de megabytes.

261
00:14:35.234 --> 00:14:39.974
as imágenes grandes de máquinas virtuales, por otro lado, pueden ocupar un par de gigabytes.

262
00:14:40.294 --> 00:14:44.135
sto significa que cuando se trabaja con Docker, se ahorra mucho espacio en disco.

263
00:14:44.580 --> 00:14:49.729
uede ejecutar e iniciar contenedores Docker mucho más rápido que las máquinas virtuales,

264
00:14:49.739 --> 00:14:53.580
orque la máquina virtual tiene que instalar un núcleo cada vez que se inicia,

265
00:14:53.770 --> 00:14:56.169
ientras que el contenedor Docker simplemente se reutiliza

266
00:14:56.340 --> 00:14:59.669
l núcleo del host y simplemente inicia la capa de aplicación encima de él.

267
00:14:59.679 --> 00:15:02.979
ntonces, aunque la máquina virtual necesita un par de minutos para iniciarse,

268
00:15:02.989 --> 00:15:05.409
os contenedores docker generalmente se inician en un

269
00:15:05.510 --> 00:15:06.510
nos pocos milisegundos.

270
00:15:06.780 --> 00:15:08.960
a tercera diferencia es la compatibilidad,

271
00:15:09.010 --> 00:15:14.599
ara que pueda ejecutar la imagen virtual de cualquier sistema operativo en cualquier otro

272
00:15:14.739 --> 00:15:16.590
ost del sistema operativo.

273
00:15:16.599 --> 00:15:20.729
ntonces, en una máquina Windows, puede ejecutar una máquina virtual Linux, por ejemplo.

274
00:15:21.080 --> 00:15:26.359
ero no puedes hacer eso con Docker, al menos no directamente, entonces, ¿cuál es el problema aquí?

275
00:15:26.650 --> 00:15:30.719
upongamos que tiene un sistema operativo Windows con Windows Kernel

276
00:15:30.869 --> 00:15:34.309
 su capa de aplicación, y desea ejecutar un Linux

277
00:15:34.460 --> 00:15:40.169
magen de Docker basada directamente en ese host de Windows. El problema aquí es

278
00:15:40.299 --> 00:15:46.210
a imagen de Docker basada en Docker no puede usar el kernel de Windows. Necesitaría un núcleo de Linux para ejecutarse

279
00:15:46.429 --> 00:15:49.919
orque puede ejecutar una capa de aplicaciones de Linux en un Kern de Windows.

280
00:15:50.481 --> 00:15:52.981
sí que eso es un problema con Docker.

281
00:15:53.171 --> 00:15:54.012
in embargo,

282
00:15:54.252 --> 00:15:56.831
uando desarrolla en Windows o Me

283
00:15:57.021 --> 00:15:57.461
S,

284
00:15:57.752 --> 00:16:03.822
esea ejecutar varios servicios porque la mayoría de los contenedores para los servicios populares

285
00:16:03.952 --> 00:16:05.841
stán en realidad basados en Linux.

286
00:16:05.961 --> 00:16:11.651
ambién es interesante saber que Docker se escribió y creó originalmente para Linux

287
00:16:12.231 --> 00:16:13.142
ero más tarde

288
00:16:13.533 --> 00:16:16.494
e hecho, hice una actualización y desarrollé lo que

289
00:16:16.504 --> 00:16:20.903
lamado Docker desktop para Windows y Mac,

290
00:16:20.914 --> 00:16:23.174
o que lo hizo posible

291
00:16:23.443 --> 00:16:29.294
ara ejecutar contenedores basados en Linux también en ordenadores Windows y Mac.

292
00:16:29.304 --> 00:16:34.304
ntonces, la forma en que funciona es que el escritorio más oscuro usa una capa de hipervisor

293
00:16:34.453 --> 00:16:36.504
on un Linux ligero

294
00:16:36.736 --> 00:16:37.945
istribución además

295
00:16:38.185 --> 00:16:40.875
ara proporcionar el núcleo de Linux necesario

296
00:16:41.185 --> 00:16:43.546
 de esta manera ejecutar Linux

297
00:16:43.695 --> 00:16:48.726
s posible usar contenedores basados en los sistemas operativos Windows y Mac.

298
00:16:48.736 --> 00:16:49.486
, por cierto,

299
00:16:49.495 --> 00:16:53.625
i desea obtener más información sobre la virtualización y cómo funcionan las máquinas virtuales.

300
00:16:53.635 --> 00:16:55.835
 qué es un hipervisor, por ejemplo.

301
00:16:55.846 --> 00:16:59.616
uedes ver mi otro vídeo, donde explico todo eso en detalle.

302
00:17:00.309 --> 00:17:02.840
sto significa para el desarrollo local.

303
00:17:02.849 --> 00:17:07.430
omo ingeniero, instalaría un escritorio más oscuro en su Windows o Mac

304
00:17:07.680 --> 00:17:08.640
omputadora con sistema operativo

305
00:17:08.819 --> 00:17:09.800
ara ejecutar Linux

306
00:17:09.920 --> 00:17:15.160
mágenes basadas, que, como mencioné en la mayoría de las bases de datos de servicios populares,

307
00:17:15.170 --> 00:17:18.219
tcétera están basados en su mayoría en Linux.

308
00:17:18.229 --> 00:17:19.560
ntonces necesitarías eso,

309
00:17:19.939 --> 00:17:22.050
 eso nos lleva a la

310
00:17:22.199 --> 00:17:23.800
nstalación de

311
00:17:24.040 --> 00:17:24.329
acedor.

312
00:17:24.780 --> 00:17:27.680
ara hacer algunas demostraciones y aprender Docker en la práctica,

313
00:17:27.689 --> 00:17:29.119
rimero tendría que instalarlo.

314
00:17:29.560 --> 00:17:30.910
ntonces, para instalar Docker,

315
00:17:30.920 --> 00:17:34.390
implemente vaya a su página oficial para obtener la guía de instalación

316
00:17:34.510 --> 00:17:35.810
 siga los pasos.

317
00:17:35.819 --> 00:17:40.650
omo Docker se actualiza todo el tiempo, la instalación cambia.

318
00:17:40.660 --> 00:17:43.050
ntonces, en lugar de simplemente darles algunos comentarios que

319
00:17:43.060 --> 00:17:46.290
uede funcionar ahora, pero se actualizará en el futuro,

320
00:17:46.300 --> 00:17:48.579
iempre debes consultar las últimas

321
00:17:48.589 --> 00:17:52.150
ocumentación para la guía de instalación de cualquier herramienta.

322
00:17:52.619 --> 00:17:55.869
ntonces, si buscamos Docker desktop

323
00:17:56.229 --> 00:17:57.310
nstalación

324
00:17:58.510 --> 00:18:02.859
 haga clic en uno de esos enlaces, como instalar en Windows, así que eso es

325
00:18:03.050 --> 00:18:04.489
l escritorio Docker,

326
00:18:04.760 --> 00:18:06.099
a herramienta que mencioné

327
00:18:06.260 --> 00:18:10.219
esolvió este problema de ejecutar imágenes basadas en Linux en un sistema operativo diferente,

328
00:18:10.229 --> 00:18:13.130
ero en realidad incluye muchas otras cosas cuando lo instalas.

329
00:18:13.140 --> 00:18:16.680
ntonces, ¿qué está instalando exactamente con el escritorio Docker?

330
00:18:17.380 --> 00:18:19.689
 ves exactamente lo que está incluido allí.

331
00:18:19.880 --> 00:18:23.239
ásicamente, obtenga el servicio Docker en sí. Se llama Docker

332
00:18:23.349 --> 00:18:23.790
otor.

333
00:18:24.069 --> 00:18:29.680
sa es la parte principal del docker que hace posible esta virtualización.

334
00:18:29.689 --> 00:18:32.630
ero cuando tenemos un servicio, necesitamos comunicarnos con él, ¿verdad?

335
00:18:32.640 --> 00:18:33.800
ntonces necesitamos un cliente

336
00:18:33.939 --> 00:18:35.890
ue pueda hablar con ese servicio.

337
00:18:35.900 --> 00:18:40.969
ntonces, Docker Desktop en realidad viene con un cliente de interfaz de línea de comandos,

338
00:18:41.250 --> 00:18:44.959
o que significa que podemos ejecutar comandos más oscuros en una línea de comandos

339
00:18:45.140 --> 00:18:51.239
ara iniciar contenedores para crear contenedores, iniciar, detenerlos, eliminarlos, etcétera,

340
00:18:51.349 --> 00:18:57.760
 haz todo tipo de cosas. Y también viene con un cliente de interfaz gráfica de usuario

341
00:18:57.900 --> 00:19:00.640
ntonces, si no se siente cómodo trabajando con la línea de comandos,

342
00:19:00.650 --> 00:19:06.160
ealmente puede usar la interfaz gráfica de usuario donde puede hacer todas estas cosas.

343
00:19:06.189 --> 00:19:08.770
ero en una interfaz de usuario agradable y fácil de usar,

344
00:19:09.130 --> 00:19:11.619
sí que obtienes todas estas cosas cuando instalas Docker Desktop,

345
00:19:11.630 --> 00:19:14.260
ásicamente todo lo que necesita para empezar con Docker

346
00:19:14.630 --> 00:19:17.920
, por supuesto, según el sistema operativo en el que se encuentre,

347
00:19:17.930 --> 00:19:20.489
as a elegir ese Mac Windows o Linux.

348
00:19:20.500 --> 00:19:26.439
sí que hagamos clic en uno de esos y, básicamente, siga las instrucciones.

349
00:19:26.449 --> 00:19:28.800
iene algunos requisitos de sistema. Tienes que comprobar

350
00:19:28.969 --> 00:19:32.119
osas como la versión de tu Mac OS,

351
00:19:32.880 --> 00:19:34.869
uántos recursos vas a necesitar.

352
00:19:35.050 --> 00:19:39.949
 también tienes las opciones para Mac con Intel o Mac

353
00:19:39.959 --> 00:19:44.339
on Apple Silicon para que puedas alternar entre ellas y, básicamente,

354
00:19:44.349 --> 00:19:49.449
implemente elija la guía que coincida con las especificaciones de su computadora.

355
00:19:49.500 --> 00:19:52.239
 una vez que lo tenga, compruebe los requisitos del sistema,

356
00:19:52.439 --> 00:19:55.334
igue adelante y haz clic en uno de esos.

357
00:19:55.474 --> 00:19:57.324
n mi caso, tengo un Mac con Intel

358
00:19:57.525 --> 00:19:59.555
hip, así que haría clic en este,

359
00:19:59.564 --> 00:20:02.655
 ese es en realidad el instalador de escritorio de Docker.

360
00:20:02.714 --> 00:20:05.994
ntonces, si hago clic, se descargará este DMG

361
00:20:06.094 --> 00:20:09.635
magen. Y una vez que se descarga, básicamente solo tienes que seguir

362
00:20:09.785 --> 00:20:11.305
os pasos que se describen aquí,

363
00:20:11.564 --> 00:20:14.204
verdad? Haces doble clic en él y abres la aplicación

364
00:20:14.564 --> 00:20:15.224
 así sucesivamente.

365
00:20:16.260 --> 00:20:20.099
 lo mismo para Windows. Si es Windows, básicamente haces clic en este

366
00:20:20.250 --> 00:20:22.869
 descargue el escritorio Docker para Windows

367
00:20:22.979 --> 00:20:25.880
 asegúrese de comprobar los requisitos del sistema

368
00:20:26.040 --> 00:20:28.000
 en cierto modo prepara todo

369
00:20:28.300 --> 00:20:30.170
ue necesita para iniciar Docker.

370
00:20:30.459 --> 00:20:35.750
n general, para las últimas versiones de Windows, Mac o cualquier sistema operativo.

371
00:20:35.859 --> 00:20:39.800
ebería ser bastante fácil y sencillo instalar Docker.

372
00:20:40.079 --> 00:20:41.810
sí que adelante, hazlo.

373
00:20:42.030 --> 00:20:43.900
na vez que haya terminado con la instalación,

374
00:20:44.260 --> 00:20:48.180
implemente puede iniciar el servicio buscando en Docker.

375
00:20:48.439 --> 00:20:49.579
 si hago clic en él,

376
00:20:49.849 --> 00:20:51.420
o verás aquí

377
00:20:51.660 --> 00:20:53.030
ue en realidad es

378
00:20:53.500 --> 00:20:56.640
uesta en marcha. Servicio Docker para el motor Docker.

379
00:20:58.359 --> 00:20:59.540
 ahí lo tienes,

380
00:21:00.020 --> 00:21:00.810
stá funcionando,

381
00:21:01.130 --> 00:21:05.000
 esta vista en la que están viendo en esta ventana es

382
00:21:05.010 --> 00:21:08.439
n realidad, la interfaz gráfica de usuario de Docker que mencioné.

383
00:21:08.599 --> 00:21:13.079
se es el cliente que puede usar para interactuar con el motor Docker.

384
00:21:13.199 --> 00:21:17.500
sí que tiene una lista de contenedores en ejecución actualmente, por lo que no hay ninguna lista,

385
00:21:17.770 --> 00:21:21.689
o mismo con las imágenes. Si cambio a imágenes, he limpiado

386
00:21:21.699 --> 00:21:25.270
sí que empiezo con scratch con un estado vacío igual que tú.

387
00:21:25.660 --> 00:21:28.790
sí que estamos listos para empezar a usar el más oscuro.

388
00:21:28.890 --> 00:21:32.229
ero primero te preguntarás qué son las imágenes,

389
00:21:32.239 --> 00:21:34.189
 eso es lo que voy a explicar a continuación,

390
00:21:34.199 --> 00:21:36.589
orque es un concepto muy importante en la oscuridad

391
00:21:40.400 --> 00:21:45.640
hora significa que Docker permite empaquetar la aplicación con su entorno

392
00:21:45.650 --> 00:21:50.569
onfiguración en este paquete que puede compartir y distribuir fácilmente.

393
00:21:50.910 --> 00:21:53.050
sí que, al igual que un archivo de artefacto de aplicación,

394
00:21:53.060 --> 00:21:56.790
omo cuando creamos un archivo zip o tar o un archivo jar,

395
00:21:56.800 --> 00:22:00.800
ue puede cargar en un almacenamiento de artefactos y, a continuación

396
00:22:00.810 --> 00:22:03.670
escárguelo en el servidor o localmente cuando lo necesite.

397
00:22:03.859 --> 00:22:09.880
 ese paquete o artefacto que producimos con Docker se llama imagen de Docker.

398
00:22:09.890 --> 00:22:12.500
sí que es básicamente un artefacto de aplicación

399
00:22:12.790 --> 00:22:15.439
ero diferente del archivo Jar

400
00:22:15.569 --> 00:22:17.619
 de otros artefactos de aplicación.

401
00:22:17.839 --> 00:22:21.390
o solo tiene el código de la aplicación compilado en su interior,

402
00:22:21.469 --> 00:22:24.119
ero además tiene información sobre

403
00:22:24.219 --> 00:22:26.079
a configuración del entorno.

404
00:22:26.270 --> 00:22:29.719
iene la capa de aplicación del sistema operativo, como mencioné,

405
00:22:29.729 --> 00:22:34.900
ás herramientas como el nodo N, PM o el tiempo de ejecución de Java

406
00:22:35.045 --> 00:22:35.625
nstalado en eso,

407
00:22:35.635 --> 00:22:39.135
egún el lenguaje de programación en el que se haya escrito la aplicación.

408
00:22:39.344 --> 00:22:42.364
or ejemplo, si tiene una aplicación de JavaScript,

409
00:22:42.545 --> 00:22:46.935
ecesitaría los nodos Js y N PM para ejecutar su aplicación correctamente,

410
00:22:47.285 --> 00:22:52.625
ntonces, en la imagen más oscura, ya tendrías el nodo y el N PM instalados.

411
00:22:52.824 --> 00:22:57.234
ambién puede agregar las variables de entorno que necesite su aplicación. 

412
00:22:57.439 --> 00:22:58.939
uede crear directorios.

413
00:22:58.949 --> 00:23:02.300
uede crear archivos o cualquier otro entorno

414
00:23:02.310 --> 00:23:05.699
onfigure lo que necesite en torno a su aplicación.

415
00:23:05.849 --> 00:23:10.250
ntonces, toda esa información está empaquetada en la imagen de Docker,

416
00:23:10.260 --> 00:23:12.229
unto con el código de la aplicación,

417
00:23:12.550 --> 00:23:15.810
 esa es la gran ventaja de Docker de la que hablamos.

418
00:23:15.829 --> 00:23:18.719
 como dije, el paquete se llama imagen.

419
00:23:19.219 --> 00:23:22.410
ntonces, si eso es una imagen, ¿qué es un contenedor?

420
00:23:22.670 --> 00:23:26.300
ueno, necesitamos iniciar ese paquete de aplicaciones en alguna parte, ¿verdad?

421
00:23:26.420 --> 00:23:30.329
ntonces, cuando tomamos ese paquete o imagen y lo descargamos

422
00:23:30.339 --> 00:23:34.140
 un servidor o a su computadora portátil local,

423
00:23:34.150 --> 00:23:36.089
ueremos ejecutarlo en la computadora.

424
00:23:36.150 --> 00:23:38.050
a aplicación tiene que ejecutarse realmente.

425
00:23:38.619 --> 00:23:41.920
 cuando ejecutamos esa imagen en un sistema operativo

426
00:23:42.099 --> 00:23:45.209
 la aplicación interna comienza en la versión preliminar

427
00:23:45.219 --> 00:23:48.729
ntorno configurado que nos proporciona un contenedor.

428
00:23:48.959 --> 00:23:53.250
ntonces, una instancia en ejecución de una imagen es un contenedor.

429
00:23:53.260 --> 00:23:58.349
ntonces, un contenedor es básicamente una instancia en ejecución de una imagen y

430
00:23:58.359 --> 00:24:02.969
 partir de la misma imagen de una imagen, puede ejecutar varios contenedores,

431
00:24:02.979 --> 00:24:06.030
que es un caso de uso legítimo si necesita ejecutar

432
00:24:06.180 --> 00:24:10.489
arias instancias de la misma aplicación para aumentar el rendimiento,

433
00:24:10.500 --> 00:24:13.415
or ejemplo, y eso es exactamente lo que estábamos viendo aquí.

434
00:24:13.425 --> 00:24:18.135
sí que tenemos las imágenes. Estos son los paquetes de aplicaciones, básicamente

435
00:24:18.275 --> 00:24:20.234
 luego a partir de esas imágenes podemos comenzar

436
00:24:20.244 --> 00:24:23.694
ontenedores que veremos en la lista aquí,

437
00:24:23.704 --> 00:24:26.974
ue son instancias en ejecución de esas imágenes.

438
00:24:27.244 --> 00:24:28.645
 también dije que

439
00:24:28.834 --> 00:24:31.535
demás de la interfaz gráfica de usuario,

440
00:24:31.545 --> 00:24:35.864
btenemos una interfaz de línea de comandos client do client que puede hablar con do

441
00:24:36.204 --> 00:24:36.444
otor.

442
00:24:36.939 --> 00:24:37.650


443
00:24:37.819 --> 00:24:40.130
esde que instalamos el escritorio Docker,

444
00:24:40.140 --> 00:24:43.670
eberíamos tener esa CLI de Docker también disponible localmente,

445
00:24:43.680 --> 00:24:47.910
o que significa que si abre su terminal, debería poder ejecutar comandos de Docker

446
00:24:48.189 --> 00:24:50.619
 documentos. Podemos hacer cualquier cosa

447
00:24:50.630 --> 00:24:54.594
or ejemplo, podemos comprobar qué imágenes tenemos disponibles localmente.

448
00:24:54.604 --> 00:25:00.035
ntonces, si hago imágenes de Docker, me dará una lista de las imágenes que tengo localmente,

449
00:25:00.064 --> 00:25:04.484
, en este caso, no tengo ninguno que hayamos visto en la interfaz gráfica de usuario.

450
00:25:04.494 --> 00:25:08.405
 también puedo verificar los contenedores usando un docker de comandos,

451
00:25:09.280 --> 00:25:10.390
S

452
00:25:11.640 --> 00:25:12.250
 nuevamente,

453
00:25:12.479 --> 00:25:14.969
odavía no tengo ningún contenedor en ejecución.

454
00:25:15.260 --> 00:25:18.020
hora, antes de continuar, quiero saludar a Net

455
00:25:18.150 --> 00:25:19.000
Hopper. Los más

456
00:25:19.349 --> 00:25:21.109
lataforma en la nube, llamada

457
00:25:21.489 --> 00:25:21.589
n los gobernadores

458
00:25:21.689 --> 00:25:27.890
peraciones de aplicaciones, ofrece una forma sencilla para que los equipos de DevOps entreguen, administren,

459
00:25:27.900 --> 00:25:32.699
ctualice, conecte, proteja y supervise las aplicaciones en uno o más kits

460
00:25:33.030 --> 00:25:33.750
lústeres.

461
00:25:34.160 --> 00:25:38.349
on esta plataforma, básicamente crean esta capa de red virtual

462
00:25:38.459 --> 00:25:40.739
ue conecta varios entornos.

463
00:25:40.839 --> 00:25:44.510
or ejemplo, si tiene varias plataformas en la nube y varias

464
00:25:44.880 --> 00:25:48.170
lústeres, incluso su propio centro de datos local,

465
00:25:48.180 --> 00:25:50.050
onde se implementa su aplicación,

466
00:25:50.239 --> 00:25:55.795
uede conectar todo esto en una red virtual para poder implementarlo y operarlo

467
00:25:55.805 --> 00:25:58.775
as cargas de trabajo de su comunidad como si estuviera en

468
00:25:58.785 --> 00:26:02.584
n clúster o un entorno de infraestructura y ya está

469
00:26:02.704 --> 00:26:06.594
l enfoque centrado en arriba que utilizan ofrece la visibilidad necesaria para saber quién

470
00:26:06.604 --> 00:26:10.375
izo qué y cuándo tanto para su infraestructura como para su aplicación.

471
00:26:10.599 --> 00:26:14.209
ntonces, con Net Hopper, las empresas pueden automatizar sus operaciones.

472
00:26:14.219 --> 00:26:17.010
 en lugar de construir una plataforma propia,

473
00:26:17.020 --> 00:26:20.550
os equipos de DevOps pueden centrarse en lo que más importa,

474
00:26:20.560 --> 00:26:24.109
ue está lanzando más funciones de la aplicación más rápido.

475
00:26:24.349 --> 00:26:29.300
sí que échales un vistazo. De hecho, puedes registrarte para obtener una cuenta gratuita y probarla

476
00:26:29.500 --> 00:26:32.569
ara ver si Net Hopper es la solución adecuada para usted.

477
00:26:36.239 --> 00:26:39.729
hora está claro que obtenemos contenedores al ejecutar imágenes,

478
00:26:40.069 --> 00:26:43.709
ero, ¿cómo obtenemos imágenes desde las que ejecutar contenedores?

479
00:26:44.189 --> 00:26:45.489
igamos que queremos correr

480
00:26:46.160 --> 00:26:47.739
n contenedor de base de datos o

481
00:26:47.989 --> 00:26:52.449
 algún contenedor de servicio colector de cerraduras. ¿Cómo obtenemos sus imágenes

482
00:26:52.689 --> 00:26:55.829
ueno, ahí es donde entran en juego los registros de Docker.

483
00:26:56.150 --> 00:27:02.949
or lo tanto, hay imágenes de Docker listas para usar disponibles en línea en un almacenamiento o registro de imágenes.

484
00:27:03.000 --> 00:27:09.050
ásicamente, este es un almacenamiento específico para artefactos de imágenes más oscuras,

485
00:27:09.430 --> 00:27:12.209
, por lo general, las empresas que desarrollan esos servicios

486
00:27:12.459 --> 00:27:13.209
omo listo

487
00:27:13.829 --> 00:27:16.349
etcétera, así como Docker.

488
00:27:16.359 --> 00:27:21.939
a propia comunidad creará lo que se denomina imágenes oficiales. 

489
00:27:22.319 --> 00:27:24.420
a imagen fue creada realmente por

490
00:27:24.959 --> 00:27:27.060
l mismo o la comunidad de Docker.

491
00:27:27.130 --> 00:27:31.689
sí que ya sabes, es una imagen oficial verificada del propio Docker.

492
00:27:31.699 --> 00:27:36.160
 el propio Docker ofrece el registro de Docker más grande

493
00:27:36.270 --> 00:27:37.930
lamado Docker Hub,

494
00:27:37.939 --> 00:27:42.119
onde puedes encontrar cualquiera de estas imágenes oficiales y muchas otras

495
00:27:42.130 --> 00:27:44.849
mágenes de diferentes empresas o individuos

496
00:27:44.859 --> 00:27:48.410
os desarrolladores han creado y subido allí.

497
00:27:48.959 --> 00:27:51.089
ntonces, si buscamos Dark Hub

498
00:27:51.489 --> 00:27:55.930
quí mismo, verá la biblioteca de imágenes de doctor Hub Container.

499
00:27:57.449 --> 00:27:58.089


500
00:27:58.319 --> 00:27:59.530
sí es como se ve.

501
00:27:59.540 --> 00:28:02.189
 en realidad no tiene que registrarse o firmar

502
00:28:02.199 --> 00:28:05.239
ube a Dock Hub para encontrar las imágenes oficiales.

503
00:28:05.250 --> 00:28:10.250
sí que cualquiera puede ir a este sitio web y, básicamente, explorar las imágenes del contenedor.

504
00:28:10.290 --> 00:28:12.380
 aquí en la barra de búsqueda,

505
00:28:12.500 --> 00:28:16.339
uede escribir cualquier servicio que esté buscando. Por ejemplo, ¿listo

506
00:28:16.569 --> 00:28:17.560
ue mencioné.

507
00:28:17.689 --> 00:28:19.479
 si presiono enter,

508
00:28:19.640 --> 00:28:21.180
ásicamente verás un

509
00:28:21.530 --> 00:28:27.430
ista de varias imágenes relacionadas listas, así como el propio servicio de preparación

510
00:28:27.829 --> 00:28:29.520
omo una imagen más oscura.

511
00:28:29.530 --> 00:28:34.359
 aquí tienes este lote o etiqueta que dice imagen oficial más oscura, por ejemplo,

512
00:28:34.369 --> 00:28:36.959
ara la imagen más roja que vamos a elegir aquí,

513
00:28:36.969 --> 00:28:40.319
uede ver que en realidad lo mantiene la comunidad de Docker.

514
00:28:40.329 --> 00:28:44.780
a forma en que funciona es que Docker tiene un equipo dedicado que es responsable

515
00:28:44.885 --> 00:28:50.344
ara revisar y publicar todo el contenido en las imágenes oficiales más oscuras.

516
00:28:50.354 --> 00:28:54.704
 este equipo trabaja en colaboración con los creadores de la tecnología,

517
00:28:54.714 --> 00:28:57.954
 mantenedores, así como expertos en seguridad

518
00:28:58.064 --> 00:29:01.864
ara crear y gestionar esas imágenes oficiales más oscuras.

519
00:29:02.329 --> 00:29:05.890
e esta manera, se garantiza que no solo

520
00:29:05.900 --> 00:29:09.959
os creadores de tecnología participan en la creación oficial de la imagen,

521
00:29:10.000 --> 00:29:14.099
ero también toda la seguridad, las mejores prácticas y la producción más oscuras.

522
00:29:14.109 --> 00:29:17.959
as mejores prácticas también se consideran en la creación de imágenes,

523
00:29:18.189 --> 00:29:22.890
 esa es básicamente la página de descripción con todos los

524
00:29:22.900 --> 00:29:25.849
nformación sobre cómo usar esta imagen más oscura,

525
00:29:25.859 --> 00:29:27.500
ué incluye, etcétera

526
00:29:28.199 --> 00:29:32.989
 nuevamente, como dije, Docker Hub es el registro de imágenes de Docker más grande,

527
00:29:33.000 --> 00:29:36.319
ara que puedas encontrar imágenes para cualquier servicio que desees

528
00:29:36.459 --> 00:29:38.689
uiero usarlo en Docker Hub.

529
00:29:38.910 --> 00:29:39.859
hora, por supuesto,

530
00:29:39.869 --> 00:29:45.560
a tecnología cambia y hay actualizaciones en las aplicaciones de esas tecnologías.

531
00:29:45.589 --> 00:29:47.910
sí que tienes una nueva versión del rojo

532
00:29:48.040 --> 00:29:49.270
 mango a B,

533
00:29:49.660 --> 00:29:51.380
 en ese caso un nuevo

534
00:29:51.650 --> 00:29:53.390
e creará la imagen del realizador,

535
00:29:53.760 --> 00:29:56.869
or lo que las imágenes también son versiones,

536
00:29:57.199 --> 00:29:59.640
 se denominan etiquetas de imagen.

537
00:29:59.660 --> 00:30:03.709
 en la página de cada imagen, en realidad

538
00:30:03.719 --> 00:30:08.069
ienen la lista de versiones o etiquetas de esa imagen

539
00:30:08.250 --> 00:30:09.829
e enumeran aquí.

540
00:30:09.939 --> 00:30:11.000
ntonces esto es para

541
00:30:11.849 --> 00:30:14.079
 si busco um Post,

542
00:30:14.430 --> 00:30:15.339
or ejemplo,

543
00:30:19.199 --> 00:30:21.890
erás diferentes etiquetas de imagen para

544
00:30:22.319 --> 00:30:24.089
a imagen res también se muestra aquí.

545
00:30:24.630 --> 00:30:29.430
ntonces, cuando utiliza una tecnología y necesita una versión específica, puede elegir

546
00:30:29.650 --> 00:30:33.189
na imagen más oscura que tiene esa versión de la tecnología.

547
00:30:33.290 --> 00:30:37.660
 hay una etiqueta especial que tienen todas las imágenes

548
00:30:37.790 --> 00:30:41.890
lamado último. Así que aquí puedes ver esta última etiqueta

549
00:30:42.280 --> 00:30:44.469
 aquí también en el texto reciente.

550
00:30:44.819 --> 00:30:50.750
sí que la última etiqueta es básicamente la última, la última imagen que se creó.

551
00:30:50.760 --> 00:30:54.589
or lo tanto, si no especifica o elige una versión de forma explícita,

552
00:30:54.729 --> 00:30:58.089
ásicamente obtienes la imagen más reciente del centro de Docker.

553
00:30:58.099 --> 00:31:00.719
hora hemos visto qué son las imágenes

554
00:31:00.930 --> 00:31:03.030
 dónde puede conseguirlos.

555
00:31:03.050 --> 00:31:04.229
sí que ahora la pregunta es,

556
00:31:04.239 --> 00:31:09.113
cómo obtenemos realmente la imagen de Docker Hub y la descargamos?

557
00:31:09.123 --> 00:31:13.083
ocalmente en nuestra computadora para que podamos iniciar un contenedor a partir de esa imagen.

558
00:31:13.192 --> 00:31:19.912
rimero localizamos la imagen que queremos ejecutar como contenedor local para nuestra demostración.

559
00:31:19.922 --> 00:31:21.213
oy a usar un motor

560
00:31:21.453 --> 00:31:24.253
magen. Así que adelante y busca Engine,

561
00:31:24.883 --> 00:31:28.625
ue es básicamente un servidor web simple y tiene una interfaz de usuario

562
00:31:28.916 --> 00:31:32.635
ntonces podremos acceder a nuestro contenedor desde

563
00:31:32.645 --> 00:31:36.005
l navegador para validar El contenedor se inició correctamente.

564
00:31:36.176 --> 00:31:37.286
or eso elijo el motor,

565
00:31:38.145 --> 00:31:41.145
 aquí tienes un montón de etiquetas de imagen

566
00:31:41.735 --> 00:31:42.845
ntre las que puede elegir.

567
00:31:43.095 --> 00:31:48.676
ntonces, el segundo paso después de localizar la imagen es elegir una tecnología de imagen específica

568
00:31:49.270 --> 00:31:51.150
 tenga en cuenta que seleccionar

569
00:31:51.420 --> 00:31:56.300
na versión específica de la imagen es la mejor práctica en la mayoría de los casos.

570
00:31:56.359 --> 00:32:00.699
 digamos que elegimos la versión 1.23.

571
00:32:00.709 --> 00:32:05.040
sí que vamos a elegir esta etiqueta aquí mismo para descargar una imagen.

572
00:32:05.050 --> 00:32:09.140
olvemos a nuestra terminal y ejecutamos Docker

573
00:32:09.510 --> 00:32:13.819
xtraiga el comando y especificamos el nombre de la imagen,

574
00:32:13.939 --> 00:32:14.920
ue es

575
00:32:15.040 --> 00:32:15.900
otor X.

576
00:32:16.619 --> 00:32:18.900
sí que también tienes todo ese comando aquí,

577
00:32:18.930 --> 00:32:22.229
sí que ese es básicamente el nombre de la imagen que ha escrito aquí.

578
00:32:22.449 --> 00:32:23.910
sí que eso es NGX.

579
00:32:24.310 --> 00:32:25.030
 luego

580
00:32:25.170 --> 00:32:30.000
specificamos la etiqueta de la imagen separándola con dos puntos

581
00:32:30.219 --> 00:32:31.439
, a continuación, la versión

582
00:32:31.630 --> 00:32:34.089
1,23. Eso es lo que elegimos

583
00:32:34.530 --> 00:32:38.520
se es todo el comando. Entonces, Docker Client se pondrá en contacto con do

584
00:32:38.699 --> 00:32:41.829
ub y dirán: Quiero agarrar

585
00:32:41.979 --> 00:32:42.670
l motor

586
00:32:42.810 --> 00:32:47.760
magen con esta etiqueta específica y descárguela localmente. 

587
00:32:49.869 --> 00:32:53.609
 aquí vemos que está extrayendo la imagen de

588
00:32:53.869 --> 00:32:56.500
l centro de Docker del registro de imágenes.

589
00:32:56.750 --> 00:32:59.890
 la razón por la que no tenemos que decirle a Docker que

590
00:33:00.010 --> 00:33:04.819
ncontrar esa imagen en Docker Hub se debe a que Docker Hub es en realidad el predeterminado

591
00:33:04.989 --> 00:33:10.300
bicación donde Docker buscará las imágenes que especifiquemos aquí.

592
00:33:10.579 --> 00:33:13.839
or lo tanto, se configura automáticamente como una ubicación para

593
00:33:13.849 --> 00:33:17.579
escargando las imágenes y se produjo la descarga.

594
00:33:17.949 --> 00:33:22.770
 ahora, si volvemos a ejecutar el comando docker images, como hicimos aquí,

595
00:33:23.050 --> 00:33:26.890
eberíamos ver una imagen ahora localmente, que es el motor

596
00:33:27.430 --> 00:33:29.060
on una etiqueta de imagen

597
00:33:29.180 --> 00:33:30.760
.23

598
00:33:31.030 --> 00:33:34.089
 alguna otra información como el tamaño de la imagen,

599
00:33:34.260 --> 00:33:37.010
ue suele estar en megabytes,

600
00:33:37.119 --> 00:33:38.079
omo mencioné.

601
00:33:38.199 --> 00:33:40.140
sí que ahora tenemos una imagen localmente,

602
00:33:40.489 --> 00:33:45.540
 si extraemos una imagen sin ninguna etiqueta específica,

603
00:33:45.900 --> 00:33:49.959
sí que hacemos esto, básicamente, Docker extrae un nombre de la imagen.

604
00:33:49.969 --> 00:33:54.880
 si ejecuto esto, verá que extrae la última imagen automáticamente.

605
00:33:55.060 --> 00:33:56.459
 ahora, si lo hago

606
00:33:56.660 --> 00:33:57.760
mágenes de nuevo,

607
00:33:58.160 --> 00:34:01.329
amos a ver dos imágenes del motor

608
00:34:02.140 --> 00:34:04.140
on dos textos diferentes,

609
00:34:04.329 --> 00:34:08.438
verdad? Así que estas son en realidad dos imágenes separadas

610
00:34:08.668 --> 00:34:09.120
enial.

611
00:34:09.129 --> 00:34:10.899
hora tenemos imágenes localmente,

612
00:34:10.909 --> 00:34:15.958
ero obviamente solo son útiles cuando los ejecutamos en un entorno de contenedores.

613
00:34:15.969 --> 00:34:18.719
Cómo podemos hacer eso? También es muy

614
00:34:18.899 --> 00:34:22.449
legimos la imagen que ya tenemos disponible localmente

615
00:34:22.560 --> 00:34:25.280
on la etiqueta. Así que digamos que queremos correr

616
00:34:25.429 --> 00:34:27.120
sta imagen como contenedor

617
00:34:27.489 --> 00:34:30.830
 ejecutamos el comando dark run

618
00:34:30.978 --> 00:34:31.280


619
00:34:31.429 --> 00:34:33.399
on el nombre de la imagen

620
00:34:33.639 --> 00:34:35.030
 la etiqueta

621
00:34:35.830 --> 00:34:37.050
úper fácil

622
00:34:37.530 --> 00:34:38.790
 ejecutemos.

623
00:34:39.050 --> 00:34:42.978
 ese comando realmente inicia el contenedor en función de la imagen.

624
00:34:43.040 --> 00:34:46.239
 sabemos que el contenedor se inició porque vemos el

625
00:34:46.250 --> 00:34:50.958
egistros del servicio del motor que se inician dentro del contenedor.

626
00:34:50.989 --> 00:34:54.159
sí que estos son en realidad los registros de contenedores que vemos en la consola.

627
00:34:54.320 --> 00:34:56.260
sí que está lanzando un par de scripts,

628
00:34:57.610 --> 00:35:03.669
 aquí tenemos los procesos de trabajo iniciales y el contenedor se está ejecutando.

629
00:35:04.060 --> 00:35:05.159
sí que ahora

630
00:35:05.379 --> 00:35:07.820
i abro una nueva sesión de terminal

631
00:35:08.199 --> 00:35:09.030
e gusta esto

632
00:35:09.330 --> 00:35:09.939


633
00:35:10.580 --> 00:35:11.330
azlo

634
00:35:11.679 --> 00:35:12.629
S,

635
00:35:13.860 --> 00:35:16.699
e hecho, debería ver un contenedor,

636
00:35:16.850 --> 00:35:17.840
ste de aquí

637
00:35:18.290 --> 00:35:20.469
n la lista de contenedores en ejecución,

638
00:35:20.820 --> 00:35:23.679
 tenemos información sobre el contenedor. 

639
00:35:23.800 --> 00:35:26.709
enemos la imagen en la que se basa el contenedor,

640
00:35:26.719 --> 00:35:29.409
ncluida la tecnología cuando se creó

641
00:35:29.610 --> 00:35:34.689
 también el nombre del contenedor. Así que tenemos el ID y el nombre del contenedor

642
00:35:34.860 --> 00:35:38.729
ste es el nombre que docker realmente usa automáticamente

643
00:35:38.969 --> 00:35:42.409
enera y asigna un contenedor cuando se crea.

644
00:35:42.800 --> 00:35:45.060
sí que es un nombre generado aleatoriamente.

645
00:35:45.669 --> 00:35:50.469
hora, si vuelvo aquí, verá que estos troncos, los troncos de contenedores,

646
00:35:50.479 --> 00:35:52.780
n realidad están bloqueando el terminal.

647
00:35:52.969 --> 00:35:57.879
ntonces, si quiero recuperar la terminal y controlar la salida C,

648
00:35:57.889 --> 00:36:01.179
l contenedor sale y el proceso realmente muere.

649
00:36:01.189 --> 00:36:02.020
sí que ahora, si lo hago

650
00:36:02.239 --> 00:36:05.739
D, verá que no hay ningún contenedor en ejecución.

651
00:36:06.219 --> 00:36:08.129
ero podemos iniciar un contenedor

652
00:36:08.260 --> 00:36:12.209
n segundo plano sin que bloquee el terminal agregando

653
00:36:13.050 --> 00:36:14.760
na bandera llamada menos D,

654
00:36:15.010 --> 00:36:16.610
ue significa separado.

655
00:36:16.729 --> 00:36:19.810
or lo tanto, separa el proceso de Docker de la terminal.

656
00:36:20.389 --> 00:36:21.600
 si ejecuto esto,

657
00:36:21.840 --> 00:36:25.550
es que ya no bloquea el terminal.

658
00:36:25.699 --> 00:36:29.959
 en lugar de mostrar los registros del motor X arrancando dentro del contenedor,

659
00:36:29.969 --> 00:36:31.020
implemente se bloquea

660
00:36:31.179 --> 00:36:34.780
a identificación completa del contenedor. Así que ahora, si lo hago

661
00:36:34.959 --> 00:36:35.689
S

662
00:36:35.949 --> 00:36:39.219
quí en la misma terminal, debería ver ese contenedor

663
00:36:39.439 --> 00:36:40.620
orriendo de nuevo.

664
00:36:41.060 --> 00:36:46.729
 ese es básicamente el ID o la parte de esta cadena de ID completa

665
00:36:46.919 --> 00:36:48.010
e muestra aquí.

666
00:36:48.219 --> 00:36:52.209
ero cuando iniciamos un contenedor en segundo plano en modo independiente,

667
00:36:52.239 --> 00:36:56.550
s posible que aún desee ver los registros de la aplicación dentro del contenedor,

668
00:36:56.580 --> 00:36:59.030
sí que quizás quiera ver cómo arrancó el motor la próxima vez.

669
00:36:59.040 --> 00:37:01.129
Qué aspecto tenía, en realidad, entonces?

670
00:37:01.340 --> 00:37:05.629
ara eso, puede usar otro comando de Docker llamado Docker logs

671
00:37:06.199 --> 00:37:08.489
on el ID del contenedor

672
00:37:08.590 --> 00:37:09.370
e gusta esto,

673
00:37:10.159 --> 00:37:14.159
 imprimirá los registros de la aplicación desde el contenedor.

674
00:37:14.530 --> 00:37:17.229
hora, para crear el contenedor

675
00:37:17.540 --> 00:37:22.340
ontenedor, primero extraemos la imagen y, a continuación, creamos un contenedor a partir de esa imagen.

676
00:37:22.560 --> 00:37:23.199
Pero

677
00:37:23.429 --> 00:37:26.469
odemos ahorrarnos el comando pull

678
00:37:26.739 --> 00:37:28.169
 ejecutar

679
00:37:28.360 --> 00:37:33.600
jecute el comando directamente, incluso si la imagen no está disponible localmente.

680
00:37:34.010 --> 00:37:37.169
hora mismo tenemos estas dos imágenes disponibles localmente,

681
00:37:37.479 --> 00:37:39.159
ero en el comando Docker run,

682
00:37:39.169 --> 00:37:43.290
e hecho, puede proporcionar cualquier imagen que exista en Docker Hub.

683
00:37:43.370 --> 00:37:47.159
o necesariamente tiene que existir localmente en su computadora,

684
00:37:47.169 --> 00:37:49.080
ara que no tengas que hacer eso primero.

685
00:37:49.090 --> 00:37:52.419
ntonces, si vuelvo, podemos elegir una versión de imagen diferente.

686
00:37:52.429 --> 00:37:56.780
lijamos 1.22 dash alpine,

687
00:37:56.969 --> 00:37:57.489
sí que

688
00:37:58.780 --> 00:38:00.139
sta etiqueta de imagen,

689
00:38:00.639 --> 00:38:02.610
ue no tenemos localmente

690
00:38:03.120 --> 00:38:07.370
 Por supuesto, este puede ser un servicio completamente diferente. No importa.

691
00:38:07.489 --> 00:38:10.189
ásicamente cualquier imagen que no tengamos localmente

692
00:38:10.300 --> 00:38:13.729
uede ejecutar directamente mediante el comando docker run.

693
00:38:14.199 --> 00:38:17.159
ntonces, lo que hace es primero. Lo intentará

694
00:38:17.330 --> 00:38:18.879
ocaliza esa imagen

695
00:38:19.050 --> 00:38:19.830
 nivel local,

696
00:38:19.969 --> 00:38:21.439
 si no lo encuentra,

697
00:38:21.610 --> 00:38:24.949
rá al Docker hub de forma predeterminada

698
00:38:25.129 --> 00:38:29.129
 extraiga la imagen desde allí automáticamente, lo cual es muy conveniente.

699
00:38:29.270 --> 00:38:35.590
ásicamente, hace ambas cosas en un solo comando. Así que descargó la imagen con esta

700
00:38:36.149 --> 00:38:38.169
 inició el contenedor.

701
00:38:38.520 --> 00:38:40.989
 ahora, si hacemos Docker PS,

702
00:38:41.129 --> 00:38:44.770
eberíamos tener dos contenedores ejecutándose con diferentes

703
00:38:45.239 --> 00:38:46.169
ersiones.

704
00:38:46.639 --> 00:38:47.889
 recuerda, dije:

705
00:38:47.899 --> 00:38:52.239
ocker resuelve el problema de ejecutar diferentes versiones de la misma aplicación

706
00:38:52.580 --> 00:38:56.159
 la vez. Así de simple es hacerlo con Docker

707
00:38:56.479 --> 00:38:59.659
ara que podamos hacer clic en este contenedor.

708
00:39:00.030 --> 00:39:00.689


709
00:39:00.939 --> 00:39:02.520
hora, nuevamente, tenemos

710
00:39:02.639 --> 00:39:06.419
se contenedor de un motor con esta versión.

711
00:39:09.929 --> 00:39:14.500
hora la pregunta importante es, ¿cómo accedemos a este contenedor?

712
00:39:14.510 --> 00:39:16.449
ueno, no podemos ahora

713
00:39:16.770 --> 00:39:19.459
orque el contenedor se ejecuta en

714
00:39:19.590 --> 00:39:25.659
a red Docker cerrada, por lo que no podemos acceder a ella desde el navegador de nuestra computadora local,

715
00:39:25.669 --> 00:39:26.449
or ejemplo,

716
00:39:26.479 --> 00:39:29.780
rimero necesitamos exponer el contenedor a nuestro

717
00:39:29.790 --> 00:39:33.100
ed local que puede sonar un poco difícil,

718
00:39:33.110 --> 00:39:34.639
ero es muy fácil.

719
00:39:34.860 --> 00:39:38.360
ásicamente, vamos a hacer lo que se llama enlace de puertos.

720
00:39:38.870 --> 00:39:42.060
l contenedor se ejecuta en algún puerto, ¿verdad?

721
00:39:42.270 --> 00:39:46.979
 cada aplicación tiene un puerto estándar en el que se ejecuta,

722
00:39:47.179 --> 00:39:47.770
omo motor

723
00:39:47.969 --> 00:39:48.830
plicación

724
00:39:48.989 --> 00:39:51.169
iempre se ejecuta en el puerto 80 Red

725
00:39:51.370 --> 00:39:52.500
e ejecuta en el puerto

726
00:39:52.669 --> 00:39:55.290
379.

727
00:39:55.439 --> 00:39:58.169
or lo tanto, estos son puertos estándar para estas aplicaciones.

728
00:39:58.179 --> 00:40:02.169
sí que ese es el puerto en el que se ejecuta el contenedor.

729
00:40:02.489 --> 00:40:03.020
 para

730
00:40:03.489 --> 00:40:08.179
emos los puertos en la lista de puertos aquí, la aplicación se ejecuta en el puerto A

731
00:40:08.280 --> 00:40:12.159
entro del contenedor. Así que ahora, si intento acceder

732
00:40:12.379 --> 00:40:12.489
otor

733
00:40:12.850 --> 00:40:13.719
dor 12.850

734
00:40:14.090 --> 00:40:17.409
n este puerto en el puerto 80 desde el navegador

735
00:40:19.100 --> 00:40:20.989
 intentemos hacer eso

736
00:40:21.219 --> 00:40:22.110
Puerto 80

737
00:40:22.719 --> 00:40:23.620
ulsa enter.

738
00:40:23.760 --> 00:40:26.689
es que no hay nada disponible en este puerto

739
00:40:26.830 --> 00:40:29.969
en el host local. Así que ahora podemos decírselo

740
00:40:30.360 --> 00:40:33.989
ye, ¿sabes qué? 

741
00:40:34.520 --> 00:40:36.879
 nuestro anfitrión local en

742
00:40:37.020 --> 00:40:42.689
ualquier puerto que les diga en algún puerto específico como 80 80 o 9000,

743
00:40:42.699 --> 00:40:47.699
n realidad no importa para poder acceder al contenedor o lo que sea que se esté ejecutando

744
00:40:47.709 --> 00:40:52.860
entro del contenedor como si se estuviera ejecutando en mi puerto de host local 9000.

745
00:40:53.030 --> 00:40:57.750
 lo hacemos con una bandera adicional al crear

746
00:40:57.870 --> 00:40:59.290
n recipiente más oscuro.

747
00:40:59.800 --> 00:41:00.379
sí que

748
00:41:00.729 --> 00:41:04.689
o que vamos a hacer es primero detener este contenedor

749
00:41:05.750 --> 00:41:08.379
 cree uno nuevo. Así que vamos

750
00:41:08.929 --> 00:41:09.800
ual

751
00:41:10.489 --> 00:41:13.169
ásicamente detiene este contenedor en ejecución,

752
00:41:13.550 --> 00:41:15.820
 vamos a crear un nuevo contenedor.

753
00:41:16.570 --> 00:41:17.989
sí que vamos a hacer

754
00:41:18.169 --> 00:41:18.669
orrer

755
00:41:19.050 --> 00:41:19.979
otor X

756
00:41:20.949 --> 00:41:21.870
a misma versión

757
00:41:22.179 --> 00:41:25.520
 lo encontraremos en segundo plano en el modo de separación.

758
00:41:25.530 --> 00:41:31.040
hora vamos a vincular los puertos con un movimiento adicional menos P,

759
00:41:31.080 --> 00:41:32.110
 es muy fácil.

760
00:41:32.120 --> 00:41:33.290
e estamos diciendo a Docker

761
00:41:33.689 --> 00:41:34.439
l

762
00:41:34.679 --> 00:41:35.120
otor

763
00:41:35.389 --> 00:41:36.800
uerto de aplicaciones

764
00:41:37.219 --> 00:41:38.760
entro del contenedor, que es un

765
00:41:39.429 --> 00:41:41.699
or favor, toma eso y encuadernalo

766
00:41:41.969 --> 00:41:44.399
n un anfitrión o anfitrión local

767
00:41:44.629 --> 00:41:47.929
n cualquier puerto. 9000, por ejemplo. 

768
00:41:48.149 --> 00:41:49.500
se es el puerto que elijo.

769
00:41:49.830 --> 00:41:52.110
ntonces, esta bandera aquí

770
00:41:52.330 --> 00:41:58.679
ealmente expondrá el contenedor a nuestra red local o host local.

771
00:41:58.790 --> 00:41:59.560
sí que este motor

772
00:41:59.780 --> 00:42:04.669
l proceso que se ejecuta en el contenedor estará accesible para nosotros en el puerto 9000.

773
00:42:04.679 --> 00:42:06.840
ntonces, si ejecuto esto,

774
00:42:06.979 --> 00:42:09.219
eamos que el contenedor se está ejecutando,

775
00:42:09.719 --> 00:42:10.370


776
00:42:10.550 --> 00:42:15.590
n la sección de puertos vemos un valor diferente. Entonces, en lugar

777
00:42:15.919 --> 00:42:18.330
enemos esta información de enlace de puerto.

778
00:42:18.510 --> 00:42:23.510
ntonces, si olvidó qué puerto eligió. O si tiene 10 contenedores diferentes con

779
00:42:23.659 --> 00:42:24.090
S,

780
00:42:24.100 --> 00:42:29.270
ealmente puede ver en qué puerto se puede acceder a cada contenedor en su host local.

781
00:42:29.350 --> 00:42:31.429
sí que este será el puerto.

782
00:42:31.959 --> 00:42:34.629
hora, si vuelvo al navegador

783
00:42:35.000 --> 00:42:40.489
 en lugar del host local 80 vamos a escribir local host 9000

784
00:42:41.320 --> 00:42:42.310
 golpe. Entrar

785
00:42:42.830 --> 00:42:45.870
hí lo tienes. ¡Le damos la bienvenida a Engine

786
00:42:46.000 --> 00:42:50.129
ágina, significa que realmente estamos accediendo a nuestra aplicación.

787
00:42:50.389 --> 00:42:53.820
 también podemos ver eso en los registros. Habla mucho

788
00:42:54.070 --> 00:42:55.330
D de contenedor.

789
00:42:55.919 --> 00:42:59.139
 ahí lo tienes. Este es el registro. Uh, ese motor

790
00:42:59.459 --> 00:43:04.590
a aplicación produjo que recibió una solicitud de Mac o mía

791
00:43:04.770 --> 00:43:05.659
áquina con sistema operativo

792
00:43:05.929 --> 00:43:07.300
avegador Chrome.

793
00:43:07.739 --> 00:43:11.060
ntonces vemos que nuestra solicitud realmente llegó al

794
00:43:11.330 --> 00:43:11.540
otor

795
00:43:11.750 --> 00:43:14.229
plicación que se ejecuta dentro del contenedor.

796
00:43:14.350 --> 00:43:21.149
sí de fácil es ejecutar un servicio dentro de un contenedor y luego acceder a él localmente.

797
00:43:21.510 --> 00:43:24.159
hora, como dije, puedes elegir el puerto que quieras,

798
00:43:24.310 --> 00:43:28.449
ero también es prácticamente un estándar usar lo mismo

799
00:43:28.459 --> 00:43:33.439
uerto en su máquina host tal como lo está utilizando el contenedor.

800
00:43:33.489 --> 00:43:37.320
ntonces, si estuviera ejecutando un contenedor de MySQL que comenzara en

801
00:43:37.399 --> 00:43:44.310
uerto 3306 Lo vincularía al host local 3306.

802
00:43:44.659 --> 00:43:46.479
sí que eso es una especie de estándar.

803
00:43:50.399 --> 00:43:55.300
hora hay una cosa que quiero señalar aquí, y es que Docker ejecuta

804
00:43:55.770 --> 00:43:59.610
n realidad crea un nuevo contenedor cada vez.

805
00:43:59.620 --> 00:44:03.070
o reutiliza el contenedor que creamos anteriormente.

806
00:44:03.399 --> 00:44:08.080
o que significa que, dado que ya ejecutamos el comando Docker run un par de veces,

807
00:44:08.110 --> 00:44:11.239
n realidad deberíamos tener varios contenedores en nuestro

808
00:44:11.409 --> 00:44:17.530
ortátil. Sin embargo, si hago Docker P SI solo

809
00:44:17.540 --> 00:44:20.600
o veo los que creé pero detuve.

810
00:44:20.610 --> 00:44:22.870
ero esos contenedores todavía existen.

811
00:44:23.040 --> 00:44:25.030
ntonces, si hago docker PS

812
00:44:26.260 --> 00:44:27.959
on una mancha

813
00:44:28.189 --> 00:44:28.750


814
00:44:29.620 --> 00:44:30.669
 ejecutar

815
00:44:30.810 --> 00:44:33.159
sto le da realmente una lista de todos

816
00:44:33.169 --> 00:44:37.159
ontenedores, ya sea que estén en ejecución o detenidos.

817
00:44:37.469 --> 00:44:39.189
sí que este es el contenedor activo

818
00:44:39.659 --> 00:44:40.770
ue todavía se está ejecutando

819
00:44:40.889 --> 00:44:42.979
 estos son los parados.

820
00:44:42.989 --> 00:44:47.000
ncluso dice que salió hace 10 minutos, hace seis minutos. 

821
00:44:47.149 --> 00:44:50.780
sí que tenemos cuatro contenedores con diferentes configuraciones

822
00:44:51.340 --> 00:44:53.639
 anteriormente te mostré Docker stop

823
00:44:53.649 --> 00:44:57.679
omando que básicamente detiene un contenedor en ejecución activa

824
00:44:57.989 --> 00:44:59.399
ara que podamos detener este.

825
00:45:00.110 --> 00:45:02.399
 ahora lo mostrará como

826
00:45:02.540 --> 00:45:05.620
n contenedor detenido también salió hace un segundo,

827
00:45:05.860 --> 00:45:06.639
ero de la misma manera.

828
00:45:06.649 --> 00:45:10.560
ambién puede reiniciar un contenedor que creó anteriormente

829
00:45:10.570 --> 00:45:12.989
in tener que crear uno nuevo con docker Run,

830
00:45:13.000 --> 00:45:13.370
ompromiso.

831
00:45:13.639 --> 00:45:16.040
ntonces, para eso tenemos un comienzo más oscuro

832
00:45:16.659 --> 00:45:17.340


833
00:45:17.510 --> 00:45:20.510
ue toma la ID del contenedor

834
00:45:21.360 --> 00:45:25.010
 inicie el contenedor una y otra vez. Puede iniciar varios

835
00:45:25.439 --> 00:45:27.530
ontenedores a la vez si lo desea,

836
00:45:28.959 --> 00:45:29.770
e gusta esto.

837
00:45:31.159 --> 00:45:31.679
Y

838
00:45:31.919 --> 00:45:33.610
hora tiene dos contenedores en ejecución.

839
00:45:33.620 --> 00:45:37.820
hora ha visto que utilizamos el ID del contenedor en varios comandos de almacén.

840
00:45:37.830 --> 00:45:42.459
ntonces, para detener el contenedor, reiniciarlo, comprobar los registros, etcétera.

841
00:45:42.889 --> 00:45:46.449
ero la identificación es difícil de recordar y tendrás que buscarla todo el tiempo.

842
00:45:46.639 --> 00:45:46.889
sí que

843
00:45:47.000 --> 00:45:47.969
omo alternativa,

844
00:45:47.979 --> 00:45:51.179
ambién puede usar el nombre del contenedor para todos estos comandos

845
00:45:51.189 --> 00:45:54.689
n lugar del ID que Docker genera automáticamente.

846
00:45:54.830 --> 00:45:59.340
ero en realidad podemos reescribir eso y podemos dar nuestros contenedores

847
00:45:59.510 --> 00:46:02.729
ombres más significativos cuando los creamos

848
00:46:04.409 --> 00:46:06.399
ara que podamos detener esos dos contenedores

849
00:46:06.850 --> 00:46:08.020
tilizando el ID

850
00:46:08.689 --> 00:46:09.659
 el nombre

851
00:46:10.540 --> 00:46:11.280
e gusta esto.

852
00:46:11.459 --> 00:46:13.899
sí que estos son dos contenedores diferentes, uno con ID,

853
00:46:13.909 --> 00:46:15.949
no con nombre y los detendremos a los dos.

854
00:46:17.629 --> 00:46:18.370
hí lo tienes.

855
00:46:18.570 --> 00:46:23.270
hora, cuando creamos un nuevo contenedor, podemos darle un nombre específico

856
00:46:23.510 --> 00:46:25.459
 hay otra bandera para eso

857
00:46:25.889 --> 00:46:28.659
ue es el nombre de Dash Dash. Y luego proporcionamos

858
00:46:28.919 --> 00:46:32.919
l nombre que queremos darle a nuestro contenedor. Y digamos que esto es, um

859
00:46:33.270 --> 00:46:36.479
plicación web. Así es como llamaremos

860
00:46:37.570 --> 00:46:38.780
 ejecutemos.

861
00:46:39.379 --> 00:46:39.889
i lo hago

862
00:46:40.030 --> 00:46:40.719
PS

863
00:46:41.100 --> 00:46:45.540
es que el nombre no es algo aleatorio generado automáticamente,

864
00:46:45.570 --> 00:46:47.350
ero, en cambio, nuestro contenedor se llama Web.

865
00:46:47.959 --> 00:46:48.969
sí que ahora podemos hacer lo mismo

866
00:46:49.209 --> 00:46:50.790
erraduras y

867
00:46:51.040 --> 00:46:52.840
ombre de nuestro contenedor

868
00:46:53.419 --> 00:46:54.159
e gusta esto.

869
00:46:57.540 --> 00:46:58.909
hora hemos aprendido sobre Do

870
00:46:59.149 --> 00:47:00.840
ub, que en realidad es

871
00:47:01.020 --> 00:47:03.760
o que se llama registro público de imágenes,

872
00:47:04.050 --> 00:47:04.949
o que significa

873
00:47:05.070 --> 00:47:09.770
sas imágenes que utilizamos están visibles y disponibles para el público.

874
00:47:10.149 --> 00:47:15.250
ero cuando una empresa crea sus propias imágenes de sus propias aplicaciones,

875
00:47:15.360 --> 00:47:17.969
or supuesto que no quieren que esté disponible públicamente.

876
00:47:18.229 --> 00:47:22.649
ntonces, para eso existen lo que se llama registros de Docker privados,

877
00:47:22.659 --> 00:47:23.770
 hay muchos de ellos.

878
00:47:23.780 --> 00:47:28.689
asi todos los proveedores de servicios en la nube tienen un servicio de registro de Docker privado,

879
00:47:28.699 --> 00:47:35.080
or ejemplo, AWS EECR o el servicio de registro de contenedores elásticos, Google Azure.

880
00:47:35.090 --> 00:47:38.050
odos tienen sus propios registros de Docker.

881
00:47:38.080 --> 00:47:43.239
exus, que es un popular servicio de almacenamiento de artefactos, tiene un registro de tareas.

882
00:47:43.250 --> 00:47:46.179
ncluso Docker Hub tiene un registro de muelle privado

883
00:47:46.310 --> 00:47:51.679
ntonces, en la página de inicio de Dock Hub, viste este formulario de inicio.

884
00:47:52.000 --> 00:47:55.100
ntonces, básicamente, si quieres almacenar tus imágenes privadas de Docker en Doer

885
00:47:55.270 --> 00:47:55.729
Hub,

886
00:47:55.739 --> 00:47:59.770
e hecho, puede crear un registro privado en Docker Hub o

887
00:47:59.780 --> 00:48:02.929
ncluso cree un registro público y cargue sus imágenes allí.

888
00:48:02.939 --> 00:48:04.669
or eso tengo una cuenta,

889
00:48:04.679 --> 00:48:07.250
orque he subido un par de imágenes en Do

890
00:48:07.419 --> 00:48:11.860
ub que mis alumnos pueden descargar para diferentes cursos.

891
00:48:11.879 --> 00:48:15.209
 hay un concepto más que quiero mencionar relacionado con el registro,

892
00:48:15.219 --> 00:48:17.739
ue es algo llamado repositorio,

893
00:48:17.949 --> 00:48:19.530
ue también escuchas a menudo. Haz

894
00:48:19.639 --> 00:48:20.370
n repositorio hacer

895
00:48:20.479 --> 00:48:25.199
registro? Entonces, ¿cuál es la diferencia entre ellos? Muy simple, explicó AWS.

896
00:48:25.209 --> 00:48:30.350
CR es un registro. Básicamente, es un servicio que proporciona almacenamiento de imágenes.

897
00:48:30.379 --> 00:48:31.830
 dentro de ese registro,

898
00:48:31.840 --> 00:48:36.620
uede tener varios repositorios para las diferentes imágenes de la aplicación.

899
00:48:36.629 --> 00:48:39.429
sí que cada aplicación tiene su propio repositorio,

900
00:48:39.439 --> 00:48:43.179
 en ese repositorio puede almacenar diferentes versiones de imágenes

901
00:48:43.189 --> 00:48:46.300
 etiquetas de la misma aplicación de la misma manera.

902
00:48:46.310 --> 00:48:46.429
e

903
00:48:46.689 --> 00:48:51.070
ub es un registro. Es un servicio para almacenar

904
00:48:51.250 --> 00:48:51.500
hub,

905
00:48:51.510 --> 00:48:55.699
uede tener sus repositorios públicos para almacenar imágenes que serán

906
00:48:55.709 --> 00:48:57.629
ccesible públicamente o puede tener

907
00:48:57.639 --> 00:49:00.110
epositorios privados para diferentes aplicaciones.

908
00:49:00.129 --> 00:49:04.040
 nuevamente, puede tener un repositorio dedicado para cada aplicación.

909
00:49:04.110 --> 00:49:05.459
sí que esa es una nota al margen.

910
00:49:05.469 --> 00:49:09.770
i escuchas estos términos y conceptos y sabes cuál es la diferencia entre ellos

911
00:49:13.060 --> 00:49:13.389
ahora?

912
00:49:13.399 --> 00:49:15.909
encioné que las empresas querrían crear

913
00:49:15.989 --> 00:49:18.760
us propias imágenes personalizadas para sus aplicaciones.

914
00:49:19.050 --> 00:49:20.760
ntonces, ¿cómo funciona eso realmente?

915
00:49:20.770 --> 00:49:25.070
Cómo puedo crear mi propia imagen de Docker para mi aplicación?

916
00:49:25.149 --> 00:49:27.580
 el caso de uso para eso es, cuando estoy

917
00:49:27.780 --> 00:49:31.250
erminado con el desarrollo, la aplicación está lista.

918
00:49:31.260 --> 00:49:34.850
iene algunas funciones y queremos lanzarlo a los usuarios finales.

919
00:49:34.860 --> 00:49:36.790
or lo tanto, queremos ejecutarlo en una implementación

920
00:49:36.969 --> 00:49:39.719
ervidor y para facilitar el proceso de implementación.

921
00:49:39.729 --> 00:49:44.479
Quieres implementar nuestra aplicación como un contenedor Docker junto con la base de datos?

922
00:49:44.489 --> 00:49:48.399
y otros servicios que también se ejecutarán como contenedores Docker?

923
00:49:48.489 --> 00:49:51.699
ntonces, ¿cómo podemos tomar nuestra aplicación implementada creada?

924
00:49:51.709 --> 00:49:55.669
codificarlo y empaquetarlo en una imagen de Docker?

925
00:49:55.679 --> 00:50:00.659
ara eso, necesitamos crear una definición de cómo construir una imagen

926
00:50:00.760 --> 00:50:02.459
esde nuestra aplicación,

927
00:50:02.780 --> 00:50:07.340
 esa definición está escrita en un archivo llamado archivo docker.

928
00:50:07.350 --> 00:50:11.379
sí es como debería llamarse, crear un archivo Docker simple es muy fácil.

929
00:50:11.600 --> 00:50:17.080
 en esta parte vamos a utilizar una aplicación supersencilla sin JAS que he preparado.

930
00:50:17.090 --> 00:50:19.610
 vamos a escribir un archivo Docker para eso

931
00:50:19.620 --> 00:50:22.370
plicación para crear una imagen más oscura a partir de ella.

932
00:50:22.530 --> 00:50:24.550
 como dije, es muy fácil de hacer.

933
00:50:24.929 --> 00:50:26.469
sí que esta es la aplicación.

934
00:50:26.679 --> 00:50:29.739
s extremadamente simple. Solo tengo uno

935
00:50:29.939 --> 00:50:34.479
rchivo dot Js del servidor, que básicamente solo inicia la aplicación

936
00:50:34.699 --> 00:50:36.659
en el puerto 3000. 

937
00:50:36.959 --> 00:50:38.800
olo dice: Bienvenido

938
00:50:39.100 --> 00:50:40.979
uando accedes a él desde el navegador

939
00:50:41.300 --> 00:50:45.979
 tenemos un paquete adyacente al archivo que contiene esta dependencia

940
00:50:46.010 --> 00:50:49.629
ara la biblioteca express que usamos aquí para iniciar la aplicación

941
00:50:49.820 --> 00:50:52.270
úper delgado y simple.

942
00:50:52.419 --> 00:50:54.610
 esa es la aplicación desde la que vamos a crear un

943
00:50:54.620 --> 00:50:57.939
magen de Docker e iníciela como un contenedor de Docker.

944
00:50:58.419 --> 00:50:59.770
sí que sigamos y hagámoslo.

945
00:51:00.459 --> 00:51:06.090
sí que, en la raíz de la aplicación, vamos a crear un nuevo archivo llamado Docker File.

946
00:51:06.929 --> 00:51:08.870
sí que ese es el nombre. Y ya ves eso,

947
00:51:09.090 --> 00:51:12.110
m, la mayoría de los editores de código realmente detectan

948
00:51:12.290 --> 00:51:15.340
rchivo Docker y obtenemos este icono de Docker aquí.

949
00:51:15.350 --> 00:51:17.389
ntonces, en este archivo Docker,

950
00:51:17.399 --> 00:51:20.229
amos a escribir una definición de cómo

951
00:51:20.239 --> 00:51:22.250
a imagen debe generarse desde esta aplicación.

952
00:51:22.370 --> 00:51:24.040
ntonces, ¿qué necesita nuestra aplicación?

953
00:51:24.050 --> 00:51:27.709
ecesita un nodo instalado porque el nodo debe ejecutar nuestra aplicación.

954
00:51:27.929 --> 00:51:28.389
Verdad?

955
00:51:29.020 --> 00:51:31.840
ntonces, si quisiera iniciar esta aplicación localmente

956
00:51:32.020 --> 00:51:36.689
esde mi terminal, ejecutaría el nodo SRC. Así que la

957
00:51:36.860 --> 00:51:38.379
 el punto de servidor Js

958
00:51:38.649 --> 00:51:40.939
omando para iniciar la aplicación.

959
00:51:41.080 --> 00:51:44.929
ntonces necesitamos ese comando de nodo disponible dentro de la imagen.

960
00:51:45.250 --> 00:51:48.550
 ahí es donde entra en juego el concepto de imagen base.

961
00:51:48.560 --> 00:51:52.030
ntonces, cada imagen de Docker se basa realmente en esta imagen base,

962
00:51:52.320 --> 00:51:58.149
ue es principalmente una imagen ligera del sistema operativo Linux que tiene

963
00:51:58.270 --> 00:52:03.419
l nodo, N, PM o cualquier herramienta que necesite para su aplicación instalada encima.

964
00:52:03.489 --> 00:52:05.719
ntonces, para la aplicación de JavaScript, tendría

965
00:52:05.949 --> 00:52:07.050
magen base del nodo.

966
00:52:07.060 --> 00:52:11.409
i tiene una aplicación Java, utilizaremos una imagen que tenga instalado el tiempo de ejecución de Java

967
00:52:11.899 --> 00:52:15.909
e nuevo sistema operativo Linux con Java instalado encima.

968
00:52:16.550 --> 00:52:19.629
 esa es la imagen base. Y definimos

969
00:52:19.639 --> 00:52:22.479
so de una directiva en el archivo Docker llamado desde.

970
00:52:22.649 --> 00:52:25.889
stamos diciendo que construya esta imagen a partir de la imagen base y si

971
00:52:25.899 --> 00:52:29.000
uelvo a Docker Hub y busco el nodo,

972
00:52:30.110 --> 00:52:35.979
erá que tenemos una imagen que tiene un nodo y N PM instalados en su interior

973
00:52:36.489 --> 00:52:39.159
 las imágenes base son como otras imágenes.

974
00:52:39.189 --> 00:52:43.879
ásicamente, puedes apilar y construir sobre las imágenes en Docker.

975
00:52:44.020 --> 00:52:46.020
sí que son como cualquier otra imagen que hayamos visto.

976
00:52:46.120 --> 00:52:49.310
 también tienen versiones de texto o imagen.

977
00:52:49.340 --> 00:52:54.149
sí que vamos a elegir la imagen del nodo y una versión específica

978
00:52:54.340 --> 00:52:57.459
 optemos por 19 trazos de pino L.

979
00:53:00.429 --> 00:53:04.479
sa es nuestra imagen base y nuestra primera directiva en el archivo docker.

980
00:53:04.489 --> 00:53:06.560
e nuevo, esto solo asegurará que

981
00:53:06.860 --> 00:53:09.850
uando nuestra aplicación node Js se inicia en un contenedor,

982
00:53:09.860 --> 00:53:14.689
endrá un nodo y N comandos PM disponibles en su interior para ejecutar nuestra aplicación.

983
00:53:14.870 --> 00:53:17.229
hora, si iniciamos nuestra aplicación con este comando,

984
00:53:17.689 --> 00:53:19.780
eremos que recibimos un error porque

985
00:53:19.790 --> 00:53:22.580
ecesitamos instalar primero las dependencias de una aplicación.

986
00:53:22.760 --> 00:53:25.459
olo tenemos una dependencia, que es la biblioteca de prensa,

987
00:53:25.510 --> 00:53:29.189
o que significa que tendríamos que ejecutar N PM install,

988
00:53:29.729 --> 00:53:34.239
ue comprobará el archivo json del paquete, leerá todas las dependencias,

989
00:53:34.250 --> 00:53:36.379
efinirlos por dentro e instalarlos

990
00:53:36.489 --> 00:53:39.215
ocalmente en la carpeta de módulos de nodo.

991
00:53:39.225 --> 00:53:43.425
ásicamente, estamos mapeando las mismas cosas que haríamos para ejecutar la aplicación.

992
00:53:43.435 --> 00:53:46.264
 nivel local, estamos mapeando eso dentro del contenedor,

993
00:53:46.274 --> 00:53:51.594
or lo que tendríamos que ejecutar el comando N PM install también dentro del contenedor.

994
00:53:51.625 --> 00:53:52.195
Entonces,

995
00:53:52.465 --> 00:53:53.594
omo mencioné antes,

996
00:53:53.745 --> 00:53:56.205
a mayoría de las imágenes oscuras están basadas en Linux.

997
00:53:56.215 --> 00:53:59.824
lpine es Linux, una distribución de sistema operativo Linux de onda ligera.

998
00:54:00.050 --> 00:54:00.669
sí que

999
00:54:00.810 --> 00:54:01.520
n el archivo Docker,

1000
00:54:01.530 --> 00:54:05.030
uede escribir cualquier comando de Linux que desee ejecutar dentro del contenedor.

1001
00:54:05.159 --> 00:54:08.820
 siempre que queramos ejecutar cualquier comando dentro del contenedor,

1002
00:54:08.830 --> 00:54:12.469
a sea un comando de Linux o un comando de nodo N PM, lo que sea,

1003
00:54:12.479 --> 00:54:15.600
o ejecutamos mediante una directiva de ejecución.

1004
00:54:15.610 --> 00:54:19.840
sa es otra directiva, y verá que las directivas están escritas en mayúsculas

1005
00:54:20.209 --> 00:54:21.770
 luego viene el comando.

1006
00:54:21.889 --> 00:54:23.659
sí que no hay instalación de PM,

1007
00:54:23.699 --> 00:54:27.840
ue descargará las dependencias dentro del contenedor y

1008
00:54:27.850 --> 00:54:31.239
rear una carpeta de módulos de nodo dentro del contenedor

1009
00:54:31.570 --> 00:54:33.439
ntes de que se inicie la aplicación.

1010
00:54:33.800 --> 00:54:38.699
e nuevo, piense en un contenedor como su propio entorno aislado. Tiene un Linux simple

1011
00:54:39.040 --> 00:54:40.250
istema operativo

1012
00:54:40.489 --> 00:54:42.520
on el nodo y el NPM instalados,

1013
00:54:42.629 --> 00:54:44.540
 estamos ejecutando N PM install.

1014
00:54:44.550 --> 00:54:48.600
in embargo, también necesitamos el código de la aplicación dentro del contenedor, ¿verdad?

1015
00:54:48.919 --> 00:54:50.570
ntonces necesitamos el servidor Js

1016
00:54:50.689 --> 00:54:51.449
n el interior,

1017
00:54:51.479 --> 00:54:53.889
 necesitamos el paquete para Jason porque eso es lo que

1018
00:54:53.899 --> 00:54:58.149
l comando N PM necesitará leer realmente las dependencias.

1019
00:54:58.330 --> 00:55:03.020
 esa es otra directiva de la que tomamos los archivos

1020
00:55:03.189 --> 00:55:09.149
uestra computadora local y los pegamos. Cópielos

1021
00:55:09.760 --> 00:55:11.699
 esa es una directiva llamada Copy

1022
00:55:11.800 --> 00:55:14.649
 puede copiar archivos individuales como el punto del paquete

1023
00:55:14.760 --> 00:55:16.399
son desde aquí

1024
00:55:16.679 --> 00:55:22.530
n el contenedor, y podemos decir en qué lugar del contenedor

1025
00:55:22.899 --> 00:55:25.760
n el sistema de archivos al que se debe copiar.

1026
00:55:26.100 --> 00:55:27.330
 digamos

1027
00:55:27.780 --> 00:55:31.189
ebe copiarse en una carpeta llamada barra

1028
00:55:31.560 --> 00:55:31.889
plicación

1029
00:55:32.679 --> 00:55:36.280
entro del contenedor. Así que esto está

1030
00:55:36.699 --> 00:55:40.639
verdad? Hemos empaquetado aquí al lado. Esto está dentro del contenedor.

1031
00:55:40.649 --> 00:55:41.580
s un completo

1032
00:55:41.689 --> 00:55:45.600
istema aislado de nuestro entorno local,

1033
00:55:46.139 --> 00:55:51.770
ara que podamos copiar archivos individuales y también podemos copiar los directorios completos.

1034
00:55:51.780 --> 00:55:54.510
ntonces, también necesitamos nuestro código de aplicación, obviamente,

1035
00:55:54.520 --> 00:55:57.040
ara ejecutar la aplicación y poder copiar esto

1036
00:55:57.050 --> 00:56:01.419
irectorio fuente completo, por lo que tenemos varios archivos en su interior.

1037
00:56:01.449 --> 00:56:05.020
odemos volver a copiar todo el directorio en el contenedor

1038
00:56:05.649 --> 00:56:06.669
n barra

1039
00:56:06.820 --> 00:56:07.129
plicación

1040
00:56:07.709 --> 00:56:08.479
bicación

1041
00:56:08.639 --> 00:56:11.719
 la barra al final también es muy importante.

1042
00:56:11.729 --> 00:56:17.780
ntonces, el Docker sabe cómo crear esta carpeta si aún no existe en el contenedor,

1043
00:56:17.899 --> 00:56:18.449
así que

1044
00:56:18.649 --> 00:56:23.770
a raíz del sistema de archivos de Linux agrega una carpeta en su interior y, a continuación, una barra diagonal.

1045
00:56:23.879 --> 00:56:27.800
hora todos los archivos de la aplicación relevantes, como el paquete adyacente y el

1046
00:56:27.810 --> 00:56:32.854
odo el directorio fuente se copia en el contenedor de esta ubicación.

1047
00:56:33.175 --> 00:56:36.014
o siguiente que queremos hacer antes de poder ejecutar

1048
00:56:36.024 --> 00:56:40.125
l comando de instalación N PM consiste realmente en cambiar a ese directorio.

1049
00:56:40.135 --> 00:56:40.554
Verdad?

1050
00:56:40.564 --> 00:56:41.175
ntonces, en Linux,

1051
00:56:41.185 --> 00:56:44.834
enemos este CD con derecho a cambiarlo a un directorio

1052
00:56:44.844 --> 00:56:48.415
ara ejecutar los siguientes comandos dentro del directorio

1053
00:56:48.675 --> 00:56:52.965
n el archivo Docker. Tenemos una directiva para eso llamada work

1054
00:56:53.195 --> 00:56:54.125
uerida.

1055
00:56:54.540 --> 00:56:55.850
ntonces, directorio de trabajo,

1056
00:56:56.040 --> 00:56:59.870
ue equivale a cambiar a un directorio

1057
00:56:59.879 --> 00:57:03.590
ara ejecutar todos los siguientes comandos en ese directorio

1058
00:57:03.770 --> 00:57:04.510
ara que podamos

1059
00:57:04.810 --> 00:57:06.260
aga la aplicación slash aquí.

1060
00:57:06.500 --> 00:57:09.919
or lo tanto, establece esta ruta como la ubicación predeterminada

1061
00:57:10.110 --> 00:57:13.219
ara lo que venga después. ESTÁ BIEN

1062
00:57:13.489 --> 00:57:16.750
sí que estamos copiando todo en el contenedor.

1063
00:57:16.760 --> 00:57:19.639
uego estamos configurando el directorio de trabajo

1064
00:57:19.709 --> 00:57:22.149
 el directorio predeterminado dentro del contenedor.

1065
00:57:22.449 --> 00:57:26.500
, a continuación, volvemos a ejecutar N PM install dentro del contenedor para

1066
00:57:26.510 --> 00:57:30.459
escargue todas las dependencias que necesita la aplicación que se definen aquí.

1067
00:57:30.469 --> 00:57:33.929
 finalmente necesitamos ejecutar la aplicación, ¿verdad?

1068
00:57:34.179 --> 00:57:37.510
ntonces, después de la instalación de NP, el comando node debería

1069
00:57:37.520 --> 00:57:41.199
e ejecute y aprenderemos a ejecutar comandos.

1070
00:57:41.209 --> 00:57:43.899
samos la directiva run.

1071
00:57:44.070 --> 00:57:48.360
in embargo, si este es el último comando del archivo Docker,

1072
00:57:48.379 --> 00:57:52.445
sí que algo que realmente inicia el proceso es la aplicación interna,

1073
00:57:52.455 --> 00:57:56.235
enemos una directiva diferente para eso llamada C MD.

1074
00:57:56.435 --> 00:57:58.804
ásicamente, ese es el último comando del

1075
00:57:58.814 --> 00:58:01.405
rchivo docker y eso inicia la aplicación.

1076
00:58:01.614 --> 00:58:03.875
 la sintaxis para eso es la

1077
00:58:04.024 --> 00:58:04.685
omando

1078
00:58:04.925 --> 00:58:05.764
ue es nodo

1079
00:58:06.114 --> 00:58:07.564
 el parámetro

1080
00:58:08.300 --> 00:58:10.050
unto de servidor G Js.

1081
00:58:10.260 --> 00:58:12.979
sí que copiamos todo en la aplicación slash.

1082
00:58:13.010 --> 00:58:15.860
ntonces tenemos el servidor Js dentro del directorio APP

1083
00:58:15.870 --> 00:58:19.229
 lo iniciamos o ejecutamos mediante node commit.

1084
00:58:19.719 --> 00:58:20.389
so es todo.

1085
00:58:20.399 --> 00:58:24.139
se es el archivo Docker completo que creará

1086
00:58:24.149 --> 00:58:27.659
na imagen de Docker para nuestra aplicación node Js,

1087
00:58:27.810 --> 00:58:30.989
ue luego podemos comenzar como un contenedor.

1088
00:58:34.239 --> 00:58:39.629
hora tenemos la definición en el archivo Docker. Es hora de crear realmente la imagen.

1089
00:58:39.639 --> 00:58:40.739
e esta definición.

1090
00:58:41.280 --> 00:58:43.840
oy a aclarar esto y sin cambiar a la terminal,

1091
00:58:43.850 --> 00:58:45.260
e hecho, podemos reutilizar este.

1092
00:58:45.429 --> 00:58:50.429
odemos ejecutar un comando docker para crear una imagen más oscura, lo cual es muy fácil.

1093
00:58:50.439 --> 00:58:52.389
olo hacemos Docker Build.

1094
00:58:52.889 --> 00:58:55.560
uego tenemos un par de opciones que podemos ofrecer.

1095
00:58:55.780 --> 00:58:58.100
l primero es el nombre de la imagen.

1096
00:58:58.110 --> 00:59:03.699
sí que, al igual que todas esas imágenes tienen nombres, como node ready, etcétera,

1097
00:59:03.979 --> 00:59:05.129
 las etiquetas

1098
00:59:05.689 --> 00:59:06.780
ambién podemos

1099
00:59:07.020 --> 00:59:09.580
ombra nuestra imagen y asígnale una etiqueta específica.

1100
00:59:09.850 --> 00:59:13.459
 lo hacemos usando esta opción de guión en forma de T

1101
00:59:13.840 --> 00:59:15.429
 podemos llamar a nuestro nodo de aplicación

1102
00:59:15.530 --> 00:59:15.840
plicación

1103
00:59:16.449 --> 00:59:18.159
uizás con Dash no importe

1104
00:59:18.469 --> 00:59:19.310


1105
00:59:19.689 --> 00:59:22.010
odemos darle una etiqueta específica

1106
00:59:22.199 --> 00:59:24.590
omo 1.0, por ejemplo.

1107
00:59:24.840 --> 00:59:25.469


1108
00:59:25.719 --> 00:59:28.810
l último parámetro es la ubicación del archivo Docker.

1109
00:59:29.010 --> 00:59:31.899
ntonces le estamos diciendo a Docker que cree una imagen

1110
00:59:32.044 --> 00:59:33.764
on este nombre con esta etiqueta

1111
00:59:33.985 --> 00:59:34.945
esde

1112
00:59:35.135 --> 00:59:38.375
a definición en este archivo Docker específico, ¿verdad?

1113
00:59:38.574 --> 00:59:41.754
ntonces, esta es una ubicación del archivo Docker en este caso,

1114
00:59:41.764 --> 00:59:45.395
stamos en el directorio donde se encuentra el archivo Docker,

1115
00:59:45.405 --> 00:59:47.594
or lo que será el directorio actual.

1116
00:59:47.774 --> 00:59:51.834
ntonces, este punto básicamente se refiere a la carpeta actual.

1117
00:59:51.945 --> 00:59:53.794
onde se encuentra el archivo Docker.

1118
00:59:54.040 --> 00:59:56.070
hora, si ejecutamos esto

1119
00:59:56.320 --> 00:59:57.229
omo puede ver, hacedor

1120
00:59:57.479 --> 00:59:59.129
n realidad está construyendo

1121
00:59:59.439 --> 01:00:02.290
a imagen de nuestro archivo Talker

1122
01:00:04.320 --> 01:00:08.370
 parece que tuvo éxito cuando comenzó a crear la imagen.

1123
01:00:08.379 --> 01:00:11.939
es esos pasos, esas directivas que definimos aquí.

1124
01:00:11.949 --> 01:00:17.149
sí que tenemos la primera de la directiva que se ejecutó. Luego tenemos

1125
01:00:17.350 --> 01:00:22.629
omo segundo paso. Luego hemos copiado la carpeta fuente, configurando el

1126
01:00:22.899 --> 01:00:26.939
 ejecutando N PM install y, luego, el último acaba de iniciar la aplicación.

1127
01:00:27.149 --> 01:00:27.929
sí que ahora

1128
01:00:28.459 --> 01:00:30.610
i hago imágenes de Docker

1129
01:00:30.939 --> 01:00:32.070
demás de esos

1130
01:00:32.500 --> 01:00:34.379
mágenes que descargamos

1131
01:00:34.629 --> 01:00:36.060
nteriormente de Docker Hub,

1132
01:00:36.429 --> 01:00:39.250
eberíamos ver realmente la imagen que acabamos de crear.

1133
01:00:39.260 --> 01:00:42.110
sta es la imagen de la aplicación de nodo con etiqueta

1134
01:00:42.449 --> 01:00:43.510
.0

1135
01:00:43.860 --> 01:00:44.810
 alguna otra información.

1136
01:00:45.379 --> 01:00:46.760
sí que esa es nuestra imagen.

1137
01:00:46.770 --> 01:00:49.870
 ahora podemos iniciar esta imagen y trabajar con ella,

1138
01:00:49.879 --> 01:00:53.989
l igual que trabajamos con cualquier otra imagen descargada de Docker Hub.

1139
01:00:54.000 --> 01:00:57.540
sí que vamos a seguir adelante y ejecutar un contenedor desde este nodo

1140
01:00:57.610 --> 01:01:01.389
magen de la aplicación y asegúrese de que la aplicación interna realmente funciona.

1141
01:01:01.629 --> 01:01:02.189
sí que

1142
01:01:02.429 --> 01:01:03.679
amos a hacer Docker Run

1143
01:01:04.310 --> 01:01:04.949
odo

1144
01:01:05.699 --> 01:01:06.159
plicación

1145
01:01:06.449 --> 01:01:09.550
magen con 1.0 10

1146
01:01:10.219 --> 01:01:13.840
 vamos a pasar el parámetro para comenzar de forma separada

1147
01:01:13.850 --> 01:01:17.600
n modo y también queremos exponer el puerto correctamente.

1148
01:01:17.860 --> 01:01:18.659
ueremos

1149
01:01:18.830 --> 01:01:22.860
oder acceder a la aplicación, la aplicación de nodo desde el host local

1150
01:01:23.139 --> 01:01:23.770


1151
01:01:24.000 --> 01:01:27.070
abemos que la aplicación dentro del contenedor se iniciará

1152
01:01:27.080 --> 01:01:30.419
n el puerto 3000 porque eso es lo que hemos definido aquí.

1153
01:01:30.540 --> 01:01:33.899
or lo tanto, la aplicación en sí se ejecutará en el puerto 3000.

1154
01:01:34.179 --> 01:01:41.209
sí que eso está dentro del contenedor, y podemos vincularlo al puerto que queramos en el host local

1155
01:01:41.330 --> 01:01:45.010
demos hacer 3000, igual que en el contenedor.

1156
01:01:45.209 --> 01:01:48.679
sí que este es el puerto de host y este es el puerto de contenedor.

1157
01:01:49.000 --> 01:01:50.520
 ahora si ejecuto

1158
01:01:51.159 --> 01:01:52.050
s un comando

1159
01:01:52.550 --> 01:01:54.409
 haz docker PS,

1160
01:01:54.909 --> 01:01:59.610
eberíamos ver nuestra aplicación de nodo ejecutándose en el puerto 3000

1161
01:01:59.800 --> 01:02:01.449
ora el momento de la verdad

1162
01:02:01.590 --> 01:02:03.270
olver al navegador

1163
01:02:03.850 --> 01:02:06.709
 apertura del host local 3000

1164
01:02:07.459 --> 01:02:11.429
hí está nuestra bienvenida a mi increíble aplicación

1165
01:02:12.320 --> 01:02:14.610
ensaje de nuestra aplicación.

1166
01:02:14.840 --> 01:02:17.060
 incluso podemos comprobar los registros

1167
01:02:17.370 --> 01:02:19.979
omando la identificación de nuestro no

1168
01:02:20.169 --> 01:02:20.530
plicación

1169
01:02:21.189 --> 01:02:23.770
 haciendo bloques de Docker con el ID.

1170
01:02:24.239 --> 01:02:24.800


1171
01:02:25.080 --> 01:02:28.270
se es el resultado de nuestra aplicación

1172
01:02:28.459 --> 01:02:29.649
entro del contenedor.

1173
01:02:30.040 --> 01:02:30.600
sí que

1174
01:02:30.719 --> 01:02:33.040
sí de fácil es aceptar su solicitud,

1175
01:02:33.050 --> 01:02:38.540
mpaquételo en una imagen de Docker usando el archivo Docker y luego ejecútelo como un contenedor

1176
01:02:42.189 --> 01:02:46.100
 finalmente volviendo a esta interfaz gráfica de usuario

1177
01:02:46.110 --> 01:02:49.120
liente que realmente nos proporciona el escritorio Docker.

1178
01:02:49.330 --> 01:02:54.560
hora también podemos ver todos nuestros contenedores e imágenes aquí.

1179
01:02:54.590 --> 01:02:57.479
 así es como se ve esta U I, te da una muy buena

1180
01:02:57.620 --> 01:02:58.219
escripción general

1181
01:02:58.350 --> 01:03:00.510
e los contenedores que tiene.

1182
01:03:00.520 --> 01:03:05.899
uáles se están ejecutando actualmente, cuáles están parados con sus nombres, etc.

1183
01:03:06.060 --> 01:03:09.300
 incluso tienes algunos controles aquí para iniciar un

1184
01:03:09.320 --> 01:03:12.969
detuvo un contenedor como este o incluso lo volvió a detener?

1185
01:03:14.110 --> 01:03:16.669
einiciar el contenedor, eliminar lo que sea.

1186
01:03:16.870 --> 01:03:19.820
 de la misma manera que tienes una lista de imágenes,

1187
01:03:20.250 --> 01:03:21.840
ncluida nuestra propia imagen,

1188
01:03:21.850 --> 01:03:26.570
 también puedes crear contenedores directamente desde aquí usando algunos controles.

1189
01:03:26.600 --> 01:03:27.159
sí que

1190
01:03:27.290 --> 01:03:31.040
ersonalmente prefiero la interfaz de línea de comandos para interactuar con Docker.

1191
01:03:31.050 --> 01:03:33.560
ero algunos se sienten más cómodos usando

1192
01:03:33.719 --> 01:03:35.149
a U. visual

1193
01:03:35.320 --> 01:03:39.379
sí que, como prefieras, puedes elegir trabajar con cualquiera de las dos.

1194
01:03:42.909 --> 01:03:46.879
hora hemos aprendido muchos de los componentes básicos de Docker.

1195
01:03:47.010 --> 01:03:47.620
in embargo,

1196
01:03:47.629 --> 01:03:52.169
ambién es interesante ver cómo Docker encaja realmente en la totalidad

1197
01:03:52.179 --> 01:03:55.320
roceso de desarrollo e implementación de software con

1198
01:03:55.330 --> 01:03:58.000
ambién muchas otras tecnologías.

1199
01:03:58.050 --> 01:04:02.745
ntonces, qué pasos de todo este proceso son más relevantes.

1200
01:04:02.754 --> 01:04:05.125
ntonces, en esta parte final del curso intensivo,

1201
01:04:05.135 --> 01:04:10.764
amos a ver más oscuro en una visión general del ciclo de vida del desarrollo de software.

1202
01:04:10.774 --> 01:04:15.554
onsideremos un escenario simplificado en el que estás desarrollando un JAVASCRIPT

1203
01:04:15.564 --> 01:04:19.504
plicación en su computadora portátil directamente en su entorno de desarrollo local.

1204
01:04:20.379 --> 01:04:23.610
u aplicación de JavaScript usa un Mongo

1205
01:04:23.929 --> 01:04:28.189
ase de datos, y en lugar de instalarla en su computadora portátil,

1206
01:04:28.199 --> 01:04:31.570
escargas un contenedor de Docker desde el centro de Docker.

1207
01:04:32.030 --> 01:04:35.159
sí que conectas tu aplicación de JavaScript con el mongo

1208
01:04:35.449 --> 01:04:37.050
B y empiezas a desarrollar.

1209
01:04:37.649 --> 01:04:39.649
hora digamos que desarrolla el

1210
01:04:39.659 --> 01:04:42.739
plicación primera versión de la aplicación localmente,

1211
01:04:42.750 --> 01:04:47.000
 ahora quieres probarlo o quieres implementarlo en, eh,

1212
01:04:47.010 --> 01:04:49.479
ntorno de desarrollo donde

1213
01:04:49.639 --> 01:04:52.159
n probador de tu equipo lo probará.

1214
01:04:52.560 --> 01:04:56.300
sí que confirmas tu aplicación de JavaScript en git

1215
01:04:56.310 --> 01:04:58.780
 en algún otro sistema de control de versiones.

1216
01:04:59.169 --> 01:05:03.120
h, eso activará una integración continua.

1217
01:05:03.129 --> 01:05:06.139
na compilación de Jenkins, o lo que sea que hayas configurado

1218
01:05:06.389 --> 01:05:10.949
 Jenkins build producirá artefactos a partir de su aplicación.

1219
01:05:11.139 --> 01:05:15.080
rimero, crearás tu aplicación de JavaScript

1220
01:05:15.280 --> 01:05:16.000
 luego

1221
01:05:16.229 --> 01:05:21.550
rea una imagen de Docker a partir de ese artefacto de JavaScript. ¿Verdad?

1222
01:05:21.879 --> 01:05:26.919
ntonces, ¿qué pasa con esta imagen de Docker? Una vez que Jenkins build la cree,

1223
01:05:27.229 --> 01:05:28.489
e empuja

1224
01:05:28.669 --> 01:05:31.199
 un repositorio de Docker privado.

1225
01:05:31.209 --> 01:05:35.000
ormalmente en una empresa tendrías un repositorio privado porque

1226
01:05:35.010 --> 01:05:38.620
o quieres que otras personas tengan acceso a tus imágenes.

1227
01:05:38.629 --> 01:05:40.060
sí que lo empujas allí.

1228
01:05:40.280 --> 01:05:41.169
 ahora,

1229
01:05:41.479 --> 01:05:48.250
a que el siguiente paso podría configurarse en Jenkins o en otros scripts o herramientas, que

1230
01:05:48.520 --> 01:05:49.879
magen de Docker

1231
01:05:50.070 --> 01:05:52.620
ebe implementarse en un servidor de desarrollo.

1232
01:05:53.033 --> 01:05:58.614
sí que tienes un servidor de desarrollo que extrae la imagen del repositorio privado,

1233
01:05:58.864 --> 01:06:02.743
a imagen de su aplicación de JavaScript y, a continuación, extrae el

1234
01:06:03.114 --> 01:06:07.104
ase de datos de la que depende su aplicación de JavaScript desde un Docker Hub.

1235
01:06:07.114 --> 01:06:09.233
 ahora tienes dos contenedores,

1236
01:06:09.243 --> 01:06:13.604
no de tus contenedores personalizados y un Mogo disponible públicamente

1237
01:06:13.864 --> 01:06:17.874
ontenedor de base de datos que se ejecuta en el servidor de desarrollo y se comunican entre sí.

1238
01:06:17.884 --> 01:06:18.897
ienes que configurarlo.

1239
01:06:18.907 --> 01:06:23.758
or supuesto, hablan y se comunican entre sí y funcionan como una aplicación.

1240
01:06:23.768 --> 01:06:29.167
hora, si un probador, por ejemplo, u otro desarrollador inicia sesión

1241
01:06:29.327 --> 01:06:32.558
n un servidor de desarrollo, podrán probar la aplicación.

1242
01:06:32.637 --> 01:06:35.847
sí que este es un flujo de trabajo simplificado, cómo Docker

1243
01:06:35.857 --> 01:06:38.887
uncionará en un proceso de desarrollo de la vida real.

1244
01:06:38.897 --> 01:06:42.708
ntonces, en poco tiempo, aprendemos todos los componentes básicos,

1245
01:06:42.718 --> 01:06:44.781
as partes más importantes de Docker.

1246
01:06:44.971 --> 01:06:47.931
sí que entiendes qué son las imágenes, cómo iniciar los contenedores,

1247
01:06:48.052 --> 01:06:50.181
ómo funcionan y cómo acceder a ellos,

1248
01:06:50.191 --> 01:06:54.781
sí como cómo crear tu propia imagen de Docker y ejecutarla como un contenedor.

1249
01:06:55.152 --> 01:06:59.812
ero si quieres aprender más sobre Docker y practicar tus habilidades aún más

1250
01:06:59.941 --> 01:07:03.152
omo cómo conectar tu aplicación a un contenedor Docker,

1251
01:07:03.382 --> 01:07:07.132
prenda sobre lo más oscuro, componga volúmenes más oscuros, etcétera.

1252
01:07:07.142 --> 01:07:09.325
e hecho, puedes ver a mi actor completo

1253
01:07:09.545 --> 01:07:12.075
tutorial. Y si quieres aprender, hazlo

1254
01:07:12.716 --> 01:07:13.966
n el contexto de los desarrolladores

1255
01:07:14.656 --> 01:07:19.756
 realmente dominarlo con cosas como registros privados que usan doer

1256
01:07:19.986 --> 01:07:21.575
ara ejecutar Jenkins,

1257
01:07:21.656 --> 01:07:24.895
ntegrar Docker en las canalizaciones de CS CD y

1258
01:07:24.906 --> 01:07:28.236
salo con otras tecnologías como terraform

1259
01:07:28.466 --> 01:07:29.335
abilitar, etcétera.

1260
01:07:29.345 --> 01:07:31.825
uedes echar un vistazo a nuestro campamento de entrenamiento completo de devops

1261
01:07:31.835 --> 01:07:34.496
onde aprendes todo esto y mucho más.