Monitorear contenedores con Portainer

Monitorear contenedores con Portainer

[:es]Portainer es una aplicación web open source, que permite gestionar de forma muy fácil sus contenedores Docker.
Básicamente, permite hacer todo lo que permite el cliente docker, pero en una interfaz web bonita e intuitiva.

Instalar Portainer

docker pull portainer/portainer

Existe también una versión para Windows host (portainer/portainer:windows)

Levantar Portainer

docker run --name portainer -d \
    -p 9000:9000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer

El mapeo de puerto sirve para que sea accesible la interfaz web en el puerto 9000.
El primer mapeo de volúmen sirve para que Portainer tenga acceso al socket del Docker engine (ese mapeo no funcionará con Windows).
El segundo mapeo de volúmen sirve para guardar los datos internos de portainer.

Entrar a Portainer

Ir a http://localhost:9000 en su navegador preferido.

Al principio, Portainer le va pedir que entre una nueva contraseña:

Después le pedirá que inicie una sesión con la contraseña recién creada:

Al seguir le mostrara esta pantalla:

Seleccione “Manage the Docker instance where Portainer is running”:

Esto significa que Portainer va monitorear los contenedores que están en la misma máquina donde esta corriendo.
La otra opción permite conectarse a un Docker host distante.
Ojo: Eso no funciona si el host corre sobre Windows, en Windows el Docker engine ocupa un “named pipe” en lugar de un unix socket para exponer su API Rest y Portainer no lo esta soportando todavía.

Haga click en “Connect” y aparece el “Dashboard” de Portainer:

Vamos revisar las imágenes primero, haga click en “Images“:

Eso corresponde a lo que se puede obtener en un terminal escribiendo:

docker image ls

o

docker images

Sin embargo, tiene algunas ventajas:
– Se pueden clasificar las imágenes por tamaño o por tag, cuando en la consola siempre aparecen clasificadas por fecha.
– Una imagen con dos tags aparecerá en dos líneas en la consola, y en Portainer dos tags en una sola línea.
– Esa pantalla facilita mucho la supresión de imágenes, mediante los checkboxes y el botón “Remove”.
– La posibilidad de filtrar las imágenes por alguna parte de su tag es muy conveniente si se tienen muchas.

Haciendo click en el ID de una imagen se puede obtener más detalle:

En esta pantalla se pueden ver informaciones útiles como los puertos y los volúmenes que expone esa imagen.
También se pueden agregar y borrar los tags de la imagen.

Ahora vamos a revisar los contenedores, haciendo click en “Containers” en el menú lateral:

Aquí se pueden parar, borrar, reiniciar, pausar, matar los contenedores y levantar nuevos.
Como en la lista de imágenes, esa lista con posibilidad de filtrar y clasificar es muy conveniente.
También se puede ver el detalle de un contenedor haciendo click en su nombre:

Esa pantalla permite:
– Ver informaciones del contenedor (docker inspect)
– Guardar el contenedor en una imagen nueva (docker commit)
– Ver los logs del contenedor (docker logs)
– Ver las estadísticas del contenedor (docker stats)
– Logearse en el contenedor (docker exec)
– Desconectar el contenedor de una red (docker network disconnect)
– Y todas las operaciones común y corrientes como parar, pausar, matar o borrar el contenedor

Las pantallas “Volumes” y “Networks” permiten de la misma forma de visualizar, suprimir o agregar volúmenes y redes:

La pantalla “App Templates” facilita la creación de contenedores, propone varios modelos para configurar rápidamente Redis, MongoDB, Postgres, Nginx, ElasticSearch, entre otros.


Como ejemplo, vamos hacer click en el logo “WordPress”, ya, se muestra un pequeño formulario, pero ese formulario tiene un campo “MySql Database host” que pide seleccionar un contenedor, y no lo tengo, entonces vamos primero armar un MySql haciendo click en el logo “MySql”, acá solo me pide un nombre y la contraseña root, y eso lo puedo manejar:


Haga click en “Create” para finalizar, Portainer me redirige en la lista de contenedores y acá está mi contenedor MySql !
Puedo volver en el template WordPress y indicarle el “MySql Database host”:


