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.

 

Paris Open Source Summit 2017 : #OSSParis2017

On a beaucoup parlé de :

  • Pythonhttps://www.afpy.org :
    • Mais Python reste bien moins performant que le C, reste que Python est plus accessible. Et vu qu’il manque de développeur, il est plus facile de faire faire du Python à des novices (pas de compilation). C’est un peu comme le PHP il y a 10 ans … Il faut dire aussi que les processeurs sont tellement puissant aujourd’hui que l’on est plus à chercher l’optimisation.
  • Dockerhttps://www.docker.com .
  • Elastic Searchhttp://elasticsearch.org .
  • Ansiblehttps://www.ansible.com

Nouveau pour moi et à suivre:

Et toujours les classiques : MongoDB, PostgreSQL, HA Proxy. J’ai beaucoup aimé l’intervention de @datatiph ( https://twitter.com/datatiph ) avec les GRAPHE & Neo4J ( https://neo4j.com ) et aussi celle de @babgi .

Je n’en dis pas plus car j’y étais à titre professionnel 😉 . Sinon lire ce petit article : https://www.silicon.fr/open-source-france-championne-europe-193023.html :

9,9 %. C’est la part de l’open source dans le marché global de l’IT en France en 2017. Ce qui fait de notre pays, le champion d’Europe du libre devant le Royaume-Uni (6,5 %) et l’Allemagne (6,4 %).

….

L’open source leur offre plus de transparence, une maîtrise de leur avenir, une capacité d’innovation. » A cet égard, DevOps agit, selon lui, comme un vrai levier pour introduire l’open source dans les organisations.

Quelques photos :

 

Installation de Docker CE pour Mac

Docker CE pour Mac : https://store.docker.com/editions/community/docker-ce-desktop-mac?tab=description .

L’installation est réellement très simple :

La version de mon Mac :

Vu que l’application n’est pas sur l’Apple Store on a ce message :

Ensuite on doit donner les droits :

Et c’est fini :

Quelques petits tests de base :

MacBook-Pro-de-XXXXX:~ XXXX$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 977c511eda0925a723debdc94d09459af49d082a
runc version: a01dafd48bc1c7cc12bdb01206f9fea7dd6feb70
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.12-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.952 GiB
Name: moby
ID: 35LH:CVLU:E67K:YRGX:G6CL:P7GM:GWTZ:OISQ:MCNP:PT3B:NJZV:67SO
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 16
 Goroutines: 26
 System Time: 2017-03-16T07:38:58.167444065Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false



MacBook-Pro-de-XXXX:~ XXXXX$ docker version
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:40:59 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 07:52:04 2017
 OS/Arch:      linux/amd64
 Experimental: true


MacBook-Pro-de-XXXX:~ XXXX$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete 
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/