Docker Containers vs Images
Un tutoriel vidéo gratuit de Richard Chesterwood
Software developer at VirtualPairProgrammers
7 cours
152 842 participants
Pour en savoir plus, suivez le cours complet
Kubernetes Hands-On - Deploy Microservices to the AWS Cloud
Use Kubernetes to deploy a Microservice architecture. You'll deploy, manage and monitor a live Kubernetes cluster.
Vidéo à la demande de 28:31:23 • Mise à jour : mai 2024
Deploy containers to a Kubernetes Cluster
Run Kubernetes in AWS using either EKS or Kops
Monitor a live Kubernetes cluster using Prometheus and Grafana
Analyse system-wide logs using the ELK Stack (ElasticStack); Kibana and ElasticSearch
Handle Alerts in a Kubernetes cluster by notifying Slack Channels
Understand how Requests and Limits work in Kubernetes
Use Kubernetes Horizontal Pod Autoscaling
Configure Ingress Control on a live Kubernetes deployment
Understand Kubernetes StatefulSets
Integrate Kubernetes with a Continuous Deployment System (CD)
Use Helm to Manage Charts and to Dynamically Update your Kubernetes YAML
Français [Aut.]
Instructeur : Il y a deux grands concepts dans Docker, et ces concepts sont les conteneurs que j'ai mentionnés précédemment, et les images. Pour être honnête, dans le dernier discours que j'ai prononcé, j'ai en quelque sorte mélangé les concepts d'images et de conteneurs. Il est important de comprendre la différence entre les deux, en particulier lorsque vous commencez à travailler un peu plus tard dans Kubernetes. Pour moi, c'est vraiment l'image qui est le concept le plus important. Une image est une définition d'un conteneur. Une image est un fichier binaire qui contient tous les logiciels, les variables d'environnement et les paramètres généraux dont le conteneur a besoin pour fonctionner. Supposons que je sois un développeur et que j'aie été chargé de créer un nouveau site web, et que j'aie décidé de le construire en utilisant Tomcat, NGINX et Java. Il n'est pas nécessaire d'être un développeur Java pour suivre ce cours. Je l'utilise simplement comme exemple de travail. Cela aurait pu être Python, cela aurait pu être Go, cela n'a pas vraiment d'importance, mais je peux vous dire qu'en tant que développeurs Java, nous avons tendance à construire ce que l'on appelle des fichiers WAR, c'est-à-dire un site web entier qui est en quelque sorte compressé dans un seul fichier. Si j'étais un développeur et que je livrais ce site web à quelqu'un d'autre chargé de le déployer sur un serveur, je lui donnerais probablement le fichier WAR, mais j'attendrais de lui qu'il configure Java, Tomcat et NGINX, et qu'il fasse en sorte que tout cela soit correct. La différence avec une image, c'est que moi, en tant que développeur, je peux empaqueter tout ce qui est nécessaire, toutes les dépendances requises, pour faire fonctionner cette application. L'idée est donc de transmettre l'image au déployeur, qui n'a plus qu'à l'exécuter. Lorsque nous exécutons une image, une image est un gros fichier binaire, mais lorsque nous exécutons cette image, nous appelons l'image en cours d'exécution le conteneur. C'est là toute la différence. Un conteneur est une instance d'une image Docker. L'un des grands avantages de l'écosystème Docker est que, lorsque nous avons créé ces images, nous pouvons les publier pour qu'elles soient facilement utilisables par d'autres personnes. Au moment de l'enregistrement, l'endroit le plus populaire pour publier des images est ce site appelé hub. docker. com. Si vous suivez ma formation Docker, vous créerez un compte sur Docker Hub et vous publierez vos images, mais pour ce cours, nous allons utiliser des images qui ont déjà été publiées. Voici mon compte chez Hub. docker. com, et vous pouvez voir ici que, au moment de l'enregistrement en tout cas, j'ai cinq images différentes, et n'importe quel développeur dans le monde peut maintenant prendre ces images, et ils peuvent les exécuter en tant que conteneurs sur leurs propres déploiements. Je pense qu'une bonne façon de présenter Docker est de vous donner une expérience pratique. Bien sûr, le premier problème est que si vous êtes nouveau dans Docker, comme vous l'êtes si vous lisez cette section, vous n'avez probablement pas installé Docker. Vous pouvez très facilement le vérifier. Ouvrez une fenêtre de terminal. Peu importe que vous utilisiez Windows, Linux ou Macintosh. Tapez la commande docker. Il y a de fortes chances qu'il ne soit pas capable de trouver une commande docker parce que, bien sûr, vous ne l'avez pas installé. Il se peut que vous obteniez une réponse en tapant la commande Docker. Vous l'avez peut-être installé par le passé pour une raison quelconque. Si c'est le cas, restez dans cette vidéo, car je dois vous montrer comment lancer le serveur Docker. Nous y reviendrons dans quelques minutes, mais si vous vous trouvez dans une situation où la commande n'est pas trouvée, vous devrez bien sûr l'installer. Je pense qu'il est juste de dire que Docker est probablement un peu plus facile à installer que Kubernetes ne l'était, donc vous avez déjà traversé la douleur de l'installation de Kubernetes, donc je suppose que cela va être relativement simple pour vous. Vous pouvez obtenir Docker à partir de l'URL docker. com/getdocker. Il existe deux éditions. Il existe une édition Enterprise, qui est en quelque sorte la tentative de Docker de créer un environnement commercial autour de Docker, mais il y aura toujours une édition communautaire, qui est gratuite, open source, et qui est la norme de production. Ne croyez pas qu'il s'agisse d'une version réduite de Docker ou de quoi que ce soit d'autre. Elle ne dispose pas de certains outils de l'édition Enterprise, mais il n'y a rien à redire à l'édition communautaire. Ils ont changé cela très récemment. Vous devez maintenant suivre ce lien pour obtenir Docker depuis le magasin Docker. De nos jours, tout a un magasin. Suivez le lien de téléchargement et choisissez votre système d'exploitation. Si vous êtes sous Windows, et je vais suivre le lien Windows ici, c'est exactement la même histoire que pour Kubernetes. Si vous êtes sur Windows 10 Professional, vous pouvez télécharger Docker for windows, Docker Community Edition for Windows, en utilisant le lien ici, mais si vous êtes sur une version précédente, et c'est mon cas, je suis sur Windows 10 Home Edition, alors vous devez suivre le lien vers Docker Toolbox. Pour Macintosh, c'est un peu la même chose. J'utilise ici une légende tirée de mon précédent cours sur Docker. Si vous êtes sur Mac avec Yosemite 10. 10. 3 ou plus, vous obtiendrez Docker pour Mac, qui utilise un environnement de machine virtuelle natif. Si vous utilisez une version plus ancienne, vous obtiendrez Docker Toolbox. Maintenant, une fois que vous avez suivi le processus d'installation, la différence devrait être, lorsque vous tapez la commande docker - je vais faire un montage vidéo ici parce que cela prend beaucoup de temps pour moi. Il est clairement suspendu. J'ai fini par obtenir une réponse, mais elle a été très longue. La raison de cette longue pause est que Docker essayait de se connecter au serveur Docker. L'idée est que, sur votre ordinateur local, vous avez un processus démon qui s'exécute en arrière-plan et qui fait tout le travail de Docker, et vous devez l'avoir en cours d'exécution pour faire n'importe quel travail avec Docker. Laissez-moi vous montrer l'une des commandes Docker les plus courantes, à savoir docker image ls. Cela revient à dire : "Donnez-moi une liste de toutes les images "que j'ai téléchargées sur cet ordinateur". Je pense que vous verrez, si vous exécutez cette commande, qu'il y aura une longue pause, car elle essaie de se connecter à votre serveur Docker. Oui, il m'a fallu plus d'une minute avant d'obtenir cette erreur lors de la connexion. Voyez-vous qu'il essaie clairement de se connecter à une adresse IP quelconque ? Je pense qu'il vaut la peine d'expliquer ce qui se passe ici avec une légende. Ce qui se passe ici, c'est que la ligne de commande Docker, c'est-à-dire l'endroit où vous avez entré la commande Docker, essaie de se connecter à Docker lui-même, que vous exécutez généralement en tant que processus démon distinct. Si vous ne travaillez pas sous Linux, et je suppose que la plupart d'entre vous ne travaillent pas sous Linux, il y a un problème parce que, tout comme avec Kubernetes, ce démon Docker doit fonctionner sous Linux parce qu'il utilise diverses fonctionnalités du système d'exploitation Linux pour prendre en charge les conteneurs. Une petite parenthèse : Microsoft travaille actuellement très dur pour construire son propre support pour les conteneurs Docker intégrés à Windows, mais au moment de l'enregistrement, il s'agit d'une sorte de fonctionnalité expérimentale qui n'est pas encore utilisée couramment. Ce qui va se passer, et c'est une histoire très similaire à ce qui s'est passé avec Kubernetes, en supposant que vous ne fonctionniez pas sous Linux, la configuration va être, la ligne de commande Docker va en fait chercher une machine virtuelle, qui, par défaut, est l'Oracle VirtualBox que vous avez vu plus tôt. Il va rechercher un démon Docker fonctionnant dans cette machine virtuelle. Ce que vous pouvez faire avec un outil Docker que vous venez d'installer, c'est démarrer cette machine virtuelle et démarrer un nouveau démon Docker. C'est très bien, mais comme vous suivez un cours sur Kubernetes, j'ai un plan. Bien sûr, dans la section précédente, vous avez eu toutes les peines du monde à installer Minikube, qui est, comme vous le savez, une version réduite de Kubernetes. Ce que je ne vous ai pas dit, c'est qu'à l'intérieur de Minikube se trouve une installation de Docker. Un démon Docker fonctionne parfaitement. Ce que nous pouvons faire, et c'est juste une petite astuce que j'utilise souvent, c'est de dire à la ligne de commande Docker d'utiliser la version de Docker de Minikube pour faire notre travail si nous utilisons déjà Minikube. C'est une petite astuce intéressante. Passons au terminal et je vous montrerai comment cela fonctionne. J'espère que vous avez réussi à installer Minikube dans la section précédente. Je ne sais pas s'il fonctionne pour vous en ce moment. Si vous n'utilisez pas encore Minikube, démarrez-le avec minikube start. Si vous utilisez Windows 10 Professional, vous aurez besoin de ces arguments de ligne de commande supplémentaires. Reportez-vous à la section précédente pour plus de détails à ce sujet. Comme toujours, le démarrage est assez long, c'est pourquoi nous allons procéder à un montage vidéo. Super, Minikube devrait être opérationnel dès maintenant. N'oubliez pas qu'il y a un environnement Docker à l'intérieur de ce Minikube. Maintenant, pour l'instant, juste pour vous rappeler, si nous faisons un ls d'image docker, vous allez probablement toujours voir une erreur. C'est parce que nous devons configurer Docker pour lui dire que nous parlons à l'environnement Minikube plutôt qu'au Docker traditionnel que nous exécutons dans sa propre machine virtuelle. Nous pouvons utiliser la commande minikube suivie de docker-env, qui vous indiquera les variables d'environnement à configurer pour que votre ligne de commande Docker puisse communiquer avec Docker à l'intérieur de Minikube. Si vous êtes sur Mac, sur Linux ou sur Windows avec Cygwin, vous pouvez copier et coller ces commandes d'exportation, ou mieux encore, vous pouvez simplement copier cette évaluation ici. Tout ce que cela va faire, c'est de lancer le minikube docker-env, et de prendre cette sortie, puis de l'exécuter. Il va effectuer ces quatre exportations. Essayons cela. Je vais faire un copier-coller. Tout ce que cela a fait, c'est que si je fais un echo $DOCKER_HOST, par exemple, vous pouvez voir que la valeur ici correspond à la valeur ici. Si vous travaillez avec l'invite de commande standard de Windows, ce que, pour être honnête, je ne recommande pas, vous feriez mieux d'utiliser quelque chose comme Cygwin, mais si vous avez décidé d'utiliser l'interpréteur de commandes standard de Windows, vous craignez peut-être que tous les trucs Unix que nous venons de voir ne fonctionnent pas pour vous. Je viens de changer mon invite de commande pour une démonstration. Je dois admettre que je n'ai jamais essayé cela. J'ai été surpris de voir les résultats. Vous pouvez voir qu'ils ont pensé à cela, et si vous utilisez l'invite de commande, elle émettra des invites de commande DOS standard, je suppose que c'est le cas. Il s'agit de commandes fixes. Vous pouvez voir qu'il y a une déclaration REM finale ici, qui suggère que nous pouvons simplement copier ceci ici, et si nous l'exécutons, nous obtiendrons exactement les mêmes résultats que ceux que nous venons d'obtenir avec Cygwin. Pour rappel, il ne faut pas faire d'amalgame. N'utilisez pas le shell de commande de Windows parfois, et Cygwin d'autres fois. Choisissez l'un ou l'autre. Sinon, les choses se gâtent terriblement. Je voulais simplement vous montrer que si vous utilisez l'invite de commande de Windows, vous n'êtes pas en reste. Nous avons maintenant configuré ces variables d'environnement, et la chose la plus importante maintenant est que vous devriez être en mesure de taper la commande docker image ls, et ce que nous voyons ici est une liste de toutes les images Docker qui sont contenues dans la machine virtuelle Minikube. Ces images n'ont rien à voir avec nous. Nous ne les avons jamais téléchargés. En fait, il s'agit des images Docker dont Minikube a besoin pour mettre en place un environnement Kubernetes. Nous examinerons certaines de ces images un peu plus loin dans le cours, mais pour l'instant, considérez-les comme des images internes dont Minikube a besoin. C'est un petit truc que vous pouvez faire. Nous réutilisons effectivement le processus Docker dans Minikube. L'intérêt de réutiliser le processus Docker qui se trouve dans Minikube plutôt que de redémarrer le démon Docker, c'est qu'il est plus efficace pour les ressources de votre ordinateur. Je travaille souvent sur un ordinateur portable, qui n'est pas très puissant. Il n'y a pas beaucoup de mémoire vive, et si je fais tourner Minikube et Docker Toolbox en même temps, cela fait deux machines virtuelles que mon ordinateur portable doit gérer, et il commence vraiment à avoir du mal. Il s'agit d'une astuce intéressante que j'utilise assez souvent.