boot2docker

Pour jouer un peu et découvrir Docker, j’avais besoin d’installer certains outils. Voici quelques unes de mes errances en espérant que cela pourra vous éviter quelques pièges.

Note : je sais bien qu’il y a un installateur pour Docker sur Windows, mais… ça ne fonctionne qu’en Windows 64bits et que ce n’est pas le cas pour ma machine pro.

VirtualBox

Pour commencer et pour éviter de modifier la configuration de mon poste de travail, j’ai installé l’outils Oracle pour la gestion des machines virtuelles : VirtualBox. Ne pas oublier aussi d’activer les éléments du BIOS qui permettent la virtualisation ; ça pourra vous permettre de faire fonctionner une machine x86-64bits sur un OS hôte installé en 32bits (si, si, ça existe encore).

On trouve des binaires ici : https://www.virtualbox.org/wiki/Downloads

Il suffit donc de déployer l’outils et de lancer la création d’une nouvelle machine virtuelle.

Boot2docker

Au préalable, on aura chargé localement l’image ISO de “Boot2docker”. Il s’agit d’une distribution “live”, c’est à dire bootable, et sans installation qui est faite pour être lancée dans une VM.

Presse-papier02

Donner un nom et préciser les champs type & version, comme indiqué ci-dessus, et presser le bouton Suivant.

Pour la suite, on pourra suivre le dimensionnement de la VM indiqué dans la FAQ et que je résume ici :

  • CPU Cores : comme sur l’hôte (2 CPU HT) ;
  • 40 Go HDD
  • 2 Go RAM
  • virtio high performance networking
  • Réseau NAT (Docker 2375->2375 et SSH 22->2022 are forwarded to the host)

Indiquer une taille RAM de 2048 Mo :Presse-papier03Créer un disque associé à la VM de 40 Go (pas 8, comme recommandé) :

Presse-papier04Presse-papier05Presse-papier06Presse-papier07

À la fin de cette séquence, la VM est crée. On peut affiner ses paramètres en allant modifier sa configuration (clic-droit sur le libellé de la VM en question) :

Presse-papier08

Vérifier l’ordre de boot (et désactiver la disquette 🙂 ) :

Presse-papier09

Préciser le nombre de CPUs affectées :

Presse-papier10

Vérifier et terminer le paramétrage des supports (disque et image de boot sur CD) :

Presse-papier11

 

Indiquer l’image ISO de boot2docker à télécharger et à monter dans le CD :

Presse-papier13Désactiver la carte son :

Presse-papier14

Configuration de la VM

Une fois la VM définie, on peut la lancer. Le premier boot se fait uniquement avec l’image ISO.

Presse-papier24

Une fois la VM démarrée, je vous recommande une connexion SSH (PuTTY) en port 22, avec le compte docker / tcuser.

Formatage du volume « boot2docker-data »

Bien qu’il s’agisse d’une distribution “live”, il est possible d’enregistrer des éléments variables dans le volume “boot2docker-data”. Procédons à sa configuration.

Vérifions que le volume est bien visible et quel est son nom :

docker@boot2docker:~$ fdisk -l

Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sda doesn't contain a valid partition table

Créons la partition :

docker@boot2docker:~$ sudo fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI, OSF or GPT di sklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that the previous content
won't be recoverable.

The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
 (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n

Command action
 e extended
 p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): Using default value 2610

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
docker@boot2docker:~$ sudo mkfs.ext4 /dev/sda1 -L boot2docker-data
mke2fs 1.42.7 (21-Jan-2013)
Filesystem label=boot2docker-data
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5241198 blocks
262059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
 4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
docker@boot2docker:~$ sudo rebuildfstab

Après un reboot de la VM, on obtient bien :

docker@boot2docker:~$ mount
rootfs on / type rootfs (rw,size=1017032k,nr_inodes=254258)
tmpfs on / type tmpfs (rw,relatime,size=1850892k)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
tmpfs on /dev/shm type tmpfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /mnt/sda1 type ext4 (rw,relatime,data=ordered)
cgroup on /sys/fs/cgroup type tmpfs (rw,relatime,mode=755)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,relatime,cpuacct)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,relatime,net_prio)
/dev/sda1 on /mnt/sda1/var/lib/docker/aufs type ext4 (rw,relatime,data=ordered)

Où l’on voit que /dev/sda1 a été montée.

On pourra alors mettre en place certains paramètres d’environnement, comme des définitions de proxy http et https :

docker@boot2docker:~$ sudo vi /var/lib/boot2docker/profile

et ajouter les 2 lignes :

export http_proxy=http://msibert:xxxxxx@192.168.77.12:8080
export https_proxy=http://msibert:xxxxxx@192.168.77.12:8080

 

 

 

 

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *