Cómo utilizar wsl en docker (no el camino alrededor)

Quiero usar WSL en un contenedor de ventanas. Quiero que mi cáscara sea bash.exe (de la característica Wsl) EN el archivo del docker (i do do NO quiere msys2/relatives, pero WSL 1)

Lo intenté.

FROM mcr.microsoft.com/windows:1903
RUN dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 

Sin éxito. ¿Puede alguien insinuarme en el archivo dorado?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por techtrailblazer


4 Respuestas:

  • Usando un archivo fuente ISO de microsoft.com, he conseguido encontrar los "archivos de fuente" que faltan y habilitar la función WSL.

    Pero requiere un reinicio (y los archivos del módulo del núcleo para ser cargados) de brujo no puede hacer (AFAIK).

    Creo que usar WSL en Dockerfile es imposible.

    curl -L -o windows.iso https://software-download.microsoft.com/download/pr/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us_1.iso
    7z x "-i!sources/install.wim" windows.iso
    7z x "-i!1/Windows/WinSxS" sources/install.wim
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /Source:"%cd%/1/Windows/WinSxS"  /all /norestart
    del windows.iso
    rd /S /Q "sources"
    rd /S /Q "1"
    dir
    

    Respondida el Dec 18, 2020 a las 10:07 - por bughunterx

    Votos positivos: 0 | Votos negativos: 0

  • https://learn.microsoft.com/en-us/windows/wsl/install-win10

    Seguí estos doctores para instalar Ubuntu y Docker.
    Estoy usando Windows 10 Home x64 y está funcionando bien.

    Gracias.

    Respondida el Dec 18, 2020 a las 10:16 - por binarybuilder

    Votos positivos: 0 | Votos negativos: 0

  • Para utilizar WSL en un contenedor de Windows con Docker, necesitas realizar algunas configuraciones adicionales. Aquí te dejo los pasos:

    • Asegúrate de tener habilitado WSL en tu sistema Windows. Puedes hacerlo ejecutando el siguiente comando en PowerShell como administrador:

    bash
       dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
       

    • Luego, configura tu contenedor Docker para que utilice WSL como shell. Aquí tienes un ejemplo de Dockerfile:
    Dockerfile
    

    Utiliza una imagen de Windows como base

    FROM mcr.microsoft.com/windows:1903

    Instala Git en el contenedor

    RUN powershell -Command "Invoke-WebRequest -Uri 'https://github.com/git-for-windows/git/releases/download/v2.26.2.windows.1/Git-2.26.2-64-bit.exe' -OutFile 'git-installer.exe'" RUN .\git-installer.exe /VERYSILENT /NORESTART

    Establece bash.exe como shell predeterminado

    SHELL ["C:\\Windows\\System32\\bash.exe", "-c"]

    En este ejemplo, se instala Git en el contenedor y se configura bash.exe como el shell predeterminado.

    Espero que estos pasos te ayuden a utilizar WSL en un contenedor de Windows con Docker. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 19, 2020 a las 10:06 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Habilitar WSL 1 en una imagen de Docker de Windows

    Paso 1: Crear un archivo Dockerfile

    Crea un archivo llamado Dockerfile con el siguiente contenido:

    
    FROM mcr.microsoft.com/windows:1903
    RUN powershell -Command "Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux"
    

    Explicación:

    La primera línea especifica la imagen base de Windows (Windows 10 1903). La segunda línea ejecuta un comando de PowerShell para habilitar WSL 1.

    Paso 2: Compilar la imagen de Docker

    Compila la imagen de Docker con el siguiente comando:

    
    docker build -t wsl-image .
    

    Paso 3: Ejecutar un contenedor con Bash.exe

    Ejecuta un contenedor desde la imagen recién compilada y ejecuta Bash.exe como shell predeterminada:

    
    docker run -it --rm --entrypoint /bin/bash wsl-image
    

    Nota:

    El parámetro --entrypoint especifica Bash.exe como shell predeterminada dentro del contenedor. El parámetro --rm elimina automáticamente el contenedor después de que finalice.

    Ahora deberías tener un contenedor de Docker con WSL 1 y Bash.exe como shell predeterminada. Puedes ejecutar comandos de Linux directamente dentro del contenedor.

    Advertencia:

    Asegúrate de que WSL 1 esté habilitado en tu máquina host de Windows antes de ejecutar el comando de PowerShell en el Dockerfile. Si estás utilizando WSL 2, debes utilizar un archivo Dockerfile diferente con la imagen de Windows adecuada (por ejemplo, mcr.microsoft.com/windows:22h2).

    Respondida el Dec 19, 2020 a las 10:21 - por Gemini

    Votos positivos: 0 | Votos negativos: 0