Category: Tips

Mover docker-desktop-data fuera de la Unidad del Sistema

Docker es una tecnología que con el devenir de los años ha ido cogiendo cada vez mayor relevancia. Sirve tanto como herramienta de desarrollo para trabajar de manera más ágil y eficiente con entornos y/o ciertas herramientas, a la vez que se consolida como pieza base en los despliegues de infraestructura orientada a servicio.

En su origen, inició su camino en sistemas GNU/Linux con el firme objetivo de facilitar los despliegues de software, automatizando y abstrayendo los mismos. Originalmente su primera implementación para sistemas Windows fue usando VirtualBox, para luego pasar a la virtualización de Hyper-V propietaria de Microsoft que supuso una mejora muy importante del rendimiento de Docker en Windows. El problema es que esta actualización supuso que al requerir de Hyper-V, obligaba a que se contara al menos con una versión Windows 10 Pro o superior. No fue hasta junio de 2019 cuando con la llegada de WSL2 (evolución de la primera versión de WSL de agosto de 2016) cuando se pudo contar con Docker en cualquier versión del sistema de Windows.

Pero aunque Docker es estupendo, ocupa bastante a nada que empiezas a trabajar con imágenes y pones en marcha contenedores...😅 Esto sumado a que la tónica habitual es instalar cualquier software en la unidad del sistema por defecto, o en el peor de los casos instalar en la unidad del sistema sin opción a elegir; hace que sea un fastidio que Docker se instale en la unidad del sistema C y además vaya aumentando el espacio que utiliza. Aunque realmente, lo que ocupa si estas usando WSL2 como backend de funcionamiento de Docker en Windows, son los datos de los contenedores que se guardan en docker-desktop-data.

Por defecto Docker Desktop para Windows creará la siguientes dos distros:

  • docker-desktop
  • docker-desktop-data

Si accedemos a la ruta "%LOCALAPPDATA%/Docker/wsl", veremos dos carpetas, y dentro de cada una de ellas hay un archivo vhdx. Para más detalle:

  • data/ext4.vhdx que es consumido por docker-desktop-data
  • distro/ext4.vhdx que es consumido por docker-desktop

En el que docker-desktop-data se usa para almacenar imágenes, etc. Por lo tanto, su tamaño aumentará en el futuro, y en consecuencia, nuestra unidad de sistema (C:) se quedará sin espacio. A continuación, se muestra paso a paso cómo sacar docker-desktop-data fuera de la unidad del sistema, por ejemplo, D:\desktop-docker\data.

🐋⚙️ Procedimiento

Paso1: Parar Docker

(Creo que esto ya te lo esperabas 😉)

Paso2: Exportar, desregistrar e importar la distro

1- Apagar todas las distros WSL

wsl --shutdown

2- Exportar docker-desktop-data a un fichero TAR

wsl --export docker-desktop-data E:\docker-desktop\docker-desktop-data.tar

3- Desregistrar la distro actual docker-desktop-data

wsl --unregister docker-desktop-data

4- Importar la distro docker-desktop-data desde el fichero TAR

wsl --import docker-desktop-data E:\docker-desktop\data E:\docker-desktop\docker-desktop-data.tar --version 2

👀 Nota: En este paso, podemos encontrarnos con el error de no poder crear una red específica. Simplemente vuelve a ejecutar el comando de importación.

Paso 3: Arrancar Docker

(Creo que esto TAMBIÉN te lo esperabas 😁)

Con este procedimiento ya tendremos Docker en una unidad que no es la del sistema, en la que el crecimiento de la distro docker-desktop-data no supondrá un problema, evitando degradar el rendimiento del sistema por llenar la unidad del sistema.

Configuración de entorno Python2 y Python3 para uso simultáneo en Debian

Si eres desarrollador de Python o usuario de su ecosistema, te habrás dado cuenta de la brecha existente entre ambos, significando una ruptura de compatibilidad el salto de Python2 a Python3.

Pese a que Python2 tiene fecha de caducidad todavía existen aplicaciones y librerías que bien porque no han sido migradas a Python3, o porque tienen dependencias con librerías que aún no se han migrado a Python3, siguen funcionado exclusivamente sobre Python2. Por eso se hace necesario mantener los dos interpretes de Python con su respectivo respectivo gestor de paquetes pip.

Quizás a la hora de abordar esta situación, la plataforma de Windows tenga la aproximación más razonable e interesante. En la instalación de Windows pueden convivir ambos intérpretes, siendo Python3 el que prevalece por defecto si ambos existen, quedando vinculadas las palabras python y pip al intérprete y gestor de paquetes de Python3 respectivamente.

Si queremos diferenciar la ejecución entre ambos, tenemos py2 para referirnos al intérprete de Python2 y py3 para el de Python3. De la misma manera, si queremos referirnos al gestor de paquetes de Python2 lo haremos con pip2 y para referirnos al de Python3 lo haremos con pip3.

Esta estupenda idea no se da en sistemas Debian y derivados como Ubuntu. A pesar de todo Debian 8 (Jessie) trae Python 3.4 y Debian 9 (Stretch) Python 3.5, en ambos casos junto con Python 2.7, siendo Python 2.7 el intérprete Python por defecto. Para tener ambos entornos vamos a realizar las una serie de configuraciones.

Para ellos vamos a crear los siguientes alias:

alias py2='/usr/bin/python2.7'
alias py3='/usr/bin/python3.4' # Para Debian 8 Jessie
alias py3='/usr/bin/python3.5' # Para Debian 9 Stretch

Con esto si ejecutamos py2 o py3 tendremos configurado ambos intérpretes para usarlos según nos convenga.

Ahora tenemos que instalar los gestores de paquetes pip para Python2 y Python3, para ello ejecutamos los siguientes comandos:

apt-get install python-pip  # python2
apt-get install python3-pip  # python3

Ahora generamos los alias:

alias pip2='/usr/bin/pip' # python2
alias pip3='/usr/bin/pip3' # python3

Si deseamos listar los alias registrar podemos hacerlo escribiendo "alias" o "alias -p". Si deseamos eliminar un alias sería "unalias nombre_del_alias" o "unalias -a" si queremos borrar todos.

Hasta aquí ya tenemos nuestros dos entornos para funcionar simultáneamente, pero cuidado:

⚠️ Los alias se pierden al cerrar la sesión

Para arreglarlo sólo tenemos que poner los alias que queramos tener en la sesión en el archivo ~/.bash_aliases:

alias py2='/usr/bin/python2.7'
alias py3='/usr/bin/python3.5' # Para Debian 8 Jessie
alias py3='/usr/bin/python3.5' # Para Debian 9 Stretch
alias pip2='/usr/bin/pip'
alias pip3='/usr/bin/pip3'

Para que se carguen al iniciar sesión tenemos que asegurarnos que en el archivo ~/.bashrc existan la siguientes líneas:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

En caso de no encontrarlas, puedes añadirlas al final del fichero. En el caso de estar usando el usuario root es muy probable que tengas que añadir las líneas.

Para abrir y editar los archivos puedes usar nano:

nano ~/.bashrc
nano ~/.bash_aliases

Llegados a este punto ya tenemos los entornos de Python2 y Python3 completamente configurados pudiendo elegir con qué ejecutar nuestras aplicaciones y pudiendo lanzar ejecuciones con ambos intérpretes de manera simultánea. 😉

 

Desbloquear el perfil DUN (Dial Up Networking) para compartir acceso a Internet en Android

¿Alguna vez te ha pasado que no has podido compartir vuestra conexión móvil en cierto dispositivo móvil? ¿Has llamado al soporte de tu compañía y no te han conseguido arreglar el problema? ¿Incluso has mirado foros especializados y nada? Pues la explicación de este problema y como resolverlo creo que te va a interesar.

Las compañías que te proveen Internet móvil se han vuelto muy cómodas e ignorantes y a día de hoy, por lo menos en España, aunque existen varias marcas, realmente son 4 holdings (Movistar, Orange, Vodafone y MásMóvil). La necesidad de crecer las lleva a absorber toda aquella empresa que les pueda hacer competencia o sacar ventaja, y esto da como resultado que la composición de las redes de estos grupos sean bastante heterogéneas en cuanto a su configuración. Esto no sería un problema si no fuera porque no se preocupan más que de que tu teléfono le funcionen los datos y da igual cómo, ignorando los perfiles de comunicación que usa la marca y si estos están activados o no en los dispositivos de manera estándar.

