0% encontró este documento útil (0 votos)
4 vistas11 páginas

Docker

Docker es una plataforma que permite crear, desplegar y ejecutar aplicaciones en contenedores, garantizando un entorno consistente y eficiente en el uso de recursos. A diferencia de las máquinas virtuales, los contenedores comparten el núcleo del sistema operativo anfitrión, lo que los hace más ligeros y rápidos. Docker también incluye herramientas como Docker Compose para gestionar aplicaciones multicontenedor y orquestación para automatizar la gestión de contenedores en sistemas complejos.

Cargado por

lilianav.guerra
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas11 páginas

Docker

Docker es una plataforma que permite crear, desplegar y ejecutar aplicaciones en contenedores, garantizando un entorno consistente y eficiente en el uso de recursos. A diferencia de las máquinas virtuales, los contenedores comparten el núcleo del sistema operativo anfitrión, lo que los hace más ligeros y rápidos. Docker también incluye herramientas como Docker Compose para gestionar aplicaciones multicontenedor y orquestación para automatizar la gestión de contenedores en sistemas complejos.

Cargado por

lilianav.guerra
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1 -------------------------------------------

2 * QUÉ ES DOCKER *
3 -------------------------------------------
4 Docker es una plataforma de software que permite crear, desplegar y ejecutar
aplicaciones dentro de contenedores. Un contenedor Docker es un paquete ligero y
portable que incluye la aplicación junto con todas sus dependencias, bibliotecas, y
configuraciones necesarias para que funcione de forma consistente en cualquier
entorno.
5 * Los contenedores comparten el núcleo (kernel) del sistema operativo host, pero
cada uno corre de forma aislada.
6 * Esto hace que los contenedores sean muy eficientes en cuanto a uso de recursos.
7 * Son ideales para desarrollo rápido, despliegue continuo, microservicios, y
sistemas basados en la nube.
8 * Docker usa imágenes que son plantillas inmutables para crear contenedores.
9 * Los contenedores pueden arrancar en segundos o menos.
10
11 --------------------------------------------
12 * POR QUÉ DOCKER *
13 --------------------------------------------
14 Con Docker, los desarrolladores pueden empaquetar una aplicación en un contenedor
estándar que funcionará igual en cualquier máquina o entorno, desde su propia
computadora hasta servidores en la nube. Esto elimina el problema clásico donde "en
mi máquina funciona, pero en producción no".
15
16 En resumen, Docker:
17 Proporciona un entorno consistente para desarrollar, probar y desplegar
aplicaciones.
18 Usa contenedores para aislar procesos, garantizando que las aplicaciones no
interfieran entre sí.
19 Reduce el consumo de recursos comparado con máquinas virtuales.
20 Facilita la rápida creación, escalamiento y despliegue de aplicaciones.
21 Es una tecnología clave en el desarrollo moderno, especialmente en
microservicios, DevOps y entornos cloud.
22
23 ---------------------------------------------
24 * DOCKER vs VM *
25 ---------------------------------------------
26 A diferencia de las máquinas virtuales, que requieren un sistema operativo completo
para cada instancia y consumen muchos recursos, los contenedores Docker comparten el
núcleo del sistema operativo anfitrión, haciéndolos mucho más eficientes y rápidos de
iniciar. Esto permite ejecutar múltiples contenedores en una misma máquina sin
generar mucha sobrecarga.
27 Las máquinas virtuales son entornos virtualizados que emulan un equipo físico
completo con su propio sistema operativo invitados (guest OS).
28 * Cada VM incluye una copia completa del sistema operativo, además de la
virtualización del hardware.
29 * Se ejecutan sobre un software llamado hipervisor (como VMware, Hyper-V,
VirtualBox).
30 * Se utilizan para ejecutar múltiples sistemas operativos en una misma máquina
física.
31 * Aislan completamente el sistema operativo y aplicaciones, mejorando la
seguridad y separación.
32 * Tienen tiempos de inicio más largos y consumen más recursos que los
contenedores.
33
34 Conclusión
35 Docker es ideal para ejecutar aplicaciones ligeras y rápidas, con un uso
eficiente del hardware y gran portabilidad. Perfecto para desarrollo ágil y
despliegues en la nube.
36 Máquinas virtuales son mejores cuando se necesita aislamiento robusto, ejecutar
sistemas operativos diferentes o aplicar configuraciones con seguridad reforzada
a nivel del sistema operativo.
37 Ambas tecnologías se complementan y a menudo se usan juntas en infraestructuras
modernas.
38
39 -------------------------------------------
40 * INSTALACION DOKER *
41 -------------------------------------------
42 Docker Desktop y Docker Engine son componentes relacionados pero distintos dentro del
ecosistema Docker, con diferencias importantes en propósito, uso y entorno:
43
44 Docker Engine
45 Es la tecnología cliente-servidor que permite construir, ejecutar y gestionar
contenedores Docker.
46 Incluye el Docker Daemon (demonio que gestiona contenedores, imágenes, redes,
volúmenes), la API REST y la interfaz de línea de comandos (CLI).
47 Es el núcleo fundamental para correr Docker en cualquier entorno.
48 En sistemas Linux, normalmente instalas solo Docker Engine para gestionar
contenedores directamente esde la terminal.
49 No tiene interfaz gráfica propia, se controla por comandos.
50 Docker Desktop
51 Es una aplicación para Windows y macOS que incluye Docker Engine, más una
interfaz gráfica fácil de usar.
52 Proporciona además una máquina virtual ligera (VM) que ejecuta un sistema Linux
para que Docker Engine funcione en sistemas que no tienen kernel Linux nativo,
porque los contenedores Docker usan características del kernel Linux.
53 Administra esa VM y ofrece funcionalidades adicionales como integración con IDEs,
Kubernetes local, configuración más sencilla, acceso a ajustes y recursos desde
una UI.
54 Facilita mucho la instalación y uso en entornos de escritorio, especialmente
Windows donde se requiere WSL2 o Hyper-V.
55 En Linux, la instalación suele ser solo Docker Engine sin la capa adicional Desktop.
56
57 En resumen
58 Característica Docker Engine Docker Desktop
59 Uso principal Núcleo para ejecutar Docker por CLI Aplicación completa con UI
para usuarios
60 Incluye Docker Daemon Sí Sí
61 Interfaz gráfica No Sí
62 Requiere VM Linux No (en Linux directo) Sí (en Windows/macOS crea VM Linux)
63 Sistemas soportados Linux, Windows (WSL o VM), macOS (via VM) Windows, macOS
64 Facilidad de uso Menor, requiere línea de comandos Mayor, incluye
herramientas y configuraciones
65
66 Docker Desktop es la forma más sencilla y completa de usar Docker en Windows y macOS,
mientras que Docker Engine es el componente fundamental que puede usarse directamente
en Linux o dentro de la VM que crea Docker Desktop.
67
68 -------------------------------------------
69 * AISLAMIENTO *
70 -------------------------------------------
71 El aislamiento en Docker se refiere a la capacidad que tienen los contenedores
para funcionar de manera independiente y separada unos de otros, sin interferir
en su funcionamiento ni en el del sistema operativo anfitrión. Este mecanismo
garantiza que cada contenedor tenga su propio entorno, con recursos dedicados y
configuraciones específicas, pero compartiendo el núcleo del sistema operativo
del host.
72 ¿Cómo funciona el aislamiento en Docker?
73 Espacios de nombres (Namespaces):
74 Permiten que cada contenedor tenga su propio sistema de archivos, red,
procesos, usuarios y otros recursos, creando así un entorno virtual
independiente. Por ejemplo, cada contenedor puede tener su propia IP, sus
propias vistas del sistema de archivos y su propio espacio de procesos, sin
mezclarse con otros.
75 Control de recursos (cgroups):
76 Limita y gestiona la cantidad de CPU, memoria, disco y otros recursos que un
contenedor puede usar. Esto evita que un contenedor monopolice recursos y
afecta a los demás contenedores o al sistema host.
77 Sistema de archivos aislado:
78 Cada contenedor tiene un sistema de archivos virtual que puede basarse en
capas de imágenes, y los cambios en un contenedor no afectan a otros, a menos
que se compartan volúmenes.
79 Red virtualizada:
80 Cada contenedor puede tener su propia interfaz de red virtual, con
direcciones IP y reglas de firewall específicas, logrando así un nivel
adicional de aislamiento de red.
81 ¿Por qué es importante el aislamiento?
82 El aislamiento hace que:
83 Las aplicaciones puedan ejecutarse en entornos separados, incluso en la misma
máquina física.
84 La seguridad se refuerce, al reducir las posibilidades de que un fallo o una
vulnerabilidad en un contenedor afecte a otros.
85 Se puedan gestionar y escalar microservicios de manera eficiente, manteniendo
control individual sobre cada servicio.
86 En resumen, el aislamiento en Docker combina varias tecnologías del kernel de Linux
para mantener cada contenedor en su propio entorno virtual, permitiendo seguridad,
eficiencia y portabilidad.
87
88 -------------------------------------------
89 * CONTENDORES *
90 -------------------------------------------
91 Un contenedor Docker es una unidad estándar de software que empaqueta todo lo
necesario para ejecutar una aplicación de manera rápida, confiable y consistente en
cualquier entorno. Esto incluye el código de la aplicación, las dependencias,
bibliotecas, configuraciones y otros componentes necesarios.
92
93 ¿Qué es exactamente un contenedor Docker?
94 Es una capa de aislamiento que permite ejecutar múltiples aplicaciones en la misma
máquina sin que interfieran entre sí.
95
96 Comparte el núcleo del sistema operativo del host, pero mantiene el entorno de la
aplicación aislado.
97
98 Es mucho más ligero y eficiente que una máquina virtual, ya que no incluye un sistema
operativo completo, solo lo imprescindible para la aplicación.
99
100 Es portable: puedes crear un contenedor en un entorno y ejecutarlo en cualquier otro
lugar que tenga Docker, sin preocuparte por incompatibilidades.
101
102 Funciona como si fuera un "mini servidor" que contiene solo la aplicación y sus
dependencias, pero no un sistema operativo completo, por lo que se inicia casi
instantáneamente y consume menos recursos.
103
104 Resumen
105 El contenedor Docker encapsula toda la aplicación y sus dependencias en un paquete
independiente, lo que facilita el despliegue, la escalabilidad y la portabilidad en
distintos entornos y servidores sin preocuparse por diferencias en configuraciones o
[Link]
106
107 ---------------------------------------------
108 * ESTRUCTURA DE UN CONTENEDOR *
109 ---------------------------------------------
110 Un contenedor Docker está estructurado internamente para ejecutar aplicaciones de
forma aislada y eficiente, compartiendo ciertos recursos del sistema operativo del
host pero manteniendo independencia. Su estructura interna incluye varios componentes
clave:
111
112 Estructura interna de un contenedor Docker
113 1. Capa de Imagen (Imagen base y capas de solo lectura)
114 Cada contenedor se crea a partir de una imagen Docker.
115 La imagen está compuesta por varias capas apiladas, cada una representando
una instrucción en el Dockerfile (copiar archivos, instalar software, etc.).
116 Estas capas son de solo lectura y compartidas entre contenedores que usan la
misma imagen, lo que optimiza espacio y eficiencia.
117 2. Capa de Escritura (Writable layer)
118 Cuando se inicia un contenedor, Docker añade una capa superior de escritura.
119 Todos los cambios realizados en archivos o sistema dentro del contenedor se
guardan en esta capa.
120 Si el contenedor se destruye, esta capa desaparece a menos que se persistan
datos mediante volúmenes.
121 3. Espacio de Nombres (Namespaces)
122 Son una característica del kernel de Linux que aisla los recursos del
contenedor.
123 Aislan procesos, red, sistema de archivos, usuarios, etc.
124 Permiten que el contenedor tenga su propio sistema de archivos, red privada y
procesos independientes.
125 4. Control de Grupos (cgroups)
126 Limita y gestiona los recursos que el contenedor puede consumir (CPU,
memoria, disco, red).
127 Previene que un contenedor consuma recursos en exceso.
128 5. Sistema de Archivos
129 El contenedor tiene un sistema de archivos virtual que se compone de la suma
de las capas de imagen (lectura) más la capa de escritura (efectiva).
130 Los datos persistentes deben guardarse en volúmenes o bind mounts fuera del
contenedor para sobrevivir a su destrucción.
131 6. Redes
132 Docker asigna a cada contenedor interfaces de red virtual, conectados a redes
Docker (bridge, overlay, host).
133 Cada contenedor tiene su propia dirección IP dentro de su red Docker aislada.
134 Resumen visual simplificado
135 ┌─────────────────────────────────────────────┐
136 │ Capa Escritura │ ← Cambios realizados en el
contenedor
137 ├─────────────────────────────────────────────┤
138 │ Capas de Imagen (solo lectura) │ ← Archivo y configuraciones
originales
139 ├─────────────────────────────────────────────┤
140 │ Espacio de Nombres │ ← Aislamiento de procesos y
recursos
141 ├─────────────────────────────────────────────┤
142 │ cgroups │ ← Límite de recursos (CPU,
memoria...)
143 └─────────────────────────────────────────────┘
144 Esta estructura permite que contenedores sean ligeros, rápidos y aislados, pero
compartan recursos para optimizar eficiencia.
145
146 --------------------------------------------
147 * DOCKER COMPOSE *
148 --------------------------------------------
149 Docker Compose es una herramienta incluida en el ecosistema Docker que facilita la
definición, configuración y gestión de aplicaciones que requieren múltiples
contenedores trabajando juntos. Es especialmente útil en entornos de desarrollo,
pruebas y despliegues pequeños, donde gestionar manualmente varios contenedores sería
laborioso y propenso a errores.
150
151 ¿Qué es Docker Compose y cómo funciona?
152 Definición: Es un archivo en formato YAML llamado [Link] en el que
describes cómo quieres que se configuren y conecten los diferentes contenedores
de tu aplicación (como un servidor web, base de datos, cache, etc.).
153 Funcionalidad
154 A partir de ese archivo, puedes crear, administrar y eliminar todos los
contenedores, redes y volúmenes asociados con un solo comando (docker-compose up,
docker-compose down), simplificando así tareas complejas.
155 Componentes clave:
156 services: describe los contenedores que quieres ejecutar, incluyendo sus
imágenes, puertos, volúmenes, variables de entorno, dependencias, etc.
157 networks: define redes personalizadas para conectar los servicios.
158 volumes: especifica almacenamiento persistente compartido entre host y
contenedores.
159 Resumen
160 Docker Compose orquesta y configura múltiples contenedores en un solo archivo
YAML.
161 Es ideal para desarrollo y pruebas de aplicaciones multicontenedor.
162 Simplifica despliegues repetibles y coherentes.
163
164 --------------------------------------------
165 * ORQUESTACION *
166 --------------------------------------------
167 La "orquestación" en el contexto de Docker se refiere a la gestión automática y
coordinada de múltiples contenedores Docker que componen una aplicación o sistema
distribuido.
168
169 Qué hace la orquestación:
170 Gestiona la creación, despliegue, escalado y eliminación de contenedores.
171
172 Controla la comunicación y el balanceo de carga entre contenedores.
173
174 Asegura alta disponibilidad y recuperación automática ante fallos.
175
176 Permite actualizar servicios sin interrupciones (deployments continuos).
177
178 Administra recursos como CPU, memoria y almacenamiento para cada contenedor.
179
180 Herramientas populares de orquestación:
181 Kubernetes: sistema robusto y muy utilizado para orquestar contenedores a gran escala.
182
183 Docker Swarm: solución nativa de Docker para orquestar contenedores en clúster.
184
185 Amazon ECS, Google GKE, Azure AKS: servicios gestionados de orquestación en la nube.
186
187 La orquestación es clave cuando manejas aplicaciones con múltiples contenedores (por
ejemplo, microservicios) que necesitan coordinación, escalabilidad y mantenimiento
continuos. Simplifica y automatiza la operación de sistemas complejos usando
[Link]
188
189 ----------------------------------
190 * COMANDOS FUNADMENTALES *
191 ----------------------------------
192 Aquí tienes una lista detallada de los comandos de Docker que son esenciales para
gestionar contenedores, imágenes, redes y volúmenes. Son los comandos que más usarás
en tu día a día:
193
194 Comandos básicos de Docker
195 Imágenes
196 docker pull <imagen>: Descarga una imagen desde un registro como Docker Hub.
197 docker build -t <nombre>:<tag> .: Crea una imagen a partir de un Dockerfile en el
directorio actual.
198 docker images: Lista todas las imágenes disponibles en el sistema.
199 docker rmi <imagenID o nombre>: Elimina una o varias imágenes.
200 Contenedores
201 docker run <opciones> <imagen>: Crea y ejecuta un nuevo contenedor.
202 docker ps: Lista los contenedores en ejecución.
203 docker ps -a: Lista todos los contenedores, incluidos los detenidos.
204 docker stop <ID o nombre>: Detiene un contenedor en ejecución.
205 docker start <ID o nombre>: Inicia un contenedor detenido.
206 docker restart <ID o nombre>: Reinicia un contenedor en ejecución.
207 docker rm <ID o nombre>: Elimina un contenedor (deja de existir).
208 docker logs <ID o nombre>: Muestra los logs de salida de un contenedor.
209 docker exec -it <ID o nombre> bash: Ejecuta un bash interactivo en un contenedor
en ejecución.
210 Redes
211 docker network ls: Lista las redes disponibles.
212 docker network create <nombre>: Crea una nueva red.
213 docker network rm <nombre>: Elimina una red.
214 Volúmenes
215 docker volume ls: Lista volúmenes existentes.
216 docker volume create <nombre>: Crea un volumen.
217 docker volume rm <nombre>: Elimina un volumen.
218 Otros comandos útiles
219 docker system prune: Limpia contenedores, imágenes, volúmenes y redes no usados.
220 docker inspect <ID o nombre>: Muestra detalles de un contenedor, imagen, volumen
o red.
221 docker commit <ID> <nombre>:: Crea una nueva imagen a partir de los cambios en un
contenedor.
222
223 Estos son los comandos más utilizados y esenciales para gestionar tu entorno Docker.
Conociéndolos, podrás crear, administrar y limpiar tus contenedores, imágenes y
recursos de manera eficiente.
224
225 ----------------------------------------------
226 * ARCHIVOS Docker *
227 ----------------------------------------------
228 Los archivos principales que usa Docker son:
229
230 Dockerfile
231 Es un archivo de texto con instrucciones para construir una imagen Docker. Define
la base del contenedor, las dependencias, comandos a ejecutar, puertos a exponer,
etc.
232
233 [Link]
234 Archivo usado para definir y ejecutar aplicaciones multi-contenedor. Permite
describir servicios, redes, volúmenes y configuraciones que luego se lanzan con
docker-compose up.
235
236 Imágenes Docker
237 Son archivos binarios que contienen todo lo necesario para ejecutar un
contenedor: sistema de archivos, librerías, dependencias y aplicaciones. Se
almacenan localmente o en repositorios como Docker Hub.
238
239 Volúmenes Docker
240 Archivos y directorios que persisten datos fuera del ciclo de vida de los
contenedores, permitiendo mantener la información aunque el contenedor se elimine
o reinicie.
241
242 Archivos de configuración
243 Como .dockerignore para ignorar ciertos archivos en la construcción de la imagen,
y otros archivos que se montan dentro del contenedor mediante volúmenes.
244
245 En resumen, los archivos esenciales para trabajar con Docker son Dockerfile para
construir imágenes, [Link] para orquestación local, y los volúmenes para
la persistencia de datos. Además, las imágenes y contenedores generados por Docker
también son parte fundamental de su funcionamiento.
246
247 -------------------------------------
248 * ESTRUCTURA DEL DOCKERFILE *
249 -------------------------------------
250 La estructura básica de un Dockerfile contiene una serie de instrucciones que indican
cómo construir una imagen Docker. Estas instrucciones se ejecutan secuencialmente y
cada una crea una capa en la imagen.
251
252 Elementos comunes en la estructura de un Dockerfile:
253 FROM: Define la imagen base sobre la que se construirá la nueva imagen. Ejemplo:
254 FROM php:8.2-apache
255 LABEL: Metadatos para la imagen, como autor, versión, descriptivos.
256 LABEL maintainer="tuemail@[Link]"
257 RUN: Ejecuta comandos en la imagen. Se usa para instalar dependencias, herramientas,
limpiar cache, etc.
258 RUN apt-get update && apt-get install -y git
259 COPY o ADD: Copia archivos y directorios desde el contexto local al sistema de
archivos de la imagen.
260 COPY . /var/www/html
261 WORKDIR: Cambia el directorio de trabajo donde se ejecutan los comandos posteriores.
262 WORKDIR /var/www/html
263 ENV: Define variables de entorno para la imagen.
264 ENV APP_ENV=production
265 EXPOSE: Indica los puertos que el contenedor va a usar.
266 EXPOSE 80
267 CMD y/o ENTRYPOINT: Define el comando que se ejecutará cuando se inicie el
contenedor. CMD puede ser sobrescrito en la ejecución, ENTRYPOINT es más rígido.
268 CMD ["apache2-foreground"]
269 Ejemplo mínimo:
270 FROM php:8.2-apache
271 LABEL maintainer="tuemail@[Link]"
272 UN apt-get update && apt-get install -y git
273 OPY . /var/www/html
274 ORKDIR /var/www/html
275 XPOSE 80
276 MD ["apache2-foreground"]
277 Estaestructura es la base para construir la imagen que luego se usará para levantar
el contenedor Docker.
278 Cada instrucción del Dockerfile genera una capa que se mantiene en caché para
optimizar la construcción y reutilización. El orden y contenido afectan el tamaño y
la eficiencia.
279
280 --------------------------------------------
281 * ESTRUCTURA DEL [Link] *
282 --------------------------------------------
283 La estructura básica de un archivo [Link] es un archivo en formato YAML
que define la configuración de múltiples contenedores para una aplicación. Organiza
servicios, redes y volúmenes en un solo lugar.
284
285 Estructura general:
286 version: '3.8' # Versión del esquema de Docker Compose (opcional en versiones
recientes)
287
288 services: # Define los servicios (contenedores)
289 servicio1: # Nombre único del servicio
290 image: nginx:latest # Imagen Docker a usar o
291 build: # O construir imagen desde un Dockerfile
292 context: .
293 dockerfile: Dockerfile
294 ports: # Puertos a exponer (host:contenedor)
295 - "8080:80"
296 volumes: # Montajes de volúmenes (host:contenedor)
297 - ./app:/usr/share/nginx/html
298 environment: # Variables de entorno
299 - ENV_VAR=valor
300 depends_on: # Dependencias entre servicios
301 - servicio2
302
303 networks: # Redes personalizadas
304 red1:
305 driver: bridge
306
307 volumes: # Volúmenes Docker para persistencia de datos
308 volume1:
309 Campos principales y su función
310 services: define los contenedores que correrán, su imagen, puertos, variables y
dependencias.
311
312 image: imagen Docker que se usará.
313
314 build: indica construir la imagen desde un Dockerfile.
315
316 ports: mapea puertos de host a contenedor para acceso externo.
317
318 volumes: mapea carpetas o archivos para persistencia o compartir datos.
319
320 environment: variables de entorno que recibe el contenedor.
321
322 depends_on: indica orden de arranque relativo entre servicios.
323
324 networks: define las redes Docker para interconexión de servicios.
325
326 volumes: define almacenamiento persistente Docker externo al ciclo de vida del
contenedor.
327
328 Ejemplo mínimo:
329 text
330 version: '3.8'
331 services:
332 web:
333 image: nginx:latest
334 ports:
335 - "8080:80"
336 volumes:
337 - ./app:/usr/share/nginx/html
338 networks:
339 default:
340 driver: bridge
341 Este archivo lanza un contenedor Nginx, monta la carpeta ./app del host y expone el
puerto 8080 para acceder desde el host.
342
343 Esta estructura permite definir y configurar la arquitectura completa de una
aplicación multicontenedor de manera declarativa y centralizada
344
345 --------------------------------------------
346 * OTROS ARCHIVOS *
347 --------------------------------------------
348 vamos a profundizar en los conceptos de imágenes (images), volúmenes (volumes) y
archivos de configuración en Docker, fundamentales para entender cómo funciona la
contenerización y la gestión de entornos en Docker.
349
350 Imágenes (Images)
351 ----------------------
352 ¿Qué son?
353 Las imágenes en Docker son archivos inmutables que contienen todo lo
necesario para ejecutar una aplicación: sistema operativo, dependencias,
configuraciones y el código de la app misma. Piensa en ellas como plantillas
para crear contenedores.
354 ¿Cómo funcionan?
355 Se construyen a partir de un archivo Dockerfile, que especifica los pasos
para crear la imagen.
356 Una vez creada, puedes usar docker run para crear un contenedor basado en esa
imagen.
357 Las imágenes son reutilizables; puedes tener varias instancias con diferentes
configuraciones si creas diferentes imágenes.
358 Ejemplo básico
359 FROM php:8.2-cli
360 COPY . /app
361 WORKDIR /app
362 CMD ["php", "[Link]"]
363 Este Dockerfile crea una imagen basada en PHP 8.2, copia tus archivos, configura
el directorio de trabajo y define qué comando correr.
364
365 Volúmenes (Volumes)
366 -----------------------
367 ¿Qué son?
368 Los volúmenes en Docker son áreas de almacenamiento persistente y compartido.
Permiten guardar datos fuera del ciclo de vida de un contenedor, evitando su
pérdida cuando el contenedor se elimina.
369 ¿Para qué sirven?
370 Guardar bases de datos o archivos generados por la app.
371 Compartir datos entre el host (tu máquina) y el contenedor.
372 Mantener persistentes datos importantes en caso de recrear o actualizar
contenedores.
373 Cómo se crean y usan
374 En [Link] puedes definir volumenes así:
375 volumes:
376 mi_data: {}
377 ...
378 services:
379 app:
380 volumes:
381 - ./app:/var/www/html
382 - mi_data:/var/lib/mysql
383 Aquí, ./app en tu máquina se comparte con /var/www/html en el contenedor, y
mi_data es un volumen persistente para datos de MySQL.
384
385 Archivos de configuración
386 -------------------------------
387 ¿Qué son y cómo se usan?
388 Son archivos que definen cómo Docker debe configurar los contenedores y
ambientes, como:
389 Dockerfile: define la imagen.
390 [Link]: orquestra varios contenedores, volúmenes y redes.
391 .env: archivo donde defines variables de entorno usadas en Docker y las
aplicaciones.
392 Ejemplo de .env
393 APP_PORT=8000
394 DB_HOST=db
395 DB_USER=root
396 DB_PASS=password
397 Ventajas de archivos de configuración
398 Automatizan la configuración.
399 Facilitan el despliegue en diferentes entornos.
400 Mejoran la reproducibilidad y escalabilidad.
401
402 ------------------------------------
403 * ESTRUCTURA DEL .env *
404 ------------------------------------
405 El archivo .env es un archivo de texto sin formato ubicado en la raíz de tu proyecto
Laravel, usado para definir variables de entorno que configuran la aplicación y su
entorno. Es fundamental para separar configuración del código y manejar distintos
entornos (desarrollo, producción, etc.) de manera sencilla.
406
407 Estructura del archivo .env
408 Está compuesto por pares clave=valor, uno por línea.
409
410 Cada línea define una variable de entorno y su valor.
411
412 No lleva espacios alrededor del signo igual (=).
413
414 Se pueden incluir comentarios con el símbolo #.
415
416 Ejemplo básico:
417 APP_NAME=Laravel
418 APP_ENV=local
419 APP_KEY=base64:xxxxxxxxxxxxxxx
420 APP_DEBUG=true
421 APP_URL=[Link]
422
423 LOG_CHANNEL=stack
424
425 DB_CONNECTION=mysql
426 DB_HOST=db
427 DB_PORT=3306
428 DB_DATABASE=laravel
429 DB_USERNAME=laravel
430 DB_PASSWORD=secret
431 Propósitos principales
432 Variables de aplicación: Como APP_NAME, APP_ENV, APP_DEBUG, APP_URL que definen
el nombre, entorno, modo debug y URL base de la app.
433 Configuración de base de datos: DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE,
DB_USERNAME, DB_PASSWORD que definen cómo se conecta Laravel a la base de datos.
434 Configuración de servicios: Puedes definir variables para otros servicios como
Redis, mail, APIs, etc.
435 Configuración específica de Docker: En proyectos con Docker, uso común definir
variables que luego se leen para configurar contenedores y la app, por ejemplo el
DB_HOST puede ser el nombre del contenedor.
436 Uso con Docker y Laravel
437 En [Link], puedes referenciar variables de .env para configurar los
contenedores usando env_file o environment.
438 Laravel accede a estas variables automáticamente usando la función env() en su
configuración.
439 Facilita cambiar parámetros sin modificar código ni imágenes Docker.
440 Buenas prácticas
441 No subir el .env a repositorios públicos (usualmente está en .gitignore).
442 Usar .[Link] para compartir la estructura con otros devs, sin valores
sensibles.
443 Mantener valores sensibles (contraseñas, claves API) solo en .env local.
444 Para producción, tener un .env específico adaptado al entorno.
445 En resumen, el .env es una tabla sencilla de configuración clave=valor que Docker y
Laravel usan para parametrizar el comportamiento de la app y sus contenedores, clave
para flexibilizar despliegues y desarrollo.
446
447 -----------------------------------------
448 * ALMACENAMIENTO VOLUME O BIND *
449 -----------------------------------------
450 Para entender Docker en profundidad, es fundamental diferenciar dos formas
principales de manejar el almacenamiento persistente cuando usas contenedores:
volúmenes (volumes) y montajes de enlace (bind mounts). Ambas permiten que los datos
sobrevivan al ciclo de vida del contenedor, pero funcionan y se usan en contextos
diferentes.
451
452 Volúmenes (Volumes)
453 Son gestionados y controlados por Docker.
454 Docker crea y almacena los datos en un área específica dentro del host (por
defecto en Linux suele ser /var/lib/docker/volumes).
455 Son independientes del sistema de archivos del host, proporcionando una capa de
abstracción.
456 Se comparten fácilmente entre múltiples contenedores.
457 Son ideales para entornos de producción, backups, migración y uso con drivers
externos (NFS, cloud, etc.).
458 Son fáciles de administrar con comandos docker volume create, docker volume ls,
docker volume rm.
459 Permiten que Docker gestione permisos y seguridad.
460 Proporcionan mejor aislamiento y menor superficie de ataque en producción.
461 Montajes de Enlace (Bind Mounts)
462 Montan directamente un archivo o carpeta del sistema de archivos del host dentro
del contenedor.
463 El host controla la ubicación de los datos; Docker sólo referencia la ruta.
464 Útiles durante desarrollo para compartir el código fuente, permitiendo edición en
tiempo real.
465 Son menos portables, ya que dependen de la estructura del host.
466 No gestionan permisos ni seguridad automáticamente, pueden plantear riesgos si se
usan con imágenes no confiables.
467 Se configuran apuntando rutas absolutas del host en el [Link] o en la
línea de comandos.
468 Resumen comparativo
469
__________________________________________________________________________________
_________________________
470 | Característica | Volúmenes Docker | Montajes de
Enlace (Bind Mounts) |
471
|____________________|_______________________________________|____________________
________________________|
472 | Gestión | Gestionados por Docker | Gestionados
directamente por el host |
473
|____________________|_______________________________________|____________________
________________________|
474 | Ubicación de datos | Carpeta interna Docker | Ruta absoluta en
el host |
475 | | (/var/lib/docker/volumes)
| |
476
|____________________|_______________________________________|____________________
________________________|
477 | Portabilidad | Alta (independientes del host) | Baja (depende del
host y su estructura) |
478
|____________________|_______________________________________|____________________
________________________|
479 | Uso común | Producción, bases de datos, backups | Desarrollo,
edición en tiempo real |
480
|____________________|_______________________________________|____________________
________________________|
481 | Seguridad | Mejor aislamiento y permisos | Más expuesto a
problemas si no se controla |
482
|____________________|_______________________________________|____________________
________________________|
483 | Compartición entre | Sí | Sí, pero depende
de la configuración |
484 | contenedores |
| |
485
|____________________|_______________________________________|____________________
________________________|
486 | Backup y migración | Sencillos con herramientas de Docker | Depende de las
herramientas del host |
487
|____________________|_______________________________________|____________________
________________________|
488
489 Ejemplo en [Link]
490 services:
491 app:
492 image: mi_app
493 volumes:
494 - mi_volumen_docker:/app/data # Volumen Docker
495
496 - ./codigo_local:/app/codigo # Bind mount
497
498 volumes:
499 mi_volumen_docker:
500 Entender cuándo usar un volumen o un bind mount es clave: para producción, se
prefieren volúmenes por su seguridad y portabilidad; para desarrollo, bind mounts
permiten modificar código en vivo con mayor facilidad.
501
502 -------------------------------------------------
503 * REDES *
504 -------------------------------------------------
505 Las redes Docker son un componente fundamental para que los contenedores puedan
comunicarse entre sí y con el exterior. Docker proporciona un sistema de red
integrado que permite crear, gestionar y configurar redes virtuales adaptadas a
diferentes necesidades y escenarios.
506
507 ¿Qué son las redes Docker?
508 Son redes virtuales que conectan contenedores entre sí y también con el host y el
mundo exterior, permitiendo el tráfico de datos de manera aislada y segura. Cada
contenedor tiene su propia interfaz de red, IP y puede ser configurado para
interactuar en una o varias redes.
509
510 Tipos principales de redes Docker
511 1. Bridge (puente)
512 Es la red predeterminada creada por Docker para contenedores que corren en el mismo
host.
513
514 Permite que los contenedores conectados a esa red se comuniquen entre sí.
515
516 El host funciona como un puente para conectar a los contenedores con el exterior.
517
518 Es ideal para aplicaciones simples o desarrollo local.
519
520 2. Host
521 El contenedor comparte directamente la pila de red del host.
522
523 No hay aislamiento de red entre el contenedor y el host.
524
525 El contenedor usa la IP y puertos del host directamente.
526
527 Es útil para conexiones que requieren alta performance o baja latencia.
528
529 3. Overlay (superposición)
530 Permite conectar contenedores que están ejecutándose en diferentes hosts Docker.
531
532 Se usa principalmente en Docker Swarm o orquestadores como Kubernetes.
533
534 Crea una red virtual que cubre múltiples máquinas físicas.
535
536 4. Macvlan
537 Asigna al contenedor una dirección MAC propia, haciéndolo parecer un dispositivo
físico en la red.
538
539 Ideal para integrar con redes físicas o sistemas que esperan dispositivos reales con
MAC.
540
541 5. None
542 El contenedor no tiene acceso a la red.
543
544 Se usa para escenarios muy controlados donde no se necesita red.
545
546 Cómo funcionan las redes Docker
547 Docker crea interfaces virtuales de red (veth pairs) para cada contenedor.
548
549 Configura reglas de firewall y rutas para controlar el tráfico.
550
551 Permite definir redes personalizadas para aislar o conectar grupos de contenedores.
552
553 Soporta resolución de nombres DNS para que los contenedores se encuentren por nombre.
554
555 Ejemplo básico: Crear y usar una red puente personalizada
556 bash
557 docker network create mi_red_personalizada
558
559 docker run -dit --name cont1 --network mi_red_personalizada nginx
560 docker run -dit --name cont2 --network mi_red_personalizada alpine
561
562 docker exec -it cont1 ping cont2
563 Aquí cont1 y cont2 están en la misma red y pueden comunicarse fácilmente.
564
565 Resumen
566 Las redes Docker definen cómo los contenedores se comunican.
567
568 El tipo de red que elijas depende de tus necesidades de comunicación, aislamiento y
despliegue.
569
570 La mayoría de los desarrollos usan redes Bridge o redes personalizadas definidas por
el usuario.
571
572 Para producción y orquestación se utilizan Overlay y Macvlan.

También podría gustarte