Docker : Accès aux volumes sous Windows

C’est simplement l’enfer sous Windows 🙂

Si par exemple on fait un volume :

docker volume create -name mes-datas

Ensuite pour avoir accès :

$ docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client 
$ docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
$ chroot /host
$ cd /var/lib/docker/volumes/mes-datas/_data/

Ensuite pour sortir:

$ exit
$ exit
$ exit

J’utilise donc ce conteneur : https://hub.docker.com/r/jongallant/ubuntu-docker-client .

Misère de misère.

 

Docker : ERROR: Get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority

Voici mon erreur :

$ sudo docker-compose up -d
Pulling db (library/mariadb:10.0.23)...
ERROR: Get https://registry-1.docker.io/v2/: x509: certificate signed by unknown authority

Pour fixer le problème, j’ai fait :

$ sudo update-ca-certificates --fresh
...
$ openssl s_client -showcerts -verify 5 -connect registry-1.docker.io:443 < /dev/null 2>/dev/null | openssl x509 -outform PEM | tee ~/docker.crt
...
$ openssl s_client -showcerts -verify 5 -connect production.cloudflare.docker.com:443 < /dev/null 2>/dev/null | openssl x509 -outform PEM | tee ~/docker-com.crt
...
$ sudo cp ~/docker-com.crt /usr/local/share/ca-certificates/.
...
$ sudo cp ~/docker.crt /usr/local/share/ca-certificates/
...
$ sudo update-ca-certificates
...
$ sudo service docker restart

Ensuite cela a fixé mon problème … provisoirement :

$ docker-compose up -d
Pulling db (library/mariadb:10.0.23)...
10.0.23: Pulling from library/mariadb
7268d8f794c4: Downloading
a3ed95caeb02: Downloading
e5a99361f38c: Downloading
20b20853e29d: Downloading
9dbc63cf121f: Downloading
fdebb5c64c6c: Downloading
38152cd1ae2a: Downloading
d7f1267eb179: Downloading
cb5b075a9692: Downloading
d65a44f4573e: Downloading
ERROR: x509: certificate signed by unknown authority

Jenkins & Docker : /usr/bin/cat: cannot execute binary file

J’ai donc eu l’erreur : « /usr/bin/cat: cannot execute binary file » , pour voir l’erreur j’ai demandé les logs sur le container lancé par Jenkins.

$ docker logs f5e6fcc16971b888f8609f6436e18fbb8e313114878a15b916eeedd6b780f979
/usr/bin/cat: /usr/bin/cat: cannot execute binary file

Ensuite j’ai essayé de comprendre le problème dans ma pipeline ….

A la base j’avais :

pipeline {
   agent {
       docker {
           image 'my_image'
           args ' --name jenkins_my_image -u root --privileged=true -v /home/BUILD:/root/BUILD'
       }
   }
   ....

Et il fallait mettre :

pipeline {
   agent {
       docker {
           image 'my_image'
           args '--entrypoint="" --name jenkins_my_image -u root --privileged=true -v /home/BUILD:/root/BUILD'
       }
   }
   ....

Sachant que cela ne fonctionnait pas avec :

pipeline {
   agent {
       docker {
           image 'my_image'
           args '--entrypoint="/sbin/bash" --name jenkins_my_image -u root --privileged=true -v /home/BUILD:/root/BUILD'
       }
   }
   ....

Suivant les OS des containers le problème n’est pas visible, le problème est visible avec des anciens OS.

A suivre.

Docker sous Windows 10 : Cela commence mal !

En passant

Pendant l’installation j’ai eu ce message d’erreur :

Le processus ne peut pas accéder au fichier 'C:\Program Files\Docker\Docker\Bugsnag.dll', car il est en cours d'utilisation par un autre processus.
   à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   à System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   à System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
   à LightweightInstaller.UnpackArtifactsStep.<DoAsync>d__23.MoveNext()
--- Fin de la trace de la pile à partir de l'emplacement précédent au niveau duquel l'exception a été levée ---
   à System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   à LightweightInstaller.InstallWorkflow.<HandleD4WPackage>d__19.MoveNext()
--- Fin de la trace de la pile à partir de l'emplacement précédent au niveau duquel l'exception a été levée ---
   à System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   à LightweightInstaller.InstallWorkflow.<ProcessAsync>d__18.MoveNext()

Et il refuse de se lancer …. la version mise en place : « Docker for Windows      Docker Inc.          258 Mo 17.09.1-ce-win42 »

Je vais donc attendre la prochaine version : https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows . Heureusement que j’avais choisi « Stable channel » …

A suivre.