Si has leído hasta aquí habrás intuido que ciertas cosas funcionan por "chiripa" y no vas desencaminado. Si para poder compartir tus datos te han comentado desde el soporte que actives en el APN (en Ajustes->Redes móviles) el perfil de línea conmutada DUN (Dial Up Networking), o lo has visto como solución en un foros especializado, y no te ha funcionado es porque tu móvil no lo tiene convenientemente pre-configurado.

En realidad este perfil viene desactivado en bastante móviles y algunas marcas no utilizan el perfil DUN para posibilitar la compartición de datos desde el móvil.

Si eres curioso por los perfiles del APN que ves te dejo una peque lista de los más comunes:

  • default: configuración por defecto para la conexión a Internet.
  • mms: (Multimedia Messaging System) permite el envío de mensajes MMS.
  • supl: (Secure User Plane Location), permite que el teléfono determine la ubicación geográfica mediante posicionamiento GPS.
  • dun: (Dial Up Networking), permite compartir Internet con otros terminales mediante tethering.
  • wap: (Wireless Application Protocol) y está relacionada con la navegación a través de la red móvil (al seleccionar el perfil default no es necesario marcarla).

Si te has fijado el perfil WAP queda absorbido por default, pero el perfil DUN que debería estar también absorbido por el perfil default en algunas compañías no lo está y es aquí donde se encuentra el problema. Si por alguna razón tu dispositivo móvil no tiene configurado el perfil DUN a nivel de sistema, por mucho que lo configures en el APN no tendrá efecto.

Una vez definido el problema, es cómo solucionarlo. En el caso de Android, la solución puede ser más o menos sencilla dependiendo de si tenemos acceso root o no. Dicho acceso permite acceder a la administración completa desde el dispositivo. dependiendo el dispositivo que tengas y la versión de Android que tenga esto puede ser más o menos sencillo. Yo voy a explicarlo usando la herramienta Kingo Root, la cual me funcionó y es relativamente sencillo hacerlo.

Para ello procedemos a la descarga el instalador .apk en nuestro dispositivo, pero para eso antes deberemos desactivar el "Play Protect". Vamos al Play Store:

Y en Play Protect, desactivamos "Buscar amenazas de seguridad":

Esto es a causa de que Google defiende el sistema para evitar que sea "rooteado".

Instalamos la aplicación. Si no desactivamos "Play Protect" obtendremos mensajes como estos que nos bloquean la instalación:

O que nos invitan desinstalarla:

Si no es nuestro caso, una vez instalada nos arrancará la aplicación y le damos a "ROOT NOW":

La aplicación nos irá mostrando el progreso realizado:

Si volvemos a la pantalla principal del la aplicación veremos el mensaje "HAVE ROOT" con un círculo verde que nos indica que nuestro dispositivo ha sido rooteado:

En estos momentos ya tenemos posibilidad de gestionar permisos root. Ahora deberemos instalar el gestor de ficheros Es Explorado de Archivos, un explorador de archivos enriquecido con funcionalidades de todo tipo, entre la que se encuentra el la posibilidad de ver los archivos del sistema marcando la opción "Explorador Root":

Y tras lo cual nos pedirá los permisos root a "Kingo SuperUser", a lo que damos a "PERMITIR":

Ahora vamos a necesitar otra aplicación llamada aSQLiteManager. Con ella instalada vamos a movernos a la siguiente ruta con ES Explorador de Archivos:

/data/data/com.android.providers.settings/databases/settings.db

Al abrirlo nos hará como ES Explorador de Archivos y pedirá permisos root a "Kingo SuperUser" para aSQLiteManager:

El propio aSQLiteManager nos volverá a preguntar si queremos dar acceso root:

Por precaución creamos una copia de settings.db (por si algo fuese mal poder restaurar la original) y lo abrimos con aSQLiteManager:

El mensaje que nos aparece es meramente informativo y le damos a "OK". Tras lo cual nos abrirá finalmente la base de datos:

Aquí tenemos en esta base de datos gran parte de la información  de configuración del funcionamiento de Android. Para arreglar nuestro problema con las interfaces DUN agregaremos una entrada en la base de datos:

Rellenamos únicamente el campo name con tether_dun_required y el campo value con 0. El _id es mejor dejarlo libre ya que se trata de un valor auto-incrementado, cogerá el siguiente disponible. Cuando le demos a "OK" veremos como queda añadida la nueva entrada:

Al salir de la base de datos nos preguntará si queremos hacer "commit" de los cambios realizados a lo que afirmamos de manera afirmativa dándole a "Sí":

