Configuración de Docker para Windows y WSL para funcionar sin problemas



En este post se espera que ya tenga WSL configurado. Aunque el demonio de Docker no se puede ejecutar directamente en WSL, puede usar la CLI de Docker para conectarse a un demonio remoto de Docker que se ejecuta a través de Docker para Windows o cualquier otra máquina virtual que cree (en este artículo se tratan ambos métodos).

Si se pregunta «¿por qué no solo ejecutar docker.exe y docker-compose.exe de Docker para Windows directamente en WSL?», esto se debe a un error al ejecutar Docker o Docker Compose de forma interactiva en ese entorno. El TL;DR es que no se puede ejecutar nada en primer plano con el modo interactivo, lo que lo hace inutilizable para el desarrollo web real.

Pero con la CLI de Docker configurada para el host remoto de Docker para Windows es realmente impresionante! Con este método, las aplicaciones rails muy grandes responden en ~100ms (o ~5s cuando tienen que compilar más de 10.000 líneas de Javascript y SCSS). ¡Eso también es con volúmenes montados!

Utilizo esta configuración casi todos los días para las aplicaciones impulsadas por Rails, Flask, Phoenix, Node y Webpack. Es muy sólido en términos de rendimiento y fiabilidad.

Configurar Docker para Windows (Docker Desktop)

En la configuración general, querrá exponer el demonio sin TLS.

Docker para Windows se ha cambiado recientemente a Docker Desktop,por lo que si la configuración se ve ligeramente diferente de la captura de pantalla, no se preocupe. Es lo mismo.

blog/docker-for-windows-expose-daemon-without-tls.jpg

Menciona «usar con precaución» porque cada vez que haces una conexión de red que no está encriptada, vale la pena hablar de ello, pero en este caso es completamente seguro porque nunca nos estamos conectando a ella a través de una red pública.

Esto va a permitir que la instancia WSL local se conecte localmente al demonio de Docker que se ejecuta en Docker para Windows. El tráfico ni siquiera sale de la caja de desarrollo, ya que el demonio solo está enlazado a localhostpor lo que ni siquiera otras máquinas de la red local podrán conectarse. En otras palabras, es muy seguro que estos datos se transmitan a través de texto sin formato.

También es posible que desee compartir las unidades en las que planea que resida el código fuente. Este paso no es necesario, pero mantengo mi código en un HD secundario interno, así que también compartí mi unidad «E». Si lo hace, realice la configuración «Unidades compartidas» y habilítela.

¿No puedes usar Docker para Windows?

¡Esto solo es necesario si NO está ejecutando Docker para Windows!

Querrá configurar su propia máquina virtual para ejecutar Docker. Docker Tip #73 entra en detalles sobre cómo hacerlo e incluso incluye vínculos a vídeos sobre cómo configurar la máquina virtual.

Instale Docker y Docker Compose en WSL

¡Todo el mundo puede seguir este punto!

Todavía necesitamos instalar Docker y Docker Compose dentro de WSL porque nos dará acceso a ambas aplicaciones cli. No nos molestaremos en empezar el demonio de Docker.

Las siguientes instrucciones son para Ubuntu 18.04 / 20.04, pero si utiliza una distribución WSL diferente, puede seguir la guía de instalación de Docker para su distro de los documentos de instalación de Docker.

Instalar Docker

Puede copiar / pegar todos los comandos a continuación en su terminal WSL.

Ubuntu 18.04 / 20.04 notas de instalación tomadas de la documentación de Docker:
# Update the apt package list.
sudo apt-get update -y

# Install Docker's package dependencies.
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

# Download and add Docker's official public PGP key.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Verify the fingerprint.
sudo apt-key fingerprint 0EBFCD88

# Add the `stable` channel's Docker upstream repository.
#
# If you want to live on the edge, you can change "stable" below to "test" or
# "nightly". I highly recommend sticking with stable!
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# Update the apt package list (for the new apt repo).
sudo apt-get update -y

# Install the latest version of Docker CE.
sudo apt-get install -y docker-ce

# Allow your user to access the Docker CLI without needing root access.
sudo usermod -aG docker $USER

En este punto debe cerrar el terminal y abrir uno nuevo para poder ejecutar Docker sin sudo. ¡Será mejor que lo hagas ahora!

Instalar Docker Compose

Vamos a instalar Docker Compose usando PIP en lugar del binario precompilado en GitHub porque se ejecuta un poco más rápido (ambas siguen siendo aplicaciones de Python).

# Install Python 3 and PIP.
sudo apt-get install -y python3 python3-pip

