COMPROBACION DE PROBLEMAS CON DOCKER Y SOLUCION DE LOS MISMOS

(Comprobación de problemas con Docker en Windows)

 

1.       COMPROBACIÓN DE PROBLEMAS

Para comprobar los posibles problemas que pueda estar teniendo Docker en nuestra maquina podemos ejecutar el siguiente comando para comprobarlo. Para ello tendremos que abrir PowerShell de Windows como administrador y ejecutar el siguiente comando.

Invoke-WebRequest https://aka.ms/Debug-ContainerHost.ps1 -UseBasicParsing | Invoke-Expression

 

Una vez ejecutado hará una serie de testeos en el sistema para ver si cumple todos los requisitos para el correcto funcionamiento de Docker y nos saldrá por pantalla algo como lo siguiente:

Ejemplo sin errores: (Todo sale en verde)

Checking for common problems
Describing Windows Version and Prerequisites
 [+] Is Windows 10 Anniversary Update or Windows Server 2016 79ms
 [+] Has KB3192366, KB3194496, or later installed if running Windows build 14393 21ms
 [+] Is not a build with blocking issues 30ms
 [+] Has 'Containers' feature installed 1.75s
Describing Docker is installed
 [+] A Docker service is installed - 'Docker' or 'com.Docker.Service'  32ms
 [+] Service is running 22ms
 [+] Docker.exe is in path 2.05s
 [+] Docker is registered in the EventLog service 20ms
Describing User has permissions to use Docker daemon
 [+] docker.exe should not return access denied 32ms
Describing Windows container settings are correct
 [+] Do not have DisableVSmbOplock set to 1 32ms
 [+] Do not have zz values set 22ms
 [+] Do not have FDVDenyWriteAccess set to 1 30ms
Describing The right container base images are installed
 [+] At least one of 'mcr.microsoft.com/windows/servercore' or 'mcr.microsoft.com/windows/nanoserver
' should be installed 136ms
Describing Container network is created
 [+] At least one local container network is available 3.23s
 [+] At least one NAT, Transparent, or L2Bridge Network exists 58ms
 [+] NAT Network's vSwitch is internal 74ms
 [+] Specified Network Gateway IP for NAT network is assigned to Host vNIC 150ms
 [+] NAT Network's internal prefix does not overlap with external IP' 66ms

 

Ejemplo con errores: (Salen en rojo y con las las crucetilla a menos)

 

Describing The right container base images are installed
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/images/json: open //./pipe/docker_engine: Access is denied.
 [-] mcr.microsoft.com/windows/servercore is installed 196ms
   Expected: value to not be empty
   15:         $serverCoreImages | Should Not BeNullOrEmpty
   at <ScriptBlock>, C:\Users\Patrick\Source\Virtualization-Documentation-Private\windows-server-container-tools\Debug-ContainerHost\ContainerImage.Tests.ps1: line 15
 [-] mcr.microsoft.com/windows/nanoserver is installed 69ms
   Expected: value to not be empty
   20:         $serverCoreImages | Should Not BeNullOrEmpty
   at <ScriptBlock>, C:\Users\Patrick\Source\Virtualization-Documentation-Private\windows-server-container-tools\Debug-ContainerHost\ContainerImage.Tests.ps1: line 20
Describing Docker is installed
 [+] A Docker service is installed - 'Docker' or 'com.Docker.Service'  115ms
 [+] Service is running 54ms
 [+] Docker.exe is in path 1.07s
Describing User has permissions to use Docker daemon
 [-] docker.exe should not return access denied 126ms
   Expected: file {err.txt} to not contain access is denied but it did
   23:         "err.txt" | Should Not Contain "access is denied"
   at <ScriptBlock>, C:\Users\Patrick\Source\Virtualization-Documentation-Private\windows-server-container-tools\Debug-ContainerHost\Docker.Tests.ps1: line 23

Describing Windows Version and Prerequisites

[+] Is Windows 10 Anniversary Update or Windows Server 2016 Describing Windows Version and Prerequisites
 [+] Is Windows 10 Anniversary Update or Windows Server 2016 256ms
 [+] Has KB3192366 installed if running Windows build 14393 914ms
 [+] Is not a build with blocking issues 31ms
Describing Windows container settings are correct
 [+] Do not have DisableVSmbOplock set 79ms
 [+] Do not have zz values set 35ms
Tests completed in 2.95s
Passed: 8 Failed: 3 Skipped: 0 Pending: 0 Inconclusive: 0
 

 

A continuación, describo todas las comprobaciones que hace con las posibles soluciones.

 

 

(La versión que tiene instalada de Windows no es correcta y será necesario actualizar, hay que tener en cuenta que Docker solo funciona en Windows Server 2019 en adelante.)

[+] Has KB3192366, KB3194496, or later installed if running Windows build 14393

Es necesario tener el sistema operativo actualizado, para esto es necesario que nuestro equipo este en la versión 14393 o superior para que este se ejecute correctamente. Para comprobar la versión que tenemos instalada podemos ejecutar en la aplicación de Ejecutar de Windows