Un vez hemos hecho esto debería funcionar nuestro tethering y podremos compartir nuestros datos con otros dispositivo mediante la generación de un punto WiFi.

Al meter la entrada que hemos metido en la base de datos, se ha desactivado la obligatoriedad del uso requerido del perfil DUN para hacer tethering. Las operadoras que no configuran un perfil DUN en su APN no se ven afectadas por esta configuración ausente en algunos dispositivos y del valor por defecto que se le asigna el sistema operativo que evita que funcione.

Una vez hemos acabado la faena, mantener permisos root y por consiguiente rooteado el dispositivo, personalmente no me parece una buena idea, con lo que procederemos a "desrootear" el mismo. Para ello vamos a Kingo SuperUser y buscamos la sección de "Ajustes":

Le damos a "Eliminar Root":

Confirmamos que queremos proceder a su eliminación dando en "CONTINUAR":

Ahora si accedemos a

En Ajustes buscamos Kingo SuperUser nos mostrará un mensaje "NO ROOT" con un círculo rojo que nos indica que nuestro dispositivo ha sido desrooteado:

Ya hemos terminado y hemos dejado nuestro dispositivo como al inicio pero con la posibilidad de compartir datos haciendo tethering desde el móvil.

 

Activar y poner en marcha revisor ortográfico en Firefox

Firefox es un excelente navegador que ha mejorado bastante desde su resurgimiento con la versión 54 que traía un increíble rediseño que por fin permitía quitarse a Firefox los años de desarrollo que tenía a sus espaldas y así limpiar su factura técnica completamente con el lanzamiento de Firefox Quantum (versión 57). Desde entonces no ha parado de correr hacia adelante para intentar arrebatarle el trono a Chrome.

Desde esa versión 54 con la que Firefox llamó mi atención en junio de 2017, fue desplazando a Chrome como mi navegador predeterminado, tanto en mis equipos personales como móviles. No me he desprendido de Chrome, ya que sigue siendo el navegador más extendido, pero ahora ocupa el número dos de mi lista de preferencias.

Una de las cosas que recientemente eché en falta es el tener un corrector ortográfico, sobre todo cuando escribes en otros idiomas que no es el tuyo materno, y reconozcámoslo, para el materno también viene bien porque te ahorra alguna que otra vez pasar vergüenza por ir corriendo como vamos siempre 😉 . Por ello hoy os traigo cómo instalar diccionarios en Firefox y cómo cambiar entre los diccionarios instalados para la revisión ortográfica.

Lo primero comprueba que tienes la revisión ortográfica activada mientras escribes. Ve a al desplegable de opciones de las 3 rayas en la parte superior derecha de Firefox, selecciona Opciones y busca la sección Idiomas y selecciona la opción "Revisar la ortografía según escribe".

Una vez activado sólo nos queda poner los diccionarios que queramos. Para ello vamos a la siguiente página que nos lista generosamente todos los diccionarios:

https://addons.mozilla.org/es/firefox/language-tools/

La columna que nos interesa es la de Diccionarios, no la de Paquetes de Idiomas. Buscamos el diccionario, lo seleccionamos y nos llevará a otra página donde habrá un botón que pone "+ Agregar a Firefox". Le damos a dicho botón.

Le damos a "Aceptar" y ya tendremos instalado el diccionario. De esta forma podemos instalar tantos diccionarios como queramos. Podremos siempre gestionar los diccionarios desde la sección de complementos, si por ejemplo queremos borrarlos, que está disponible desde el desplegable de opciones de las 3 rayas en la parte superior derecha de Firefox, Complementos y Diccionarios.

Ahora ya sólo resta usarlo y su funcionamiento es extremadamente sencillo. En cualquier entrada de texto del navegador veréis que marca en rojo cualquier palabra con error ortográfico que podremos corregir dando con el botón derecho sobre la palabra y seleccionando la opción correcta de las propuestas, o incluso añadirla al diccionario si no estuviera.

Desde el botón derecho es posible si se desea desactivar la corrección de ortografía o cambiar el idioma contra el que se comprueba la ortografía, seleccionado entre los que tienes añadidos o añadiendo un diccionario nuevo si fuera necesario.

Ahora ya tenemos nuestro Firefox preparado para revisar fallos ortográficos mientras escribimos un email, un comentario en tu red social favorita o una entrada en tu blog.