¿Cómo accedo a un contenedor con Docker?

Os explico como acceder a un contenedor de Docker desde la consola de comandos, en unos pocos pasos. Como no podía ser de otra manera, desde nuestras flamantes distribuciones GNU/Linux.

Entiendo que esta entrada, si ya estás familiarizado con la tecnología de contenedores o microservicios, no te servirá de mucho, aunque siempre viene bien refrescar conocimientos.

Acceder a un contenedor con Docker

Primero de todo hemos de partir de la base que el contenedor debe estar en ejecución, para ello usaremos docker exec. De esta manera podemos ejecutar un nuevo comando en el contenedor en ejecución. Además ese comando se asociará al proceso principal del contenedor (PID 1).

Nos debe quedar claro la diferencia entre docker exec y docker run, ya que el primero se encarga de ejecutar un comando en un contenedor que ya está funcionando, mientras que en el segundo caso, se utiliza para crear un contenedor a partir de una imagen, y a su vez ejecutar un comando.

A mode de ejemplo vamos a lanzar un comando cualquiera, por ejemplo, uptime o uname, tal y como se observa:

root@servubuntu01:/# docker exec -ti 0a5903c2b25f uptime
14:51:07 up 228 days,  4:36,  0 users,  load average: 0.09, 0.19, 0.22
root@servubuntu01:/# docker exec -ti 0a5903c2b25f uname -r
4.15.0-99-generic

Al indicar el parámetro -t utilizamos una «pseudo-TTY» y con el parámetro -i, lo hacemos de manera interactiva.

Ahora bien, para acceder al contenedor, lo que haremos es llamar al binario de bash, como sigue:

root@servubuntu01:/# docker exec -ti 0a5903c2b25f /bin/bash
root@0a5903c2b25f:/var/www/html#

Una vez hemos accedido, en mi caso, nos encontramos en la la carpeta de proyectos web, ya que se trata de un WordPress.

También nos podemos encontrar con el caso de querer utilizar un usuario que no sea ‘root‘, para ello debemos utilizar el parámetro -u,así:

root@servubuntu01:/# docker exec -ti -u usuario 0a5903c2b25f /bin/bash

Finalmente, también podemos indicar variables de entorno:

#Es un ejemplo general
docker exec -it -e VAR=1 /bin/bash

De la tecnologia de contenedores ya he hablado largo y tendido en la web, os invito a echar un vistazo 🙂

Entradas sobre Docker

Nos vamos leyendo.