Ejemplos:
Creación de contenedor con debian + apache y volumen de datos alimentado desde Host (Máquina local):
docker run --name debian_9_apache -h debian_9_apache
-v //c/Users/Bowerden/Documents/Eduardo/projekts:/var/www/html/projekts
-d -p 5000:80 debian_9_apache bash -c "apache2ctl -D FOREGROUND"
Ejercicio crear mini entorno Dev...
Preparación aplicación:
Creamos una mini aplicación de pruebas con esta estructura:
- myweb
- index.php
- classes
- myclasse.php
Esta tiene un index.php con una instancia de _myClass _la cual da la fecha actual, montado en un html.
Creamos una versión de debian 9 con apache, partimos de una base limpia de debian 9...
docker run --name debian -h debian -it debian bash
Actualizamos e instalamos...
apt-get update
... instala ... instala ... done.
apt-get install apache2
... instala ... instala ... done.
Salimos del contenedor (strg + q +p)...
Y creamos (commit) una imagen nueva partiendo del contenedor Debian recién creado la nueva imagen se llamara debian_9_apache ...
docker commit debian debian_9_apache
Lo podemos comprobar con ...
docker images
Detenemos el contendor de debian ...
docker stop debian
Creamos un contenedor con debian 9 y apache levantado ...
docker run --name debian_9_apache -h debian_9_apache -d -p 5000:80 debian_9_apache bash -c "apache2ctl -D FOREGROUND"
Comprobamos que este funcionando ...
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57dd7fcbfd4d debian_9_apache "bash -c 'apache2c..." 6 seconds ago Up 3 seconds 0.0.0.0:5000->80/tcp debian_9_apache
Ahora tengo una imagen con Debain 9 y apache funcionando esta sera la base para el contenedor con el volumen de datos.
Vamos a crear un contenedor con el volumen de datos y una base de apache...
docker run --name s_myweb -h s_web --volumes-from data_myweb -d -p 5000:80 debian_9_apache bash -c "apache2ctl -D FOREGROUND"
Ahora tenemos un container llamado s_myweb con Debian y apache de base. Puedo acceder y trabajar desde mi PC local y ver los resultados en el contenedor, si elimino el volumen o el contendor de volumen los datos residen en mi PC local por lo tanto es una forma de desacoplar los datos de un container de php que luego usaremos. De esta forma podre cambiar de php de forma desacoplada.
Si me voy al navegador podre ver el contenido de mi proyecto desde el container pero no reconoce PHP por lo tanto solo veo html.
Voy a crear un contenedor de PHP para que poder trabajar con php. Este contenedor usara los datos del contenedor de Volumen...
docker run -d -p 80:80 --name apache_php_myweb -h apache_php_myweb --volumes-from s_myweb -d -p 5050:80 php:7.0-apache
Ahora tengo 2 conenedores uno con el volumen de datos y otro con php ...
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11a00e534198 php:7.0-apache "docker-php-entryp..." 14 seconds ago Up 11 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:5050->80/tcp apache_php_myweb
18fe365e6760 debian_9_apache "bash -c 'apache2c..." 5 minutes ago Up 4 minutes 0.0.0.0:5000->80/tcp s_myweb
Si accedo con el navegador podre ver tanto php como html.
Resumen comandos ...
docker run --name debian -h debian -it debian bash
apt-get update
apt-get install apache2
apt-get install vim
docker commit debian debian_9_apache
docker images
docker stop debian
docker run --name debian_9_apache -h debian_9_apache -d -p 5000:80 debian_9_apache bash -c "apache2ctl -D FOREGROUND"
docker ps
docker run --name s_myweb -h s_web --volumes-from data_myweb -d -p 5000:80 debian_9_apache bash -c "apache2ctl -D FOREGROUND"
docker run -d -p 80:80 --name apache_php_myweb -h apache_php_myweb --volumes-from s_myweb -d -p 5050:80 php:7.0-apache
docker ps