User Tools

Site Tools


informatica:linux:docker:ejemplos

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 con el parámetro p:

  -p <puerto externo>:<puerto interno>
  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 con los servicios y un docker con nginx que estará por delante mapeando todos:

docker run -ti -p 8081:80 apache
docker run -ti -p 8082:80 wordpress
docker run -ti -p 8083:3000 nodejs

docker run -ti -p 80:80 nginx

Si quiero añadir uno, simplemnte tengo que modificar el fichero nginx.conf de mi servidor host y reiniciar el docker de nginx:

docker restart nginx
informatica/linux/docker/ejemplos.1587664776.txt.gz · Last modified: 2020/04/23 17:59 by jose