web-dev-qa-db-fra.com

En quoi docker et packer sont-ils différents? Et lequel dois-je préférer lors du provisionnement d'images?

En quoi le packer et le docker sont-ils différents? Lequel est le plus facile/le plus rapide à approvisionner/maintenir et pourquoi? Quels sont les avantages et les inconvénients d'avoir un fichier Docker?

25
Abhineetraj

Docker est un système pour construire, distribuer et exécuter Docker containers . Les conteneurs peuvent être exécutés sous Linux et Windows.

Packer est un système de construction automatisé pour gérer la création d'images pour les conteneurs et les machines virtuelles. Il génère une image que vous pouvez ensuite prendre et exécuter sur la plate-forme dont vous avez besoin.

Pour la v1.1, cela inclut - Alicloud ECS, Amazon EC2, Azure, CloudStack, DigitalOcean, Docker, Google Cloud, Hyper-V, LXC, LXD, 1 & 1, OpenStack, Oracle OCI, Parallels, ProfitBricks, QEMU, Triton, VirtualBox, VMware

Dockers Dockerfile

Docker utilise un Dockerfile pour gérer les builds qui a un ensemble spécifique d'instructions et de règles sur la façon dont vous construisez un conteneur.

Les images sont construites en couches. Chaque commande FROMRUNADDCOPY modifie les couches incluses dans une image Docker. Ces couches peuvent être mises en cache, ce qui permet d'accélérer les builds. Chaque couche peut également être adressée individuellement, ce qui facilite l'utilisation du disque et l'utilisation du téléchargement lorsque plusieurs images partagent des couches.

Les Dockerfiles ont un peu de courbe d'apprentissage, il est préférable de regarder certains des images Docker officielles pour les pratiques à suivre.

Générateur Packers Docker

Packer ne nécessite pas de Dockerfile pour construire une image de conteneur. Il commence à partir de l'image de base spécifiée (comme FROM). Packer vous permet ensuite d'exécuter des outils de configuration système standard appelés "Provisioners" en haut de cette image. Des choses comme les scripts Ansible, Chef, Salt, Shells, etc. Cette image sera ensuite exportée en une seule couche, de sorte que vous perdez les avantages de mise en cache/d'adressage de couche par rapport à une version Dockerfile.

Packer autorise certaines modifications du conteneur de build, comme l'exécution en tant que --privileged ou le montage d'un volume au moment de la construction, ce que Docker ne permet pas.

Les moments où vous voudrez peut-être utiliser Packer sont si vous souhaitez créer des images pour plusieurs plates-formes et utiliser la même configuration. Il facilite également l'utilisation des scripts de construction existants s'il existe un provisioner pour cela.

36
Matt