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

25 x served & 7 x viewed

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

299 x served & 46 x viewed

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.

 

Installation de Docker CE pour Mac

380 x served & 99 x viewed

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/

Celebration of Docker’s 4th Birthday à Sophia-Antipolis

391 x served & 48 x viewed

Comme toujours une très bonne organisation. Le programme était :

13:30: Doors Open
14:00 - 14h30: Welcome message, presentation of Docker and guidelines for the event
14:30 - 17:00: Working session
17:00 - 18:00: Cake and Socializing!
18:00 - 19h30: Talks / presentations
19:30 – 20h30: Pizza time

Les labs : http://birthday.play-with-docker.com

Les training : https://training.docker.com/category/self-paced-online

Docker : Le Dix-neuvième pas.

1786 x served & 330 x viewed

Attention ceci est mon brouillon avant de faire une belle documentation sur Docker (il y a à boire et à manger).

Après l’échec de CoreOS, je fais à nouveau la liste des OS utilisés pour Docker.

Je vais donc choisir RancherOS cette fois, le fait qu’il soit petit m’intéresse afin de le mettre dans un Raspberry Pi 3 (à 63 Euro sur Amazon).

Si je cherche RancherOS & Raspberry sur google :

La première étape c’est le téléchargement de l’OS :

Ensuite on fait l’installation sur VirtualBox, cela ne doit plus avoir de secret pour vous :

Capture d’écran 2016-05-09 à 16.09.36 Capture d’écran 2016-05-09 à 16.10.05 Capture d’écran 2016-05-09 à 16.10.57 Capture d’écran 2016-05-09 à 16.11.38

A la fin on tombe sur le login :

Capture d’écran 2016-05-09 à 16.17.26

Normalement le login/password est rancher/password . Mais vu que le clavier n’est pas reconnu cela devient rqncher/pqsszord . Aie cela ne fonctionne pas … Finalement je fini par voir que la documentation n’est pas à jour et que c’est rancher/rancher , soit rqncher/rqncher .

Capture d’écran 2016-05-09 à 16.36.24

  • Docker en version 1.10.3.
  • Kernel en version 4.2.8.

La première étape va être de changer de clavier, mais je ne trouve rien sur google. Je lance donc l’installation :

  • fdisk pour connaitre quel est le disque vu par l’OS
  • ros pour faire l’installation (avec l’option -d pour indiquer le disque à utiliser)

Capture d’écran 2016-05-09 à 16.47.49

Et je fini par une erreur « no space left on device » dans /var/lib/system-docker/tmp/GetImageBlob.  Heureusement que j’ai mis 12 Go et que cet OS n’est pas gourmand en mémoire 😉 . Non je plaisante, le problème c’est la RAM car pour l’installation tout se fait en RAM dans un premier temps.

Capture d’écran 2016-05-09 à 16.52.51

Je vais donc relire la documentation : http://docs.rancher.com/os/running-rancheros/server/install-to-disk/  et surtout les forums. Visiblement il faut 1 Go de Ram pour faire l’installation afin de ne pas avoir cette erreur. Il y a un peu de CoreOS dans RancherOS !

Capture d’écran 2016-05-09 à 17.11.14

et je recommence l’installation : ros install -d /dev/sda

Capture d’écran 2016-05-09 à 17.14.16

Cela fonctionne mieux avec 1 Go de RAM, faire un tel tapage en disant qu’elle est optimisée pour finalement tourner avec 1 Go de RAM. Je trouve cela plutôt comique, mais un rien ne m’amuse 🙂

Capture d’écran 2016-05-09 à 17.16.29

Je fais donc un reboot et je ne peux plus me logger. C’est normal … il fallait faire l’installation en donnant le cloud-config.yml qui contenait les mots de passe.

On fait donc la troisième installation, quand on aime on ne compte pas !

Voici un exemple de fichier cloud-config.yml :

#cloud-config
ssh_authorized_keys:
  - ssh-rsa XXXXXXXXXX toto@Cyber-neurones.local

network:
  dns:
    nameservers:
      - 8.8.8.8
      - 8.8.4.4
  interfaces:
    eth*: {}
    eth0:
      match: eth0
      address: 192.168.0.110/24
      gateway: 192.168.0.254
      mtu: 1460
    lo:
      address: 127.0.0.1/8

Mais je pense que cela va être pénible comme OS 🙁 . Pourquoi par default il ne peut pas mettre rancher/rancher ? C’est quand même pas compliqué à faire … Et pourquoi je ne trouve rien dans la documentation sur le changement du clavier ?

Si je fais un ros config export — full je ne vois rien sur le clavier par défaut.