GNU/Linux >> Tutoriels Linux >  >> Linux

Construisez votre propre conteneur sur Linux

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.


Linux
  1. Créez votre propre technologie sur Linux

  2. Partez à l'aventure dans votre terminal Linux

  3. Hivériser votre invite Bash sous Linux

  4. Ajoutez ces 4 outils à votre boîte à outils de conteneur Linux

  5. Comment écrire votre propre module de noyau Linux avec un exemple simple

Planifiez votre propre calendrier de vacances en ligne de commande Linux

Construisez votre propre NAS avec OpenMediaVault

Comment créer sa propre distribution Linux avec Yocto

Comment créer votre propre serveur VPN IPsec sous Linux

DIY NAS Freenas Server - Construisez votre propre NAS avec Freenas

Comment créer facilement votre propre distribution Linux ?