# Install Docker Compose into your user's home directory.
pip3 install --user docker-compose

El siguiente paso es asegurarse de que $HOME/.local/bin esté establecido en su $PATH.

Puede comprobar si ya está configurado ejecutando echo $PATH. Dependiendo de la distro WSL que utilice, es posible que vea o no /home/nick/.local/bin (reemplace nick por su nombre de usuario).

Si está ahí, puedes ir y puedes saltar a la siguiente sección de este post.

Si no está allí, querrá agregarlo a su $PATH. Puede hacerlo abriendo su archivo de perfil con nano ~/.profile. A continuación, en cualquier parte del archivo, en una nueva línea, agregue export PATH="$PATH:$HOME/.local/bin" y guarde el archivo.

Por último, ejecute source ~/.profile para activar el nuevo $PATH y confirmar que funciona ejecutando echo $PATH. Deberías verlo allí ahora. ¡hecho!

Configurar WSL para conectarse a Docker para Windows

El siguiente paso es configurar WSL para que sepa cómo conectarse al demonio remoto de Docker que se ejecuta en Docker para Windows (recuerde, está escuchando en el puerto 2375).

Si no usa Docker para Windows y siguió la guía de Docker Tip #73 para crear su propia máquina virtual, probablemente ya lo hizo, lo que significa que puede omitir el siguiente comando.

Conéctese a un demonio remoto de Docker con este 1 revestimiento:

echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc

Eso sólo tiene que añadir la línea de exportación a su archivo .bashrc para que esté disponible cada vez que abra su terminal. Los comandos source recargan la configuración bash para que no tengas que abrir un nuevo terminal ahora mismo para que surta efecto.

Verificar que todo funciona

# You should get a bunch of output about your Docker daemon.
# If you get a permission denied error, close + open your terminal and try again.
docker info

# You should get back your Docker Compose version.
docker-compose --version

Garantizar el trabajo de montajes por volumen

Lo último que tenemos que hacer es configurar las cosas para que el volumen funcione. Esto me tropezó por un tiempo porque echa un vistazo a esto…

Al usar WSL, Docker para Windows espera que proporcione las rutas de volumen en un formato que coincida con esto: /c/Users/nick/dev/myapp.

Pero, WSL no funciona así. En su lugar, utiliza el formato /mnt/c/Users/nick/dev/myapp Honestamente, creo que Docker debería cambiar su camino para usar /mnt/c porque está más claro sobre lo que está pasando, pero esa es una discusión para otro momento.

Para que las cosas funcionen por ahora, tiene 2 opciones. Si está ejecutando Windows 18.03 (primavera de 2018) o más nuevo, puede configurar WSL para que se monte en / en lugar de /mnt y ya está todo listo. Si tienes 17.09 (otoño de 2017) tendrás que hacer otra cosa.

Estas son las instrucciones paso a paso para ambas versiones de Windows:

¿Ejecutando Windows 10 18.03+ o Newer?

En primer lugar, abra un terminal WSL porque necesitamos ejecutar algunos comandos.

Cree y modifique el nuevo archivo de configuración WSL:
sudo nano /etc/wsl.conf

# Now make it look like this and save the file when you're done:
[automount]
root = /
options = "metadata"

Tenemos que establecer root = / porque esto hará que sus unidades montadas en /c o /e en lugar de /mnt/c o /mnt/e.

La línea options = "metadata" no es necesaria, pero corregirá los permisos de carpeta y archivo en los soportes WSL para que todo no sea 777 todo el tiempo dentro de los soportes WSL. Recomiendo encarecidamente que hagas esto!

Una vez que realice esos cambios, cierre la sesión e inicie sesión en Windows para asegurarse de que los cambios surtan efecto. Win + L no es suficiente. Tendrás que hacer un cierre de sesión en toda regla / iniciar sesión.

Si recibes un error la próxima vez que inicies tu terminal WSL no te asustes.

Es un error con 18.03 y se puede solucionar fácilmente. Pulse CTRL + Shift + ECS para abrir el administrador de tareas, vaya a la pestaña «Servicios», busque el servicio «LxssManager» y reinícielo.

Esto parece suceder sólo si cierra la sesión de Windows en lugar de hacer un reinicio completo y probablemente se corregirá en un parche futuro de 18.03+.

Una vez hecho esto, estás listo. Podrás acceder a tus monturas y funcionarán perfectamente con Docker y Docker Compose sin ningún ajuste adicional. Por ejemplo, podrás usar .:/myapp en un archivo docker-compose.yml, etc.

¿Qué emulador de terminal está utilizando?

Si usa ConEmu, entonces querrás asegurarte de actualizar a la versión alfa más reciente (al menos 18.05.06+ que puedes ver en la barra de título de la configuración). Contiene un archivo wslbridge.exe parcheado para admitir un punto de montaje raíz WSL personalizado.

El terminal WSL de Ubuntu predeterminado es compatible con esto de forma predeterminada, por lo que todos son buenos. No sé si otros terminales apoyan esto todavía. Hágamelo saber en los comentarios.

¡Ya terminaste! Puede omitir los pasos de 17.09 a continuación si siguió los pasos anteriores.

¿Ejecutando Windows 10 17.09?

En primer lugar, abra un terminal WSL porque necesitamos ejecutar algunos comandos.

Enlazar puntos de montaje personalizados para corregir las diferencias de Docker para Windows y WSL:
sudo mkdir /c
sudo mount --bind /mnt/c /c

Querrá repetir esos comandos para las unidades que compartió, como d o eetc.

Compruebe que funciona ejecutando: ls -la /c. Debería ver la misma salida exacta que la ejecución ls -la /mnt/c porque /mnt/c está montado en /c.

En este punto eres de oro. Puede utilizar rutas de montaje por volumen como .:/myapp en sus archivos de Docker Compose y todo funcionará como normal. Eso es increíble porque ese formato es lo que los usuarios nativos de Linux y MacOS también utilizan.

Vale la pena señalar que cada vez que ejecute un docker-compose up, querrá asegurarse de navegar primero a la ubicación /c/Users/nick/dev/myapp de lo contrario su volumen no funcionará. En otras palabras, nunca acceda a /mnt/c directamente.

Técnicamente se podía utilizar un enlace simbólico en lugar de un montaje de enlace, pero me han quemado en el pasado cuando se trataba de usar enlaces simbólicos y tener ciertas herramientas no funcionan porque no las siguieron correctamente. Mejor seguro que lo siento aquí.

Sin embargo, siéntase libre de utilizar enlaces simbólicos dentro de WSL para acceder a su montaje de enlace. Por ejemplo, mi carpeta Dev vive todo el camino en /e/Backup/VMs/workstation/home/nick/Dev y no hay manera en heck siempre voy a escribir eso cuando quiera acceder a mis archivos de desarrollo.

Así que dentro de WSL creé un symlink con ln -s /e/Backup/VMs/workstation/home/nick/Dev ~/Dev y ahora sólo puedo escribir cd ~/Dev para acceder a mis archivos y todo funciona.

Configure automáticamente el soporte de enlace:

Desafortunadamente tendrás que ejecutar ese comando sudo mount cada vez que abras un nuevo terminal porque WSL no admite el montaje a través de /etc/fstab todavía (editar: lo hace en 18.09+, pero si estás usando 18.09+ debes seguir los pasos de 18.03+).

Pero podemos evitar esa limitación simplemente montándola en su archivo ~/.bashrc Esto está un poco sucio, pero por lo que sé, creo que esta es la única manera de hacerlo, así que si sabes de una mejor manera, por favor hágamelo saber.

Puede hacerlo con este 1 revestimiento: echo "sudo mount --bind /mnt/c /c" >> ~/.bashrc && source ~/.bashrc y asegúrese de repetir el comando para las unidades adicionales que compartió con Docker para Windows. Por cierto, no necesitas mkdir porque ya lo hicimos.

Sí, lo sé, eso significa que usted será rápido para su contraseña raíz cada vez que abra un terminal, pero podemos evitarlo también porque Linux es genial así.

Permita que el usuario vincule un soporte sin una contraseña raíz:

Para ello, ejecute el comando sudo visudo

Eso debería abrir nano (un editor de texto). Goto la parte inferior del archivo y añadir esta línea: nick ALL=(root) NOPASSWD: /bin/mount, pero reemplace «nick» por su nombre de usuario.

Eso sólo permite a su usuario ejecutar el comando sudo mount sin tener que proporcionar una contraseña. Puede guardar el archivo con CTRL + O, confirmar y salir con CTRL + CTRL + X.

Misión completa. Todos están listos para ganar en la vida mediante Docker para Windows y WSL.

blog/cards/getting-docker-for-windows-and-wsl-working-together.jpg

Instalar Pandas en windows


Resultado de imagen de pandas python

Pandas es una biblioteca de Python de código abierto que proporciona una herramienta de análisis y manipulación de datos de alto rendimiento utilizando sus poderosas estructuras de datos. El nombre Pandas se deriva de la palabra Panel Data, una econometría de datos multidimensionales.

En 2008, el desarrollador Wes McKinney comenzó a desarrollar pandas cuando necesitaba una herramienta flexible y de alto rendimiento para el análisis de datos.

Antes de Pandas, Python se usaba principalmente para la preparación y el procesamiento de datos. Contribuyó muy poco al análisis de datos. Pandas resolvió este problema. Con Pandas, podemos lograr cinco pasos típicos en el procesamiento y análisis de datos, independientemente del origen de los datos: cargar, preparar, manipular, modelar y analizar.

Python con Pandas se utiliza en una amplia gama de campos, incluidos los dominios académicos y comerciales, que incluyen finanzas, economía, estadísticas, análisis, etc.

Características clave de Pandas

  • Objeto DataFrame rápido y eficiente con indexación predeterminada y personalizada.
  • Herramientas para cargar datos en objetos de datos en memoria desde diferentes formatos de archivo.
  • Alineación de datos y manejo integrado de datos faltantes.
  • Remodelación y rotación de conjuntos de fechas.
  • División, indexación y subconjunto basado en etiquetas de grandes conjuntos de datos.
  • Las columnas de una estructura de datos se pueden eliminar o insertar.
  • Agrupar por datos para agregación y transformaciones.
  • Fusión y unión de datos de alto rendimiento.
  • Funcionalidad de series temporales.

1.1 ¿Cómo instalar pandas usando pip?

Si está utilizando la última versión de Pandas, ya tendrá pip instalado en su sistema. Por lo tanto, no es necesario que siga del paso 1 al 5. Para los usuarios que no tienen la última versión de Python (3.7.3), deben actualizarla.

Paso 1

Primero diríjase a https://www.python.org y haga clic en Descargas en la barra de navegación desde el

Paso 2

Asegúrese de descargar la última versión de Python . Versión 3.9.7, en este caso.

Paso 3

Al ejecutar el instalador descargado, obtendrá una nueva ventana. Haga clic en ‘ Instalar ahora ‘.

Paso 4

Después de finalizar la instalación, se recomienda elegir la opción para deshabilitar la longitud de la ruta para evitar problemas con la instalación de Python.

Paso 5

Ahora que Python está instalado, debe dirigirse a nuestra terminal o símbolo del sistema desde donde puede instalar Pandas. Así que vaya a la barra de búsqueda en su escritorio y busque cmd . Debería aparecer una aplicación llamada Símbolo del sistema . Haga clic para iniciarlo.

Menú Inicio: buscar cmd

Paso 6

Escriba el comando » administrador de instalación de pip «. Pip es un administrador de instalación de paquetes para Python y se instala junto con las nuevas distribuciones de Python.

Paso 7

Espere a que finalicen las descargas y, una vez que haya terminado, podrá ejecutar Pandas dentro de sus programas Python en Windows.

1.2. ¿Cómo instalar pandas usando Anaconda?

Se recomienda encarecidamente que los principiantes utilicen Anaconda para instalar Pandas en su sistema. Instalar Anaconda no solo es muy fácil, sino que también le brinda acceso a varias otras herramientas.

Paso 1

Dirígete a https://www.anaconda.com , una vez que estés allí, haz clic en el botón Descargar en la esquina superior derecha de la pantalla.

Paso 2

En la página de descargas, desplácese hacia abajo hasta que vea las opciones de descarga para Windows. Haga clic en el botón de descarga de Python 3.7 . Esto iniciará una descarga para el instalador de anaconda .

Paso 3

Siga las instrucciones de instalación que se muestran en las siguientes imágenes. Elija cualquier carpeta de destino según su gusto y desmarque » Agregar anaconda a mi variable de entorno PATH «.

Paso 4

Una vez finalizada la instalación, puede tener acceso a Pandas en su sistema . Anaconda instala todas las bibliotecas importantes para usted.

Paso 5

Cuaderno de Jupyter (opcional) : la mayoría de los proyectos de aprendizaje automático se tratan en los cuadernos de jupyter, por lo tanto, es importante saber cómo usarlo.

Primero, vaya a sus archivos de programa en el menú de inicio y busque “Anaconda Navigator”. Una vez que ingrese al programa, será recibido con una pantalla similar a la que se muestra a continuación. Inicie Jupyter Notebooks .

Paso 6

Una vez que haga clic en Iniciar para Jupyter Notebook, se abrirá automáticamente una ventana del navegador y mostrará la siguiente página. Haga clic en nuevo y luego en «Python 3 «

Interfaz de portátil Jupyter

Paso 7

Una vez que elija «python 3», lo llevará a una nueva pestaña, donde puede comenzar a codificar de una vez .