alpine_rapport - TuxML/ProjetIrma GitHub Wiki

Alpine Linux comme base de l'image docker

Introduction

Dans un effort supplémentaire afin de réduire la taille de l'image docker (permettant de compiler le noyau linux) je me suis intéressé a l'utilisation d'alpine linux. Alpine Linux est une distribution Linux dont la taille avoisine les 130Mo sur disque (4-5Mo pour le système de base + le noyau et ses modules), je vous renvoie vers Wikipedia et le site officiel pour plus d'informations.

La faible taille du système permet d'obtenir des images docker de 5Mo ! L'image Debian standard fait 45Mo a titre de comparaison (il est a noter que debian:stretch-slim fait 23Mo).

Ce rapport témoigne du travail effectué et hypothétique afin de changer la base de l'image utilisé par le projet TuxML.

Méthodologie

La première tache a effectuer est de s'assurer qu'il existe une correspondance entre les paquets disponibles sous Debian et Alpine. Pour cela j'ai utilisé le moteur de recherche de paquet d'Alpine Linux afin de vérifier naïvement si les paquets existent sous le même nom sous Alpine. Dans le cas ou le nom était différent j'ai du enquéter sur ce que le paquet contenait grace a l'outil fournit par le projet Debian. Ensuite une recherche plus avancé permet de trouver (ou non) le nom du paquet equivalant sous Alpine.

Voici le resultat:

{
    "dependencies-debian-to-alpine": {
        "install-first": {
            "python3": true,
            "python3-dev": true,
            "python3-pip": false,
            "python3-setuptools": "py3-setuptools",
            "default-libmysqlclient-dev": "mariadb-dev",
            "apt-file": false,
            "apt-utils": false
        },
        "install-second": {
            "gcc": true,
            "g++": true,
            "make": true,
            "binutils": true,
            "util-linux": true,
            "kmod": true,
            "e2fsprogs": true,
            "jfsutils": true,
            "xfsprogs": true,
            "btrfs-progs": true,
            "pcmciautils": true,
            "ppp": true,
            "grub": true,
            "iptables": true,
            "openssl": true,
            "bc": true,
            "reiserfsprogs": null,
            "squashfs-tools": true,
            "quotatool": null,
            "nfs-kernel-server": null,
            "procps": true,
            "mcelog": null,
            "libcrypto++6": null,
            "git": true,
            "wget": true,
            "qemu-system": null,
            "qemu-utils": "qemu-img",
            "initramfs-tools": null,
            "lzop": "lzo",
            "liblz4-tool": "lz4",
            "dialog": true,
            "moreutils": null,
            "bison": true,
            "libelf-dev": true,
            "flex": true,
            "libdb5.3-dev": "db-dev",
            "qemu": true
        },
        "new-ones-or-misc": {
            "tar": true,
            "xz": true,
            "gzip": true,
            "bzip2": true,
            "linux-headers": true,
            "mysql-client": true

        },
        "pip-packages": {
            "wheel": true,
            "mysqlclient": true,
            "psutil": true
        }
    }
}

Conclusion

Aucun test n'a été effectué pour savoir si le projet pourrait fonctionner directement sous alpine. Néanmoins si la taille de l'image devenait un problème dans le futur cette solutions pourrai être interessante.

⚠️ **GitHub.com Fallback** ⚠️