Créer ses propres images de base pour Docker
Si vous utilisez Docker, il y a de fortes de chances que les images de bases présentes sur le Hub Docker vous convienne (debian, ubuntu, centos, etc.). Mais il se peut également que vous ne trouviez pas l’image avec l’OS dont vous avez besoin (Mandrake, . Ou alors que les normes de sécurité de votre activité vous impose de construire vous même vos images afin d’être sûr du contenu.
Je vais vous montrer comment créer sa propre image Docker à partir de rien (sans FROM
)
La commande “docker import
”
Les concepteurs de Docker ont prévu ce besoin et le client possède la commande “docker import
” :
Usage: docker import URL|- [REPOSITORY[:TAG]]
Create an empty filesystem image and import the contents of the tarball (.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz) into it, then optionally tag it.
Elle accepte un tarball et place son contenu dans une image vierge.
Comme je veux créer une image d’un OS basique, il me faut juste le contenu de cet OS (sous la forme d’un tarball). Le contenu tel que celui que je pourrais avoir suite à l’installation classique via un CD/DVD.
Obtenir le tarball de l’OS et construire l’image de base
Il existe plusieurs façons d’obtenir un tarball d’OS et ça dépends de l’OS désiré.
Pour Debian
Il est possible d’utiliser debootstrap
pour récupérer le système Debian de base depuis les serveur de Debian et
le placer dans un dossier (ici “jessie-fs”)
|
|
Attention, la commande "
debootstrap
" refusera de fonctionner sur une partition mountée avec “noexec” ou “nodev”
Une fois les fichiers téléchargés, on utilise tar
pour filer tout ça à docker import
(c’est la forme qu’il attend).
|
|
Notez que j’en ai profité pour tagger “jessie” cette image Debian perso.
Depuis une ISO
Cette méthode devrait fonctionner pour plusieurs distributions car elle utilise bêtement l’ISO d’installation que vous utiliseriez pour installer l’OS sur une machine physique.
|
|
Avec FROM
et des ADD
Une autre possibilité est d’utiliser une image totalement vierge que Docker propose sous le nom scratch mais qu’on peut également faire soit même (toujours pour des questions de sécurité par exemple) :
|
|
Il suffit ensuite de l’utiliser comme n’importe quelle image de base via un fichier Dockerfile
comme suit :
|
|
Et de créer une image personnalisée avec docker build
:
|
|
Sources :
Si vous aimez le contenu, vous pouvez aider
Sponsor