Les conteneurs sont exécutés dans le cloud. En effet, la technologie des conteneurs permet aux sites Web et aux applications Web de générer de nouvelles copies d'eux-mêmes à mesure que la demande augmente. Ils sont la raison pour laquelle des centaines de millions de personnes peuvent utiliser des sites populaires sans que ces sites ne cèdent sous la pression du trafic mondial. Les conteneurs sont une technologie Linux, ce qui signifie qu'ils reposent sur du code (en particulier cgroups
et espaces de noms) uniques au noyau Linux, donc lorsque vous exécutez un conteneur, vous exécutez Linux. À l'aide d'images de conteneurs provenant de sites tels que quay.io et dockerhub.io, la plupart des utilisateurs créent de nouveaux conteneurs spécifiques à leur application ou à leur cas d'utilisation. Mais cela amène certaines personnes à se demander :si mon conteneur provient d'un bâtiment de développeur au-dessus du conteneur d'un autre développeur, d'où viennent ceux d'où viennent les conteneurs ? Ne vous inquiétez pas, ce ne sont pas des tortues tout le long. Vous pouvez créer un conteneur à partir de zéro, et il existe un excellent outil Open Source appelé Buildah pour vous aider à le faire.
Conteneurs Linux
- Que sont les conteneurs Linux ?
- Une introduction à la terminologie des conteneurs
- Télécharger :Introduction aux conteneurs
- Opérateurs Kubernetes :automatisation de la plate-forme d'orchestration de conteneurs
- eBook :Modèles Kubernetes pour la conception d'applications cloud natives
- Qu'est-ce que Kubernetes ?
Spécifications du conteneur
Les conteneurs sont nés de projets tels que les conteneurs Linux (LXC) et Docker, et c'est l'Open Container Initiative (OCI) qui maintient la spécification formelle de ce qu'est un conteneur. Un conteneur correctement assemblé qui répond à la définition OCI s'exécute sur n'importe quel moteur de conteneur compatible OCI, tel que Podman, Docker, CRI-O, etc.
Installer Buildah
Sur Fedora et CentOS, vous avez peut-être déjà installé Buildah. Sinon, vous pouvez l'installer avec votre gestionnaire de paquets :
$ sudo dnf install buildah
Sur les systèmes Debian et basés sur Debian :
$ sudo apt install buildah
Configuration de Buildah
Étant donné que Buildah crée des conteneurs, la configuration de votre environnement est identique à la configuration de Podman. Que vous utilisiez ou non Podman, configurez votre système pour un podman "sans racine" avant de continuer.
Construire un conteneur à partir de rien
Pour construire un tout nouveau conteneur, en utilisant le travail antérieur de personne comme base, vous utilisez le nom spécial scratch
pour indiquer à Buildah que vous souhaitez créer un conteneur vide. Le scratch
la désignation n'est pas un nom d'image. C'est votre dispense d'utiliser une image existante pour baser votre travail.
$ buildah from scratch
Ce nouveau conteneur, nommé working-container
par défaut, comporte une petite quantité de métadonnées et littéralement rien d'autre, et il s'exécute secrètement en arrière-plan maintenant. Vous pouvez le voir avec les containers
sous-commande :
$ buildah containers
CONTAINER ID BUILDER ID IMAGE NAME CONTAINER NAME
dafc77921c0c * scratch working-container
Pour exécuter le conteneur, vous devez d'abord utiliser le unshare
sous-commande (sauf si vous exécutez Buildah en tant que root) :
$ buildah unshare
Confirmez que votre conteneur de travail n'a aucune fonctionnalité (réponse d'échec attendue dans ce cas) :
$ buildah run working-container sh
ERRO[0000] container_linux.go:349: starting container process caused "exec: \"sh\": executable file not found in $PATH"
Ajout à votre conteneur
Pour ajouter des commandes à votre conteneur, vous devez d'abord le monter. Les images de conteneur sont stockées dans votre ~/.local
répertoire par défaut :
$ buildah mount working-container
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged
Avec le conteneur monté sur votre ~/.local
répertoire (ou /var/lib/containers/
dans le cas d'une exécution en tant que root), vous pouvez ajouter des packages à l'aide de votre gestionnaire de packages. Le --releasever
doit correspondre à la distribution que vous exécutez lorsque vous créez le conteneur.
[Fedora]$ sudo dnf install --installroot \
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
--releasever 33 \
bash coreutils \
--setopt install_weak_deps=false -y
La méthode exacte d'ajout de packages dépend de votre distribution et du gestionnaire de packages qu'elle utilise. Par exemple, sur mon bureau Slackware, j'utilise installpkg
:
[Slack]$ installpkg --root ~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
/tmp/bash-5.0.17-x86_64-1_SMi.txz
Vous pouvez maintenant exécuter le conteneur et essayer quelque chose de simple, comme lancer un shell :
$ buildah run working-container bash
# bash --version
GNU bash, version 5.0.17(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Configuration de votre conteneur
La buildah config
La sous-commande vous donne accès à des attributs communs tels que la commande par défaut que votre conteneur doit exécuter lors de son lancement, la définition des variables d'environnement, la définition du shell par défaut, la définition de l'auteur, de l'architecture et du nom d'hôte, et bien plus encore. Par exemple, imaginez que vous avez ajouté un package contenant un script shell appelé motd.sh
, et vous souhaitez qu'il s'exécute au lancement du conteneur :
$ buildah config --author "Seth Kenlon" \
--os "Slackware" --shell /bin/bash \
--cmd /usr/bin/motd.sh working-container
Distribuer votre conteneur
Lorsque vous avez terminé de construire votre conteneur, vous pouvez le conserver en tant qu'image en utilisant le commit
sous-commande.
$ buildah commit working-container my_image
Construisez-le avec Buildah
Les conteneurs semblent parfois magiques, mais ils ne sont pas magiques. Ils sont construits à partir de zéro et ils sont suffisamment flexibles pour qu'une fois qu'une image existe, d'autres puissent l'utiliser pour créer de nouveaux conteneurs et des images de conteneurs qui remplissent un créneau différent. Il n'est pas nécessaire de partir de zéro, mais si vous êtes curieux de savoir comment les images démarrent, ou si vous voulez essayer de créer une image spécifique à vos besoins, Buildah est l'outil à utiliser.