"Docker, Docker, Docker ” c'est ce que nous utilisions jusqu'à récemment.
Docker est toujours très populaire, sans aucun doute. Mais comme nous le savons dans l'industrie informatique, l'évolution se produit rapidement. Alors maintenant, nous allons entendre Buildah, Podman, CRI-O, Skopeo .
Si vous voulez faire une analogie - nous avons différents types de baies telles que les baies noires, les myrtilles, les framboises, mais un jour, quelqu'un décide de choisir les myrtilles. Ainsi, parmi Buildah, Podman, CRI-O J'ai décidé de choisir buildah. Pourquoi? Parce que c'est aussi intéressant que les autres plateformes de conteneurs.
Plongeons dans Buildah !
Qu'est-ce que Buildah ?
Buildah est un outil en ligne de commande pour créer des images Open Container Initiative (OCI). Il peut être utilisé avec Docker, Podman, Kubernetes - quel que soit votre outil de conteneur préféré !
Buildah est utilisé pour créer, construire, gérer, exécuter des images de conteneurs ainsi que des conteneurs.
Avec Buildah, vous créez un conteneur de travail à partir d'une image ou à partir de rien. Vous pouvez également créer une image à partir d'un conteneur de travail ou en utilisant Dockerfile. Vous pouvez créer les images au format OCI ou au format Docker en amont. Vous pouvez modifier et supprimer des conteneurs et des images.
La chose la plus intéressante à propos de Buildah est qu'il n'a pas besoin d'un démon pour fonctionner. Alors dites non aux #bigfatdaemons. L'absence de démon donne spécifiquement des étincelles lorsqu'il s'agit d'intégration continue et de livraison continue afin de créer des conteneurs.
Aucun démon signifie également que vous pouvez éliminer le démon de Docker par Buildah pour créer des images de conteneur. Mais cela ne signifie pas que Buildah ne peut pas s'intégrer à Docker. Parce qu'en utilisant Dockerfile, vous pouvez créer, gérer et exécuter votre image de conteneur par Buildah. Impressionnant non ?
Installer Buildah sur Linux
Voyons comment vous salir les mains avec Buildah. Les packages pour Buildah sont disponibles pour Fedora et CentOS. Vous pouvez facilement les installer à l'aide du gestionnaire de packages de votre distribution Linux. Je vais énumérer quelques-uns des plus courants ici :
Pour installer Buildah sur Fedora, utilisez
dnf install buildah -y
Pour installer Buildah sur CentOS ou RedHat :
yum install buildah -y
Pour installer Buildah sur Ubuntu et Debian, vous pouvez utiliser le PPA officiel fourni par Project Atomic.
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt install buildah
Une fois Buildah installé, il est temps de jouer avec.
Commandes de base pour utiliser Buildah
Voici quelques commandes de base pour démarrer avec buildah.
Pour connaître la version de Buildah.
buildah --version
La toute première tâche consiste à extraire l'image du conteneur à partir de référentiels publics ou privés. Pour extraire l'image, buildah utilise la variable "from". La variable 'from' est la même que celle utilisée dans Dockerfile. La différence est que dans Docker, nous spécifions la variable "from" dans Dockerfile, alors que dans Buildah, nous transmettons la variable via la ligne de commande.
buildah from ubuntu
Dans la commande ci-dessus, Ubuntu est mon image de conteneur. Après avoir extrait avec succès l'image basée sur Ubuntu à la fin de la sortie, vous verrez - "ubuntu-working-container".
Une fois que vous savez que vous avez extrait l'image avec succès, vous pouvez maintenant voir la liste des images que vous avez extraites. Mais avant cela, vous vous demandez peut-être « où sont stockées ces images ? ». L'image extraite est stockée sur l'hôte lui-même.
buildah images
IMAGE NAME IMAGE TAG IMAGE ID CREATED AT SIZE
docker.io/library/ubuntu latest 94e814e2efa8 Mar 12, 2019 00:20 91.4 MB
docker.io/library/fedora latest d09302f77cfc Mar 12, 2019 00:20 283 MB
Si vous connaissez déjà les commandes Docker, vous avez peut-être remarqué les similitudes entre les commandes Docker et Buildah. Par exemple, dans Docker, pour voir la liste des images extraites, nous utilisons la commande "docker images".
Voici la commande pour voir la liste des conteneurs en cours d'exécution. Dans Buildah, dès que l'extraction de l'image du conteneur est terminée, ce conteneur commence à s'exécuter. Si vous comparez à Docker, après avoir extrait l'image, nous devons exécuter l'image en utilisant "docker run", puis seul le conteneur commence à s'exécuter.
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME
1063320d2dc0 * 94e814e2efa8 docker.io/library/ubuntu:latest ubuntu-working-container
978a399e0aa7 * d09302f77cfc docker.io/library/fedora:latest fedora-working-container
Si vous souhaitez nettoyer et supprimer tous les conteneurs en cours d'exécution, exécutez la commande ci-dessous avec prudence. Parce qu'une fois que vous aurez exécuté la commande, vos conteneurs seront supprimés. Le privilège que nous obtenons dans buildah sur Docker est que Docker ne nous laisse pas supprimer le conteneur en cours d'exécution, mais Buildah le fait. Lors de l'utilisation de Docker, nous devons d'abord arrêter le conteneur, puis seulement nous pouvons supprimer l'image.
buildah rm --all
Si vous êtes bloqué avec une commande, il y a l'option –help.
buildah --help
Voyons quelques cas d'utilisation de Buildah, pour commencer par une mise en œuvre pratique, nous commencerons par simple. Et une fois que vous avez trouvé le rythme avec le Buildah, vous pouvez laisser libre cours à votre créativité et faire des choses intéressantes.
Construire une image de conteneur de serveur Web Apache [Hands On]
Essayons ce que vous venez d'apprendre avec un exemple de projet Buildah.
Que pensez-vous de ce qui sera nécessaire pour qu'un serveur Web Apache s'exécute dans un conteneur ?
Bien sûr, une image, un conteneur en cours d'exécution et quoi d'autre ? Eh bien, la principale chose dont nous aurons besoin est - nous devons installer un package httpd dans un conteneur. Oh! Comment fait-on cela? Pas de soucis. Je vais vous le dire.
Extrayons d'abord une image de distribution Linux. Choisissez celui que vous préférez. J'ai extrait l'image de base CentOS.
buildah from centos
Installez maintenant httpd dans le conteneur CentOS. Vous pouvez le faire en utilisant cette commande :
buildah run centos-working-container yum install httpd -y
Vous verrez une sortie comme celle-ci.
Ce que nous avons fait, c'est que nous avons installé le package httpd sans même entrer dans le conteneur. C'est comme installer les pièces de votre vélo sans même entrer dans le garage. Vous pouvez voir dans la sortie de la commande ci-dessus, le paquet a été installé devant nous. Buildah ne triche pas 😉
Maintenant, créons un fichier index.html personnalisé.
echo "Linux Handbook is interesting !" > index.html
Copiez votre fichier personnalisé index.html dans le chemin du répertoire /var/www/html
buildah copy centos-working-container index.html /var/www/html/index.html
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889
Vous devez vous demander d'où vient /var/www/html ? Et pourquoi avons-nous copié le fichier index.html sous ce chemin de répertoire ?
Lorsque nous installons le package httpd, le répertoire /var/www/html est créé. /var/www/html
n'est que le dossier racine par défaut du serveur Web.
Pour démarrer le conteneur, nous devons configurer point d'entrée pour le conteneur.
buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" centos-working-container
L'option "-DFOREGROUND" est utilisée avec "/usr/sbin/httpd" pour démarrer httpd. Ce que "-DFOREGROUND" fait, c'est que le processus httpd/apache s'exécute au premier plan à la place de l'arrière-plan. L'avantage du processus httpd NON exécuté en arrière-plan est que vous pouvez voir les journaux de débogage sur la console. Si nous n'utilisons pas l'option "-DFOREGROUND", le serveur apache démarrera et juste après, il sera arrêté.
Maintenant, nous devons enregistrer tout ce que nous avons fait à l'intérieur du conteneur. Le commit le fera pour nous.
buildah commit centos-working-container Linux-Handbook
L'image Linux-Handbook est disponible et vous pouvez pousser cette image vers le registre pour l'utiliser.
buildah images
IMAGE ID IMAGE NAME CREATED
AT SIZE
9110ae7f579f docker.io/library/centos:latest
Mar 31, 2019 14:36 234.7 MB
49bd5ec5be71 docker.io/library/Linux-Handbook:latest
Apr 4, 2019 17:28 427.7 MB
Alors, prêt à vous salir les mains avec Buildah ?
Écrit par Servesha Dudhgaonkar