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
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-16.png)
Vemos que esta corriendo por el puerto 80 pero no lo hemos dejado accesible
para dejarlo accesible tenemos que correr el docker así
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-17.png)
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.
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-15.png)
¿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
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-18.png)
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
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-19.png)
¿Que pasa si se para el contenedor y lo volvemos a iniciar?
(spoiler se borra todo…)
docker ps (listamos)
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-20-1024x59.png)
docker stop 90e3ce7f2e2a (paramos el id)
docker run -p 8080:80 -d httpd
(iniciamos)
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-21.png)
todo desde 0
docker ps (porque cambia el id)
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-22-1024x70.png)
Tampoco tenemos instalado nano
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-23.png)
Sesiones persistentes
he creado una estructura de carpetas donde guardar las sesiones en el equipo anfitrión /home/jotacee/dockerjc/apache
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-24.png)
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)
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-25.png)
docker run -p 8080:80 -v /home/jotacee/dockerjc/apache:/usr/local/apache2/htdocs/ -d httpd
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-26-1024x51.png)
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-27.png)
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
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-28.png)
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
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-29-1024x148.png)
todo funcionando como antes
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-30.png)
En la maquina local en la carpeta creada veremos la misma info
![](https://martinezmartinez.eu/wp-content/uploads/2022/10/image-31.png)
y esta información es bidireccional, si la modificamos se modifica en el contenedor
salu2