Continuando el post anterior, en el que explicabamos las nociones basicas de docker, en este post nos centraremos en como compartir información con docker y como docker conecta los containers.

Compartir carpetas con boot2docker

Boot2docker crea automática carpetas compartidas entre nuestro entorno y la maquina virtual, si encuentra alguna de estas rutas:

  1. Users compartida como /Users
  2. /Users compartida como /Users
  3. c/Users compartida como /c/Users
  4. /c/Users compartida como /c/Users
  5. c:/Users compartida como /c/Users

Opciones de ejecucion

docker run [-rm] <images>: La opción -rm borra el container una vez finalizada su ejecución. Esto hara que no aparezca cuando se ejecuta docker ps.

docker inspect <container_id>: devuelve un json con toda la información del un container.

Mapeando puertos

sudo docker run -d -P <images> <command>: El comando -P automáticamente mapea los puertos espuestos en el container a un puerto aleatorio (de 49153 a 65535).  El puerto asignado se puede ver al realizar docker ps.

En este caso, el puerto se espuerto por el container de mongodb (27017) ha sido mapeado al 49153

sudo docker run -d -p <puerto_externo>:<puerto_container> <images> <command>: la opción -p <puerto_externo>:<puerto_container> permite definir el mapeo entre el puerto del container y el puerto espuesto.

Con esta configuración ya tendríamos un servidor de mongodb arrancado, accesible desde un cliente de BBDD Mongo (como por ejemplo robomongo). Solo deberiamos ejecutar boot2docker ip, para saber la ip de la maquina virtual, y configurar una nueva conexion con la ip obtenida, y el puerto 37017.

Puedes ver todas las opciones disponibles en el mapeo de puerto en la documentación oficial.

Conexión entre containers

Se puede hacer un container visible a otro a través de la opción de ejecución –link name:alias, donde se indica el nombre de un container existente, el nombre que utiliza el container que estamos ejecutando.

Por ejemplo, en este caso, iniciamos un container con postgres, y le ponemos de nombre db

Y desde la contenedor que ejecutamos una app python, realizamos el link.

NOTA: Los contenedores con nombre son únicos, y por tanto, si queremos remplazar uno existente con el mismo nombre, deberemos eliminarlo antes, o poner la opción -rm, para que se elimine automáticamente cuando  finalice.

Cuando se conecta a un container, docker crear un conjunto de variables de entorno:

que puede ser utilizadas en la configuración de nuestra conexión a la BBDD.

 

Puedes obtener más información en la documentación oficial de como conectar containers.

Be Sociable, Share!

About juanan