winver.exe

 

[+] Is not a build with blocking issues

Esta compilación de Windows no es compatible para ejecutar contenedores. Esta prueba falla si encuentra una compilación con problemas conocidos.

 

[+] Has 'Containers' feature installed

Función contenedores esta deberia instalarse antes que Docker Desktop pero puede instalarse después y no debería dar problemas.

Enable-WindowsOptionalFeature -Online -FeatureName containers -All

 

Describing Docker is installed

[+] A Docker service is installed - 'Docker' or 'com.Docker.Service'

Si esto falla Docker Engine no está instalado, en teoría esto lo debería instalar sin problema Docker Desktop.

[+] Service is running

El servicio de Docker no esta funcionando, este debería iniciarse sin problemas cuando este abierto Docker Desktop pero podemos iniciarlo manualmente con el siguiente comando.

net start Docker

 

Podemos también iniciarlo buscando Docker Desktop en el menú de inicio y ejecutarlo.

[+] Docker.exe is in path

No tiene acceso a la ruta de Docker podemos cerrar sesión y volver a iniciarla a ver si el problema persiste en caso de que si la mejor opción es reinstalar Docker Desktop.

[+] Docker is registered in the EventLog service

Docker no está registrado en el servicio de eventos para resolver esto podemos ejecutar el siguiente archivo de registro.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\docker]
"CustomSource"=dword:00000001
"EventMessageFile"="C:\\Program Files\\docker\\dockerd.exe"
"TypesSupported"=dword:00000007

 

Describing User has permissions to use Docker daemon

[+] docker.exe should not return access denied

Para resolver este error intente ejecutar PowerShell con privilegios de administrador.

 

Describing Windows container settings are correct

[-] Do not have DisableVSmbOplock set

Esto era necesario para probar contenedores de Windows utilizando Windows Server 2016 TP5. Ya no es necesario y puede causar problemas.

[+] Do not have zz values set

Estos valores de registro no deberían ser necesarios y se pueden eliminar. Algunas versiones de prueba anteriores las necesitaban como soluciones alternativas en el pasado, pero no deberían ser necesarias.

[+] Do not have FDVDenyWriteAccess set to 1

Esta es una clave de registro establecida por una configuración de política de grupo "Denegar acceso de escritura a unidades fijas no protegidas por Bitlocker". Para obtener más detalles al respecto, consulte technet . Si sus máquinas están unidas al dominio de Active Directory, entonces esta política debe modificarse; de ​​lo contrario, la clave de registro se sobrescribirá la próxima vez que se sincronice la Política de grupo.

Puede causar problemas con los contenedores de Windows porque los archivos VHD se utilizan para el almacenamiento temporal de los contenedores. Esto puede provocar fallos en docker loado docker pull. Esto se describió en los números 355 y 530 .

Los productos antivirus que no se han actualizado y validado según la optimización antivirus para contenedores de Windows también pueden provocar errores similares sin este valor de registro establecido. Si esta prueba pasa pero aún tienes problemas con docker pully docker load, intenta actualizar o desactivar el antivirus como siguiente paso para solucionar el problema.

Describing The right container base images are installed

[+] At least one of 'mcr.microsoft.com/windows/servercore' or 'microsoft/nanoserver' should be installed

Esto siempre me da error pero no afecta al funcionamiento ya que lo único que espera es tener instalado un contenedor de Windows que para colmo no se puede instalar porque no funciona.

En teoría hay que instalar uno de los siguientes dos para que funcione.

pull mcr.microsoft.com/windows/nanoserver
-----
docker pull mcr.microsoft.com/windows/servercore

 

Describing Container network is created

[+] At least one local container network is available

Comprueba que al menos una red está disponible en los contenedores.

[+] At least one NAT, Transparent, or L2Bridge Network exists

Esto puede dar error y no es un problema siempre y cuando el anterior no lo de ya que comprueba distintas tipologías de red y no tiene por que ser necesarias.

[+] NAT Network's vSwitch is internal

Comprueba si vSwitch es interno para la red NAT pero tampoco es necesario si no tenemos configurada una red NAT.

[+] A Windows NAT is configured if a Docker NAT network exists

Comprueba si existe esta red NAT configurada para Windows esto es necesario si queremos que nuestros contenedores accedan a internet.

[+] Specified Network Gateway IP for NAT network is assigned to Host vNIC

[…]

[+] NAT Network's internal prefix does not overlap with external IP'

Cuando se utiliza la traducción de direcciones de red (nat) con contenedores, el rango de direcciones IP internas debe estar separado del rango externo. Si se superponen, entonces deberá eliminar la red con docker network remove y crear una nueva con docker network create.

 

 

Referencias:

https://github.com/MicrosoftDocs/Virtualization-Documentation/blob/live/windows-server-container-tools/Debug-ContainerHost/README.md

https://learn.microsoft.com/es-es/virtualization/windowscontainers/troubleshooting

 

Detalles del articulo

ID de artículo:
5
Categoría:
valoración :