Le indico también la contraseña que establecí para el MySql y hago click en “Create” para finalizar, lo que me redirige en la lista de contenedores:

Ya tengo mi WordPress corriendo, puedo acceder haciendo click en el número de puerto que está en la columna “Published Ports” donde dice 32769:80 en mi captura:

Así de fácil! 🙂

Conclusión

Portainer es una herramienta que permite manejar contenedores Docker con mucha facilidad, incluso en Windows y en máquinas distantes.
Es ideal para los que no son cómodos con la consola y permite hacer casi todo lo que se puede hacer con el docker-cli.
Les recomiendo probarlo.

Mas información en http://portainer.io/overview.html
[:en]Portainer is an open-source web application, which allows to handle easily your Docker containers.
In a nutshell, it let you do all the same than the Docker client, but with a nice and intuitive web interface.

Install Portainer

docker pull portainer/portainer

There is a Windows version too (portainer/portainer:windows)

Run Portainer

docker run --name portainer -d \
    -p 9000:9000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer

The port mapping is used to make the web interface accesible at port 9000.
The first volume mapping is used to give access Portainer on the socket for the docker engine (this won’t work on Windows).
The second volume mapping is used to keep Portainer internal data.

Access Portainer

Go to http://localhost:9000 in your favorite browser.

At start, Portainer will ask you for the admin password:

Then it will ask you this password to init the session:

Afterwards comes this screen:

Select “Manage the Docker instance where Portainer is running”:

This means that Portainer will monitor the containers of the host machine where he is running.
The other option allows connect on a remote Docker host.
Warning: This will not work on Windows host, because Windows use named pipe instead of unix socket to expose its Rest API and Portainer does not support it right now.

Click on “Connect” and the Dashboard of Portainer shows up:

We will check the images first: click on Images:

That´s what we could see in a terminal with the command:

docker image ls

or

docker images

But there are some advantages:
– You can sort images by size or tag, when in the terminal they always display sorted by date.
– An image with two tags would display two lines in the terminal, here two tags show up in the same line.
– This screen make it easy to delete images, using those checkboxes and the “Remove” button.
– Be able to filter images by part of their tag is really useful when you have a bunch.

Clicking on the ID of an image gives more details on it:

Here you can see useful data like ports and volumes that the image exposes.
You can add and delete tags for the image too.

Now we will see the containers, clicking on Containers of the lateral menu:

Here you can stop, remove, restart, pause kill container and run new ones.
As with images, this list view with filter and sort abilities is very convenient.
Y like for images you can see the details of a container clicking on its name:

On this screen you can:
– See informations of the container (docker inspect)
– Save the container into a new image (docker commit)
– See the logs of the container (docker logs)
– See the statistics of the contenedor (docker stats)
– Log in the contenedor (docker exec), but with bash or sh only.
– Disconnect the container out of a network (docker network disconnect)
– Y all commons operations like stop, pause, unpause, kill, remove the container

The screens “Volumes” and “Networks” allow to list, delete or add volumes and networks:

The “App Templates” screen make it easy to create containers, it purposes some templates to quickly config Redis, MongoDB, Postgres, Nginx, ElasticSearch, among others.


As an example, we will click on the “WordPress” logo, yeah, a little form shows up, but that form has a “MySql Database host” field asking to select a container, and I don’t have one, so we will first setup a MySql clicking on the “MySql” logo, here it justs asks for a name and the root password, that, I can handle:


Click on “Create” to finalize, Portainer redirects to the containers list and here is MySql !
Now I can go back to the WordPress template and give it the “MySql Database host” and the MySql password:


Click on “Create” to finalize, and you’ll be redirected to the containers list:

I got my WordPress running, and I can access it clicking on the port number which is in the “Published Ports” column where it says 32769:80 in my screenshot:

That was so easy ! 🙂

Conclusion

Portainer is a nice tool that allows to handle Docker containers really intuitively, on Windows included and on remote servers.
It is ideal for those who are not comfortable with the terminal command line and it allows to do almost all the things you do with the docker-cli.
I recommend you try it

More information on http://portainer.io/overview.html
[:]