Comunicar contenedores de Docker entre sí
Otro escenario super útil es comunicar contenedores entre sí. Ayer estuve jugando con un volumen y una base de datos postgres. Hoy quiero mostrarte cómo utilizar otro contenedor para conectarte a esa base de datos. Además, una vez finalice las operaciones con la misma, el contenedor que hace de cliente se eliminará automáticamente.
El inicio del script es exactamente igual que el de ayer. Sin embargo, el segundo contenedor que creo hoy tiene los siguiente parámetros:
- -it: en los procesos que son interactivos se utiliza este parámetro para asociar el terminal en el que estamos ejecutando los comandos con el terminal que se ejecutará en el contenedor. De esta manera podemos interactuar con el contenedor desde el host.
- –rm: Es una manera muy elegante de eliminar un contenedor que sólo estás usando puntualmente, en este caso para conectarte a una base de datos. Lo que estamos diciendo es que cuando la ejecución del terminal finalice en el contenedor este será eliminado.
- –link: a través de este parámetro conseguimos comunicar de forma segura nuestros dos contenedores. mypostgres es el nombre del primer contenedor que has creado y postgresdb es cómo quiero llamarlo dentro de mi nuevo contenedor.
- –name postgres client: el nombre que tendrá el contenedor que voy a generar con este comando.
- postgres: la imagen que quiero usar para el contenedor.
- sh: el comando que voy a ejecutar una vez se cree y ejecute el contendor. En este caso sh, que es para ejecutar una shell.
Una vez que el contenedor esté creado, y esté lanzado un terminal dentro del mismo, ejecuto las acciones que necesite, en este caso una SELECT. En el momento que lance el comando exit el contenedor se eliminará por completo, gracias a la opción –rm. Por último, elimino el contenedor que tiene asociada la base de datos y el volumen donde se está almacenando la misma, como ya te expliqué ayer. Aquí encontrarás más información sobre el comando docker run.
Imagen de portada por kyohei ito.
¡Saludos!