This is an old revision of the document!
Instalamos docker en un servidor con IP 192.168.1.200 que llamaremos host
Internamente crea una red 172.17.0.0/16 donde el host tiene ip 172.17.0.1 y los contenedores que vamos creando 172.17.0.2, 172.17.0.3, 172.17.0.4…..
Ejecutamos un docker con nginx. En este caso la imagen de nginx levanta el puerto 80, se tendría que mirar la documentación de cada docker:
docker run -ti nginx
Podemos acceder al docker en la ip 172.0.0.2:80 desde el servidor pero no desde fuera.
Para acceder desde fuera, podemos mapear el puerto al puerto que queramos, por ejemplo al 8080:
docker run -ti -p 8080:80 nginx
Ahora podemos acceder a nginx a http://192.168.1.200
Podemos levantar mas servicios y mapear a puertos diferentes, nos creará varios contenedores.
docker run -ti -p 8081:80 nginx docker run -ti -p 8082:80 nginx docker run -ti -p 8083:80 nginx
Volúmenes
Podemos hacer que la información de los docker sea persistente mapeando volúmenes, para contenido, ficheros de configuración….
Por ejemplo podemos cambiar el contenido de nginx a una carpeta local, Es con el parámetro v:
-v <directorio local>:<directorio del docker>
Tenemos que conocer la configuración del docker para saber la ruta de los html. Creamos un fichero index.html y lo ponemos en nuestro directorio en local /mi_html/index.html:
docker run -v /mi_html/:/usr/share/nginx/html nginx
Así, guardando el directorio /mi_html podemos levantar el mismo nginx varias veces o en diferentes servidores.
Podemos hacer lo mismo con los ficheros de configuración, en este caso un fichero:
docker run -ti /conf/nginx.conf:/etc/nginx/nginx.conf
Caso práctico, podemos levantar muchos servicios con un nginx por delante:
Creamos el fichero nginx.conf que haga de proxy inverso:
server { listen 80; server_name miweb.com ; location / { proxy_pass http://192.168.1.200:8081; } } server { listen 80; server_name miwordpress.com ; location / { proxy_pass http://192.168.1.200:8082; } } server { listen 80; server_name minodejs.com ; location / { proxy_pass http://192.168.1.200:8083; } }
Levantamos 3 dockers:
docker run -ti -p 8081:80 apache docker run -ti -p 8082:80 wordpress docker run -ti -p 8083:3000 nodejs