miércoles, 23 de marzo de 2016

Docker: acceso interactivo a consola


Un contenedor docker puede haber sido arrancado sin mapeo de puertos y sin sesión interactiva. En esos casos podemos albergar dudas sobre qué está ocurriendo en él. Otras veces queremos descubrir qué directorio interno debemos mapear con un volumen para conservar los cambios. Todo eso es posible de averiguar abriendo una sesión interactiva de shell con nuestro contenedor sin alterar su estado.

Cogemos de nuevo el post anterior y los contenedores que se crearon:
$ sudo docker ps -a
CONTAINER ID        IMAGE               [...]   NAMES
87a11363c32f        wordpress:latest    [...]   WPwordpress         
1eda9845dc71        mysql:latest        [...]   WPmysql             

Vamos a hacer una incursión con sesión interactiva para administrar algo de ambos.

Acceder por shell a un contenedor en ejecución

"docker attach" solo permite una conexión simultánea. Es incómodo y además attach detiene la ejecución del contenedor cuando salimos de la sesión interactiva. Usaremos la fórmula siguiente para abrir tantos shell como deseemos y no afectar al estado del contenedor.
$ sudo docker exec -i -t 87a11363c32f bash

Para salir simplemente "exit"
root@87a11363c32f:/var/www/html# exit

Gestionamos algo del contenedor Wordpress
Al entrar vemos donde están los contenidos estáticos y los PHP de Wordpress. Deberíamos hacer un mapeo a un volumen externo.
root@87a11363c32f:/var/www/html# ls
index.php    readme.html wp-admin wp-comments-post.php  wp-config.php  
wp-cron.php  wp-links-opml.php  wp-login.php  wp-settings.php  wp-trackback.php
license.txt  wp-activate.php  wp-blog-header.php  wp-config-sample.php  wp-content     
wp-includes  wp-load.php   wp-mail.php   wp-signup.php    xmlrpc.php


Conexión a una base de datos dentro del contenedor
Vamos a conectarnos a la base de datos con el cliente propio del contenedor:
root@goku:~# sudo docker exec -i -t 1eda9845dc71 bash
root@1eda9845dc71:/# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
root@1eda9845dc71:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29
Server version: 5.7.11 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show schemas;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

Hemos podido acceder al contenido, previa entrada a la consola del contenedor.

No hay comentarios: