Bonjour ! Après plusieurs recherches sur le web, je n'arrive pas à comprendre ce qu'est Docker et à quoi ça sert. Je précise que j'utilise un mac et que je suis débutant en code et en programmation. Pourriez-vous donc m'expliquer avec des mots simples ce qu'est Docker et quel est son rapport avec Linux. Imaginez que vous avez un enfant en face de vous ou une grand-mère, qu'est-ce que Docker...?
Alors pour faire simple Docker est un système de virtualisation par conteneur.
Docker permet donc de créer autant de conteneur que l'on souhaite, chaque conteneur vit sa vie indépendamment des autres avec sa propre arborescence, sa propre interface réseau, ses propres processus...
La différence avec la virtualisation "standard" comme propose VirtualBox ou VMWare réside dans le fait que Docker va partager entre ses conteneurs et l'hôte le maximum de chose. Il n'y a par exemple qu'un seul noyaux qui tourne contre un par VM, tous les fichiers communs entre plusieurs conteneurs ne sont stocké qu'une seule fois.
Chaque conteneurs dispose de sont propre processus d'init (avec un PID de 1) et se termine quand celui-ci se fini. Tous les processus du conteneurs n'ont pas accès aux processus de l'hôte ou des autres conteneurs mais l'hôte lui a accès à la totalité des processus (chaque conteneur à sa propre table de processus).
Le principale avantage par rapport à une VM est la légèreté, une centaine de Mo de disque dur et à peine 10Mo de RAM pour un conteneur Docker faisant tourner une pile Apache + PHP contre plusieurs Go de disque et plusieurs centaines de Mo pour une VM équivalente.
Je sais que c'est certainement pas claire mais c'est si tu as des interrogations sur ma réponse, n'hésite pas...
Merci beaucoup pour ta réponse ! Je trouve que c'est un très bon résumé mais j'aurais effectivement plusieurs interrogations
Je connais VirtualBox et VMWare seulement sous la forme de logiciels qui servent à créer des machines virtuelles (par exemple avoir un Windows sur un Mac). Apparement ces logiciels ont des fonctions plus poussées que la simple utilisation d'un système d'exploitation dans un autre. Pourrais-tu m'apporter plus de précisions là-dessus.
Je vais parler maintenant de mon cas concret et à quel moment j'ai entendu parler de Docker pour vouloir m'y intéresser. Peut-être que ça te guidera dans la réponse. Alors voilà, il y a quelques mois j'ai commencé à coder un site web en HTML/CSS et en PHP comme language côté serveur. C'était tout nouveau pour moi. Récemment j'ai découvert NodeJS, et j'ai tout de suite adheré et voulu migrer mon site vers NodeJS avant d'avoir un site très conséquent. Plus tôt je ferais cette migration plus simple ce sera. Sentant que seul je n'y arriverais pas j'ai contacté une petite start-up. Cette start-up m'a fait un devis pour m'aider à coder mon site et faire la migration vers NodeJS. Et à un moment dans ce devis il est écrit : "Mise en place de la base de données et importation des données (mise en place de la base de données en Docker container, design du schéma, insertion de données test)". Entre-temps j'ai découvert le framework Meteor, je l'ai tout de suite adoré. Ce framework si jamais tu n'en a pas entendu parler est un framework qui englobe NodeJS, donc avec lui on peut coder un site entièrement en Javascript et avoir accès à la base de donnée côté client et côté serveur, bref partout. Je me demande donc à quel moment Docker est indispensable, sachant que avec Meteor on peut créer une application native ou une webapp.
Et troisième point ou j'ai soif de précision, quel est le rapport entre Linux et Docker ?
Les logiciels de virtualisation et notamment VMWare sont (dans des versions différentes) très utilisé sur les serveurs des entreprises qui préfére acheter un gros serveur physique et créé de multiple VM dessus, on peut alors faire tourner plusieurs dizaines voire centaines de serveurs virtuels sur un seul serveur physique.
Pour le framework Meteor, effectivement je connaissais pas mais ça à l'air intéressant. Pour ta question, l'entreprise ta inclue dans le devis la mise en place de container pour ton application permettant de faciliter grandement le déploiement sur un serveur disposant de docker installé. Par exemple si ton application fonctionne avec un conteneur Docker, pour lancer ton application tu auras besoin que de trois lignes qui ressembleront à ça :
docker run -d --name app-data app-data /bin/true
docker run -d --name app-mysql --volumes-from app-data mysql
docker run -d --name app --links app-mysql:database --volumes-from app-data app
Ces trois lignes permettront alors de déployer ton application sur n'importe quelle serveur à partir du moment ou Docker est installé dessus.
Pour ta dernière question, Docker, est très fortement lié à Linux car il ne fonctionne (pour l'instant) que sur celui-ci. En effet, Docker utilise des API bas niveau du noyau Linux notamment LXC qui permet d'exécuter des processus dans des environnements distincts. Il est donc très compliqué de porté Docker sur un autre système d'exploitation.
Si certains points ne sont pas clair, n'hésite pas.
Encore merci pour toutes ces précieuses informations. Si je comprend bien, Docker est l'alternative aux hébergeurs qui louent des serveurs (tels que OVH, 1and1 etc.) ? C'est-à-dire que l'on peut acheter soi-même un serveur et l'utiliser pour déployer notre site web grâce à Docker (ou grâce aux autres systèmes de virtualisation comme Virtual Box ou VMWare) ?
En fait tu peux voir docker comme un morceau de ton système qui ne fait tourner que ce dont tu as besoin.
Si je veux un serveur web, je peux installer un linux et mettre dessus un apache, mais une majorité des ressources sera utilisée pour faire tourner le système, en plus d'apache.
Avec docker tu ne feras tourner que ton apache.
Le but d'un serveur est de faire tourner des services. Docker prend ce principe à la lettre et te permet de ne faire tourner que des services, sans tout le reste.
Pour de la production, cela est utile si tu as à faire tourner beaucoup de services. Si tu dois juste faire tourner un apache, l'utilité est moindre, quoique la souplesse de déploiement qu'offre docker est intéressante.
Par contre pour des développeurs, cela peut être utile de pouvoir monter une instance d'un service en deux commandes pour faire des tests, et de les déployer là encore en deux commandes en production. D'autant plus que tu pourras faire tourner tes conteneurs facilement sur Mac ou windows sans avoir à installer de linux.
Bref, il y a beaucoup d'intérêts à l'utiliser, mais ce n'est pas la solution à tout
Moi qui n'ai pas de connaissances en admin système (et qui ne veux pas forcément en avoir), j'aurais quelques questions sur le sujet :
#1 - Est-ce qu'utiliser docker pourrait me permettre de m'affranchir de ça (admin serveur) ? #2 - Et du coup, le container on le mets où ? Sur un serveur dédié ? #3 - C'est quoi la différence par rapport à du PaaS (type : Heroku, Digital Ocean & co) ?
Une image définit ce que contiendra ton conteneur.
Un conteneur est l'instance d'une image, donc si ton conteneur plante, il suffit de redémarrer un autre conteneur avec la même image.
En termes d'attaque le processus dans le conteneur est limité au conteneur lui-même (ressources, path, filesystem ...). Imaginons que je crée un conteneur avec ssh dedans, que je mappe les ports host:22 -> conteneur:22 , un attaquant se retrouvera dans le conteneur, fera mumuse sans impacter l'host. De plus, comme une image est toujours statique, il te suffit de relancer un conteneur pour repartir avec une instance propre.
est ce que quelqu'un pourrai m'aider sur mon probleme car en ce moment je travaille sur gns 3 et je n'arrive pas à fixer une adresse à mes hote l'erreur m'indique d'installer doker.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)