clase:daw:daw:tema06
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previa | |||
| clase:daw:daw:tema06 [2026/10/28 09:57] – borrado - editor externo (Fecha desconocida) 127.0.0.1 | clase:daw:daw:tema06 [2026/10/28 09:57] (actual) – ↷ Página movida de clase:daw:daw:1eval:tema06 a clase:daw:daw:tema06 Lorenzo | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 6. Docker: Redes y Proxy ====== | ||
| + | |||
| + | |||
| + | ===== Gestión de Redes ===== | ||
| + | Docker permite crear redes aisladas entre los distintos contenedores. De esa forma , si un contenedor es atacado, no se tendrá acceso por red al resto de los contenedores sino únicamente a los de su propia red. | ||
| + | |||
| + | ^ Orden ^ Explicación | ||
| + | | [[https:// | ||
| + | | [[https:// | ||
| + | | [[https:// | ||
| + | | [[https:// | ||
| + | | [[https:// | ||
| + | |||
| + | |||
| + | Para trabajar con redes, lo que debemos hacer es | ||
| + | |||
| + | * Primero crear la red: | ||
| + | |||
| + | docker network create nombreDeLaRed | ||
| + | |||
| + | * Conectar un contenedor a esa red | ||
| + | |||
| + | docker network connect nombreDeLaRed nombreDelContenedor | ||
| + | |||
| + | * También podemos conectar la red al contenedor al usar '' | ||
| + | |||
| + | docker container run \ | ||
| + | -dit \ | ||
| + | -v / | ||
| + | -e MYSQL_ROOT_PASSWORD=root | ||
| + | -p 4000: | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | |||
| + | ===== Proxy con Nginx ===== | ||
| + | ¿Recuerdas la cabecera '' | ||
| + | |||
| + | Pues vamos ahora a configurar Docker para que todos los servidores compartan el mismo puerto (el 80). Para ello vamos a usar un servidor proxy llamado Nginx. Obviamente, Nginx va estar dentro de otro contenedor de Docker. La imagen a usar es [[https:// | ||
| + | |||
| + | Para arrancar el servidor usamos la siguiente orden: | ||
| + | |||
| + | sudo docker container run \ | ||
| + | -dit \ | ||
| + | -p 80:80 \ | ||
| + | --restart always \ | ||
| + | -v / | ||
| + | --name nginx-proxy \ | ||
| + | nginxproxy/ | ||
| + | | ||
| + | |||
| + | |||
| + | | ||
| + | |||
| + | Como vemos no tiene nada de especial excepto la línea '' | ||
| + | |||
| + | Y ahora , ¿Como arrancamos nuestro servidores web? Pues simplemente hay que añadir dos parámetros y quitar uno. | ||
| + | * Y hay que quitar el parámetro de '' | ||
| + | * Hay que añadir: | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Veamos el siguiente ejemplo: | ||
| + | |||
| + | sudo docker container run \ | ||
| + | -dit \ | ||
| + | -v / | ||
| + | -e VIRTUAL_PORT=80 | ||
| + | -e VIRTUAL_HOST=lorenzo.preproducciondaw.cip.fpmislata.com | ||
| + | --name lorenzo_apache \ | ||
| + | php: | ||
| + | |||
| + | Vemos que el servidor está escuchando en el puerto 80 y va a gestionar las peticiones del dominio // | ||
| + | |||
| + | |||
| + | <note tip>Los servidores de Base de datos u otros contenedores que no son el servidor web no tienen que hacer nada especial por usar Nginx ya que no se accede a ellos a través del proxy sino directamente a ellos o únicamente de forma interna.</ | ||
| + | |||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | ===== docker compose ===== | ||
| + | ¿Y como usamos docker compose cuando usamos nginx-proxy? | ||
| + | |||
| + | Pues lo único que hay que indicar es que usemos la red en la que está nginx-proxy. | ||
| + | |||
| + | En nuestro caso nginx-proxy ha creado la red '' | ||
| + | |||
| + | Para levantar el proxy usamos el siguiente script: | ||
| + | |||
| + | <sxh bash; | ||
| + | docker network create nginx-proxy-network | ||
| + | |||
| + | docker container stop nginx-proxy | ||
| + | docker container rm nginx-proxy | ||
| + | |||
| + | docker container | ||
| + | --name nginx-proxy \ | ||
| + | --publish 80:80 \ | ||
| + | --volume / | ||
| + | --network nginx-proxy-network \ | ||
| + | nginxproxy/ | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | Y nuestro '' | ||
| + | |||
| + | <sxh yaml; | ||
| + | services: | ||
| + | web: | ||
| + | build: . | ||
| + | container_name: | ||
| + | environment: | ||
| + | VIRTUAL_HOST: | ||
| + | networks: | ||
| + | - proxy_red | ||
| + | |||
| + | networks: | ||
| + | proxy_red: | ||
| + | external: | ||
| + | name: nginx-proxy-network | ||
| + | |||
| + | </ | ||
| + | |||
| + | En la linea 13 decimos la red que realmente vamos a usar que es '' | ||
| + | |||
| + | ===== El fichero hosts ===== | ||
| + | Ahora para que funcione el proxy con nginx ya no podemos acceder a la máquina real con la IP sino que habrá que usar el nombre de dominio. Si no tenemos acceso a un nombre de dominio real, podemos simular nosotros uno modificando el fichero '' | ||
| + | |||
| + | El fichero hosts simplemente contiene IPs y nombre e dominio que usará nuestro ordenador. De esa forma simularemos tener un dominio. | ||
| + | |||
| + | En los siguientes artículos se explica como modificar el fichero hosts | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
