web-dev-qa-db-fra.com

"tls: enregistrement surdimensionné reçu avec une longueur de 20527" essayant de "exécuter le menu fixe" à partir de Win10 WSL Bash uniquement

la reproduction

Le dernier Docker Edge (18.03.0-ce-rc1-win54 (16164)) installé sur Win10.

Basculé sur "Conteneur Linux" avant la mise à jour vers la dernière version de Docker CE Edge (mais la dernière interface utilisateur "Docker pour Windows" n'indique plus l'option de commutateur?!).

Aucun problème pour exécuter docker run hello-world à partir de Windows CMD.

Mais appeler le même depuis WSL Bash (dernière Win10 1709) répond toujours avec ce message d'erreur tls:

$ docker images
REPOSITORY                        TAG                        IMAGE ID            CREATED             SIZE
continuumio/miniconda3            latest                     29af5106b6a4        17 hours ago        443 MB
hello-world                       latest                     f2a91732366c        3 months ago        1.85 kB

$ docker --version
Docker version 1.13.1, build 092cba3

$ docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.6.2
 Git commit:   092cba3
 Built:        Thu Nov  2 20:40:23 2017
 OS/Arch:      linux/AMD64

Server:
 Version:      18.03.0-ce-rc1
 API version:  1.37 (minimum version 1.12)
 Go version:   go1.9.4
 Git commit:   c160c73
 Built:        Thu Feb 22 02:42:37 2018
 OS/Arch:      linux/AMD64
 Experimental: true

$ echo $DOCKER_Host
tcp://0.0.0.0:2375

$ docker run hello-world
tls: oversized record received with length 20527

Ce paramètre ne semble pas avoir de relation, mais il est nécessaire d'exécuter la commande docker:

Exposer le démon sur tcp: // localhost: 2375 sans TLS

question

Je me demande pourquoi il ne s'agit pas d'un problème commun signalé pour l'utilisation de Windows Docker/WSL. Quelque chose semble être foiré, mais je ne sais pas par où commencer.

Par exemple: 

  1. Pourquoi le problème n'apparaît-il que sous WSL Bash et non pas Windows CMD?
  2. Comment changer la valeur de daemon.json pour "insecure-registries": [] lorsque certains conseils liés aux messages SO?

Toute aide/pointeurs sont appréciés!

(= PA =)

7
spex66

Solution

Comme cela me faisait un peu peur, je fis une autre session sur Google et trouvai la solution dans les commentaires de ce côté: * https://nickjanetakis.com/blog/setting-up-docker-for-windows -et-wsl-to-work-perfect

En résumé: * Le problème que j'ai décrit provient d'une installation docker.io par défaut mais obsolète, au lieu de la dernière installation docker-ce maintenue. 

Une fois que j'ai supprimé l'ancien avec (le * final est prévu!):

Sudo apt-get remove --purge docker*

et installé la dernière version de docker-ce - conformément à la procédure décrite à la page ci-dessus - le problème de TLS avait disparu!

Bonne accostage.

5
spex66

La solution proposée 

Sudo apt-get remove --purge docker*

n'a pas fonctionné pour moi car dès que j'ai essayé d'exécuter la commande apt-get remove, j'ai le message d'erreur suivant:

No process in pidfile '/var/run/docker-ssd.pid' found running; none killed.
invoke-rc.d: initscript docker, action "stop" failed.

J'ai donc dû désinstaller manuellement docker en exécutant ceci:

Sudo rm /var/lib/dpkg/info/docker.io.*
Sudo rm /var/cache/apt/archives/docker.io*
Sudo rm /etc/default/docker
Sudo rm /etc/init.d/docker
Sudo rm /etc/init/docker.conf

et après cela, j'ai juste suivi les instructions ici:

https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly

Problème résolu.

1
Davide Mauri

Voici les étapes pour résoudre le problème:

  1. Supprimez docker.io (le cas échéant) et les packages associés du WSL (Ubuntu):

    Sudo apt-get remove docker.io
    Sudo apt-get remove docker*
    

    Remarque: En cas d'erreur (fonction non implémentée), essayez de mettre à niveau WSL by (cela prendra un peu de temps):

    Sudo -S apt-mark hold procps strace Sudo
    sudo -S env RELEASE_UPGRADER_NO_SCREEN=1 do-release-upgrade
    
  2. Installez Docker CE dans WSL (Ubuntu):

    Sudo add-apt-repository "deb [Arch=AMD64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    Sudo apt-get update
    Sudo apt-get install docker-ce
    
  3. Démon Expose sans TLS dans votre application Docker sous Windows.

  4. Connectez-vous à celui-ci en définissant la variable DOCKER_Host dans WSL:

    export DOCKER_Host=:2375
    

En relation:

1
kenorb