Dockers con Apache primeros pasos
como siempre vamos a la documentacion de dockers
https://hub.docker.com/_/httpd
docker pull httpd
Una vez instalado lo ejecutamos en segundo plano con el flag -d
docker run -d httpd
con dockers ps podemos controlar su ejecucion

Vemos que esta corriendo por el puerto 80 pero no lo hemos dejado accesible
para dejarlo accesible tenemos que correr el docker así

docker run -p 8080:80 -d httpd
docker run (puerto -p destino:origen -d segundo plano http nombre del servicio
ahora si accedemos a la ip del servidor y añadimos el puerto 8080 lo podemos ver corriendo.

¿Que pasa si queremos editar la pagina?
si ejecutamos una sesión interactiva
docker exec -it 90e3ce7f2e2a sh
90e3ce7f2e2a = a mi ID de contenedor… y vamos a

notaremos que no podemos ejecutar ni vi ni vim ni nano, por ello iniciaremos mejor la sesion con docker exec -it 90e3ce7f2e2a /bin/bash
e instalaremos con normalidad actualizando primero repositos
apt-get update
apt-get install nano

¿Que pasa si se para el contenedor y lo volvemos a iniciar?
(spoiler se borra todo…)
docker ps (listamos)

docker stop 90e3ce7f2e2a (paramos el id)
docker run -p 8080:80 -d httpd
(iniciamos)

todo desde 0
docker ps (porque cambia el id)

Tampoco tenemos instalado nano

Sesiones persistentes
he creado una estructura de carpetas donde guardar las sesiones en el equipo anfitrión /home/jotacee/dockerjc/apache

y ahora el flag -v creara la magia -v «path»:»path donde guardaremos la info en el contendedor»
https://hub.docker.com/_/httpd (en la documentación oficial veremos donde guardarlo)

docker run -p 8080:80 -v /home/jotacee/dockerjc/apache:/usr/local/apache2/htdocs/ -d httpd


miramos el id nuevo con docker ps e iniciamos sesión interactiva con bash
docker exec -it 2cf736796ac9 /bin/bash
volvemos a instalar nano
apt-get update
apt-get install nano
cd htdocs
creamos un nuevo index.html con nano

paramos el docker y lo volvemos a ejecutar
docker ps
para buscar el id
docker stop ID
iniciamos el contenedo
docker run -p 8080:80 -v /home/jotacee/dockerjc/apache:/usr/local/apache2/htdocs/ -d httpd

todo funcionando como antes

En la maquina local en la carpeta creada veremos la misma info

y esta información es bidireccional, si la modificamos se modifica en el contenedor
salu2