>> [Jouer de la musique]
DAVID MALAN: Très bien.
Merci beaucoup d'être venus.
Ce séminaire est de CS50 sur Docker, un la technologie que nous-mêmes et nous tendons CS50
ont commencé à utiliser pendant un certain temps maintenant.
Donc, mon nom est David Malan, je enseigner Introduction Harvard
à l'informatique.
Pour pas mal d'années, nous avons donné étudiants
côté client téléchargeable machines virtuelles
sur lequel ils font leurs problèmes ensembles.
Que nous avons maintenant la transition à un environnement de cloud
qui utilise effectivement cette technologie Docker appelé, de telle sorte que tout le CS50
les étudiants ont maintenant leur Docker conteneurs propres
que vous allez bientôt entendre tout au sujet.
>> En outre, sur le serveur de CS50 pôle côté, depuis de nombreuses années
nous utilisions Couverture serveur d'Amazon.
Nous courions individuelle machines virtuelles.
Cela aussi, nous avons commencé à faire la transition vers ces choses appelées conteneurs Docker
de sorte que toutes nos applications sont maintenant parfaitement isolé les uns des autres.
Donc, pour cela et plus encore, permettez-moi de présenter nos amis, Nico et Mano,
Docker de lui-même.
NICOLA KABAR: Merci, David.
Bonjour à tous.
Mon nom est Nico et cela est Mano.
Nous sommes de Docker.
Nous allons parler about-- vous donnant gars une intro à Docker,
et nous espérons que, vers la fin de cet exposé vous pouvez réaliser
combien vous pouvez utiliser médecin oxalate développement de votre application
et le déploiement.
>> Donc, nous allons commencer réel rapide avec quelques informations de base.
Décrivez ce que Docker est tout au sujet.
Comment ça marche?
Comment est-il architecturé?
Je vais faire quelques démos.
Et Mano va être décrivant comment pouvez-vous utiliser Docker
et de vous donner des mesures précises comment vous pouvez commencer.
>> Je vous serais reconnaissant si vous les gars peuvent tenir off pour vos questions vers la fin.
De cette façon, je pourrais être répondre à ces questions tout au long de la présentation.
Donc, nous allons laisser du temps vers la fin des questions.
>> Il suffit donc de réel rapide, qui a effectivement déjà travaillé sur Docker,
comme joué avec elle?
Impressionnant.
Cool.
Formidable.
Donc, je vais commencer avec un peu d'histoire.
Donc, retour dans les années 90 et début des années 2000, essentiellement
que les développeurs web, les développeurs d'applications, quand ils sont allés à déployer une application
il a été lié à un métal nu.
Il était un serveur.
Il était une application.
>> Traditionnellement, un exemple serait comme une pile LAMP,
où vous aviez fait à mettre en place le bassin de ressources.
CPU, mémoire, disque, réseau, installation système d'exploitation sur le dessus de cela.
Si vous êtes au service de quelque chose, si vous êtes réellement avec serveur web,
vous avez besoin de quelque chose comme Apache pour servir.
>> Si votre demande base de données doit, revers,
vous installer quelque chose comme MySQL, et ainsi de suite.
Et si vous avez besoin du moment de l'exécution, de PHP et le travail PHP Python étaient là.
Et si nous avions réellement prendre ces étapes dans l'ordre
pour obtenir votre application et l'exécution.
>> Si vous avez besoin plus de puissance de calcul que vous, essentiellement dû appeler votre Ops gars
ou gal aller et accumuler une nouvelle pièce de matériel, le brancher,
et vous avez à répéter ceux processus encore et encore.
Donc, ce processus était relativement coûteux.
Était vraiment très lent.
>> Il était inefficace.
Et dans beaucoup de cas, votre le matériel a été sous-utilisé.
Donc, en fin des années 90 et au début des années 2000, virtualisation matérielle est venu à travers.
Et comme vous pouvez le voir ici dans la image, essentiellement ce qu'ils ont fait
est soustrait de la piscine ressources matérielles gratuits
et le type de ceux servis pour les couches supérieures,
dans ce cas, un système d'exploitation invité.
>> Et l'idée de machines virtuelles ont rencontré
et que vraiment aidé Couverture informatique que nous connaissons aujourd'hui.
Donc, ce que cela signifiait est que vous peut fonctionner plusieurs machines virtuelles, ce qui
signifié plusieurs piles, multiple application sur une même machine physique.
>> Cette certainement aidé à la vitesse de déploiement des applications.
Certainement avec frais.
Vous ne devez pas aller passer énergie, de temps et de ressources pour en rack
plusieurs serveurs pour se rendre à plus de calcul.
Et la vitesse de la porte en réalité Ces ressources en place est beaucoup plus rapide.
Formidable.
>> Donc nous avons résolu faim dans le monde, non?
Non pas vraiment.
Donc, la virtualisation autant qu'il est effectivement aidé, résoudre le problème,
elle a effectivement introduit un grand nombre de défis.
L'hyperviseur définitivement introduit beaucoup de complexité,
ceux qui sous-tend la manipulation pool de ressources.
>> Il est plus lourd dans le sens avant vous aviez un système d'exploitation unique qui
est comme trois, quatre concerts sur le disque.
Maintenant, si vous avez 10 machines sur un seul matériel
vous devez multiplier ce par le nombre de machines.
Il est certainement plus cher dans un sens vous avez encore
avoir à obtenir de licence pour la technologie de virtualisation
si elle est pas open source.
>> Mais, il ne faut pas prendre tout le crédit de la virtualisation.
Parce que ce qui est arrivé est qu'il ya une beaucoup de piles et beaucoup de logiciels
technologies qui ont été activées par quelle vitesse vous étiez en mesure d'obtenir
aux ressources avec le boom Cloud.
>> Donc, aujourd'hui, une seule application ou service peut être en utilisant une des runtimes suivants
ou bases de données.
PHP, Python, MySQL, Redis, autres joyeusetés.
Donc, il ya beaucoup de complexité sur ce nombre de piles à réellement mettre en place
un service unique.
Et avec cela, vous avez eu beaucoup de les ressources sous-jacents ou des infrastructures
types de tester et de déployer essentiellement prendre à la production de ces applications
que vous êtes en développement.
>> Surtout que vos équipes ont Cultivé à travailler sur ces applications,
il ya beaucoup de complexité et les défis
qui ont été amenés à faire en sorte que l'cycle-- essentiellement demande
cycle de développement, est en fait efficace.
Donc, le fait que votre application travaille localement sur votre VM locale
ne garantit pas que votre collègue va attendre les mêmes résultats.
>> Et quand l'équipe des opérations est impliqué dans ce que vous avez prise de
et le déployer en production échelle, aussi il n'y a pas de garantie
que ce qui se passe réellement à se produire.
Donc, cela nous laisse avec une très big-- beaucoup de points d'interrogation,
beaucoup de défis effectivement face similaire à l'époque.
Et cela nous rappelle des l'industrie du transport maritime.
>> Donc, l'industrie du transport a eu beaucoup de produits,
comme vous pouvez le voir sur le côté gauche.
Et sur le côté droit, il ya beaucoup de, au fond,
façons d'expédier ces marchandises.
Et ce qui se passe en couple les gens se sont réunis et ont dit,
nous avons besoin de normaliser la façon dont nous expédions réellement ces produits.
Et boum, vous avez la conteneur intermodal de transport.
>> Donc, ils ont convenu de la plus tailles communes pour le récipient.
Comment les gérer.
Qu'est-ce exact méthode, vous devez pour les charger et les décharger.
Et donc, ce que vraiment aidé l'industrie du transport maritime.
Maintenant, plus de 90% accent transporté à l'échelle mondiale sont l'utilisation de ces conteneurs.
Et qui diminue certainement les dépenses ainsi que
les dommages dus à l'expédition.
>> Donc, nous prenons le même modèle et nous appliquer le logiciel de développement de deux app
l'architecture, dans le sens que la conteneurisation
a pris la virtualisation d'un niveau.
Ainsi, au lieu de le faire au niveau du matériel,
il est devenu plus d'une exploitation la virtualisation au niveau du système.
>> Et nous le faisons en fournissant à chaque application dans sa propre léger,
isolé, exécutable, et portable, surtout,
un moyen de réellement emballer tout ce qu'il a besoin pour fonctionner.
Partout où il peut être exécuté.
Donc, peu importe si vous êtes à court sur environnement de dev locale, votre production
environnement, votre mise en scène ou de tests.
Peu importe ce que sous-jacente infrastructure est là,
vous aviez une application de travail fonctionnel.
>> Voilà donc exactement ce essentiellement conteneurs font à ce problème.
Ils abordent par emballer de telle manière
qu'il peut garantir qu'il est déployé avec succès, peu importe où elle vit.
Donc, si vous allez comme, Bob il est encore OK.
Si vous êtes confus avec ce que je dis, Je vais être élaborer sur ce point.
>> Alors, comment fait elle-même Docker tenir dans cette image?
Donc Docker est une plateforme ouverte de facilement, souligner facilement,
pour construire navire, courir, auto portable léger
récipients app suffisantes partout.
Donc, si vous prenez quelque chose à partir de ce parler, s'il vous plaît prendre le suivant.
>> Si vous avez votre application en cours d'exécution localement et vous l'avez développé
dans l'utilisation de la plate-forme Docker, attendez- d'être déployée avec succès.
Peu importe quelle est la infrastructure sous-jacente.
Donc, si vous avez un Docker récipient et ça marche, puis
aussi longtemps que il ya un Docker moteur de l'autre side--
si votre infrastructure de fonctionnement utilise toute Nuage, si elle
AWS est, ou Google ou Microsoft, ou l'un des Clouds publics,
ou votre propre Cloud, ou votre pile ouverte Nuage, ou de votre environnement local.
>> Si vous avez un moteur course, ce que des moyens
Ce sera déployé avec succès il.
Il va être exécuté exactement le même comportement
comme vous architecturé qu'il soit.
Donc, si nous regardons at-- je vais à passer par ce fait
sont les principales composantes de Docker.
>> Donc moteur est au cœur de Docker.
Il est le cerveau de.
Il orchestre bâtiment, le transport maritime, et déploiement et de gestion
les récipients eux-mêmes.
Je vais creuser dans ce moteur ne en plus de détails dans une seconde.
Fondamentalement, parce que le docteur a été construit autour des architectures client-serveur,
Ainsi, afin d'interagir avec le Moteur vous avez besoin d'une sorte de client.
>> Les images sont les modèles dans qui sont construites à partir de conteneurs.
Donc, les images sont essentiellement juste fichiers statiques.
Modèles et conteneurs est en fait ce qui est
est en cours d'exécution lors de l'exécution que est au service de votre demande
ou faire quelque chose avec les données.
>> Registre est abordée comme un problème de comment vous distribuez effectivement images.
Donc, si vous avez besoin de partager une image que vous avez travaillé sur votre collègue
ou à l'équipe de l'OPS, vous utiliser à l'aide du Registre.
Vous pouvez télécharger une open source version de celui qui a travaillé sur Docker
et en open source.
>> Ou vous pouvez utiliser Docker aide, qui est la version Couverture
pour pousser et tirer des images là-bas.
Voilà une chose énorme.
Parce qu'il ya un énorme écosystème autour Docker et il est
vraiment très utilisant le moyeu.
>> Donc, pour résumer ici, voilà comment le minimaliste client de workflow Docker.
Vous interagissez avec l'hôte, en ce cas ce sont les démons Docker.
Il est la même chose que moteur.
Vous faites des commandes comme Docker construire, tirer, courir.
Et le moteur lui-même va et fait ces choses.
>> Donc, soit il interagit avec Greffe de retirer ces images
et les couches des images.
Que si vous souhaitez déployer, exécuter conteneurs, les tuer, de les jeter en bas,
étagère.
Donc, ce résume le flux de travail de l'ensemble de ces composants.
>> Donc, si vous prenez tous les composant lui-même.
Donc moteur, il est juste un démon.
Il va sorte de jouer pour soutenir sur Linux parce qu'il fait
exiger certaines fonctionnalités du noyau Linux.
Mais Windows travaille de faire la même chose.
Il est censé être soutenu par Windows Server 2,016.
>> Encore une fois, les responsabilités avec le moteur est à, ou sont pour, construire des images.
Tirez images du Docker Hub ou votre propre registre.
Si vous en avez terminé avec ces images ou vous créez une nouvelle images,
vous pouvez pousser ceux qui reviennent de registre de les distribuer à d'autres équipes.
>> Et en essayant de contenir localement et de gérer le cycle de vie des conteneurs
localement.
Il est construit autour API REST HTTP.
Donc, techniquement, vous pouvez écrire votre propre client
dans la mesure où il utilise le protocole HTTP, ce qui est un très mécanisme standard de parler à moteur
et beaucoup d'autres services.
Et vous pouvez le voir ici que quel que soit
de ce que l'infrastructure est, aussi longtemps que vous can-- tous
vous avez besoin est une exploitation système, de Linux spécifiquement.
>> Et vous pouvez installer Docker moteur en plus de cela et le faire courir
et elle orchestre, essentiellement, tous ces app un, deux,
et trois sont des conteneurs réels.
Voilà donc Engine.
Comme je l'ai mentionné plus tôt, car vous devez interagir avec moteur,
il ya le client.
>> Mais en réalité, lorsque vous installez Docker, il est livré avec elle.
Donc, il est installé, il est donc un seul binaire.
Et vous pouvez faire des appels locaux Docker à votre moteur.
Ou des appels à distance Moteurs éloignées.
Il ne Utiliser HTTP, comme Je l'ai mentionné plus tôt.
Il ya un client GUI appelé Kitematic de Docker.
Et il ya certainement beaucoup d'autres gens
qui construisent beaucoup de Interfaces graphiques qui mettent en œuvre essentiellement
HTTP appelle certains à parler à moteur.
>> Juste quelques exemples de commandes.
Si vous faites la version Docker, il serait vous montrer la version du client ainsi que
la version du serveur.
Si vous le faites d'info Docker il sera vous dire toutes les informations
sur le nombre de conteneurs sont en cours d'exécution ou créés, le nombre d'images que vous avez,
Ainsi de suite.
>> Ici, je dois, dans l'avant- dernière case, je dois Docteur terme.
Voilà donc comment je suis effectivement créer récipient.
Et je te le donne écho Bonjour tout le monde et dormir pendant une seconde et ainsi de suite.
Et vous pouvez voir le résultat. Il est donc en cours.
Et semblable à ps Linux, vous pouvez voir tous les processus et, dans ce cas,
tous les conteneurs de fonctionnement.
Le dos de celui-ci se référant à le récipient Je viens de créer.
>> Donc, ce qui est vraiment important parce que, comme, il peut être un peu déroutant.
Donc, les images sont en lecture seule collection de fichiers, non?
Ils sont ce que notre conteneur est basé sur.
Mais ils sont seulement en lecture seule.
Donc, vous commencez avec une image de base.
Elle tend à imiter OS-like, donc Ubuntu, image de base de joyeusetés CentOS,.
Et puis vous commencez à construire au-dessus de que, certaines couches, qui fera place
votre image de fin, le résultat final ici.
>> Et chacune de ces couches devrait avoir une image de parent
qu'il référence quand il veut réellement créer.
Ils sont immuables, dans le sens que parce qu'ils sont en lecture seule,
vous ne pouvez pas réellement apporter des changements à eux.
Vous pouvez les utiliser pour créer un récipient à partir d'une image dans laquelle
vais appeler tous subséquente images requises dessous.
>> Vous pouvez apporter des modifications à une couche différente,
il est une couche de réécriture je vais parler dans une seconde.
Mais chacune de ces couches ne sont jamais changé.
Fondamentalement images utilisent quelque chose appelé Union File System, UFS.
Et il ya de stockage différente backends qui utilisent cette technologie.
Et qu'est-ce que cela signifie est que ce rassemble les systèmes de fichiers distincts
pour les faire ressembler à un.
>> Ainsi, vous pouvez effectivement, à partir de un point de vue de l'application,
vous disposez d'un sommet d'une vue qui affiche Tout le système de fichier différent nécessaire
pour que l'application à exécuter.
Mais ils sont en fait, à ce sujet, ils sont en fait dans des endroits séparés
et étant utilisé par d'autres conteneurs ainsi.
>> Donc, comme vous pouvez le voir ici que si nous commençons à l'image du démon avec
comme une image de base, et ensuite nous allons dans et ajoutons [? emacs?]
puis qui est une autre couche.
Et puis ajoutez Apache.
Voilà une autre couche.
Et puis nous passons la conteneur de cela.
Chacune de ces images, chacune de ces couches,
est distincte et peut être réutilisés par d'autres conteneurs.
>> Si vous regardez les conteneurs eux-mêmes, ils sont un peu comme VM-like,
mais ne sont pas traitées en même temps.
Donc, ils ne sont pas, techniquement, le système d'exploitation complet en dessous.
Ils utilisent le même noyau du système d'exploitation hôte.
Et ils construisent sur le dessus de cela.
Ils imitent la façon dont ils regardent.
Ils imitent leur dossier racine le système de système d'exploitation.
Mais en fait ils ne répliquent pas.
>> Donc, au lieu d'avoir des couches immuables, la dernière couche, qui est le récipient
lui-même, il ya une couche de lecture-écriture.
Cela va également les processus de votre application.
Et cela dépend des couches sous-jacentes.
Chaque conteneur est créé à partir d'une image.
Et que l'image peut être une simple couche ou une image multicouche.
>> Et je tiens à souligner ici Docker qui utilise largement,
ou est basé sur copy-on-write mécanisme.
Alors que, en fait, si vous n'êtes pas apporter des modifications au récipient,
ça ne va pas prendre de l'espace supplémentaire.
Voilà donc essentiellement comment vous résumer un copy-on-write.
Il va accélérer certainement jusqu'à le temps de démarrage pour le conteneur.
Parce que si vous ne faites pas des modifications au récipient,
elle est utiliser ce qui existe déjà.
>> Alors, comment cela fonctionne réellement.
Une partie de ce est comme, en ce moment, il utilise au moins deux noyau clé
fonctionnalités.
Et qui est essentiellement ce que créé ce niveau d'isolement
pour les récipients eux-mêmes.
Ces caractéristiques sont espaces de noms et les groupes de contrôle.
Donc, les espaces de noms sont un moyen de créer des ressources isolées,
de sorte que l'intérieur du récipient lui-même, seulement vous pouvez voir certaines ressources.
Tels que l'interface réseau ou les certains utilisateurs ou autres joyeusetés.
>> Et ceux qui sont visibles et seulement accessible l'intérieur du récipient.
Cgroup sur les autres limites secondaires comment vous utilisez ces ressources.
CPU, la mémoire et le disque.
Lorsque vous pouvez aller, je dire ceux qui sont effectivement
caractéristiques qui ont été développés by-- ils font partie du noyau Linux.
Donc, ils ne sont pas réinventées par ou recréé par Docker.
Docker les utilise.
>> Qu'est-ce que le docteur avait vraiment ici est en réalité il
création orchestrée espaces de noms pour chaque conteneur
et de créer les groupes de contrôle de sorte qu'il est ridiculement facile pour créer des conteneurs
l'utilisation de ces fonctionnalités.
Bien sûr, comme je l'ai décrit plus tôt, l'Union Les systèmes de fichiers et de copy-on-write vraiment
aider à la vitesse et le disque utilisation de conteneurs.
>> Et une fois que vous obtenez votre mains autour Docker,
vous allez voir comment il est rapide à fait tourner les conteneurs et la déchirure
les vers le bas.
Donc, si vous pourriez demander, comment peut- vous construisez effectivement images?
Nous construisons des images par un processus de création conteneurs et de faire des changements, la modification
eux, et les commettre à devenir une image.
>> Donc, il est un poulet et référence oeuf ici,
parce que tous les conteneurs arrivent des images et des images viennent
à partir de contenants commis, pour la plupart.
Il ya trois options pour créer des images.
Je vais décrire le premier et le dernier.
Vous pouvez soit manuellement aller courir le récipient
et de faire ces changements, comme vous le feriez sur une VM
ou n'importe quel système d'exploitation, tel que l'installation de nouveaux binaires,
ajout de systèmes de fichiers, et autres joyeusetés.
>> Et puis vous quittez, comme vous pouvez voir là-haut.
Je sortais mon conteneur.
Et puis je fais Docker commis.
Et que je commets.
Vous pouvez voir que le nombre ici est juste un UUID, ou le premier 12
bits de l'UUID.
Ou octets de l'UUID.
Et puis je vais appeler mon image.
Alors maintenant, Docker prend soin de enregistrant tout je l'ai fait
et la création de la nouvelle l'image sur cette base.
>> Je ne vais pas parler archive, mais il ya une façon que vous pouvez obtenir un seul,
créer une seule, ou faire un seul image de couche à l'aide des archives tar.
Ce que je vais parler de ce et ce qui est surtout utilisé aujourd'hui,
est Dockerfile.
Qui est techniquement le premier étape automatisée par Docker lui-même.
Donc Dockerfiles ya des choses que vous êtes aller voir dans beaucoup de repos GitHub
aujourd'hui.
Il est fondamentalement juste un fichier texte décrivant
exactement comment construire une image.
>> Et pour chaque ligne, il crée en fait le conteneur, exécute cette ligne,
engage dans un récipient que nouvelle image, et vous, au fond,
l'utiliser pour toutes les opérations ultérieures jusqu'à ce que vous arrivez à la dernière image.
Qui est fondamentalement la fin but ici, la fin.
Et après avoir exec-- après écrire votre Dockerfile, qui
est purement dans le texte, vous faites un Docker construire et le nom de l'image.
>> Et vous pointez à ce qui est où le Dockerfile est à.
Et vous pouvez vous attendre à voir mon image comme une image que vous avez localement.
Voilà donc juste un visuel exemple de ce qui se passe.
Vous commencez avec une image de base.
Vous exécutez que dans un récipient que ne modifie pas l'image de la base elle-même.
Mais crée plutôt une réécrire couche sur le dessus de celui-ci
où vous faites des changements, dans lequel vous vous engagez
et vous répétez le processus jusqu'à ce que vous arrivez à votre image finale.
>> Et ce faisant, tous les autres build processus peut utiliser les mêmes couches
et la same-- fondamentalement Docker met en cache ces couches.
Alors que si je fais exactement la même processus, mais au lieu de l'installation de PHP,
Je installer Python.
Il va utiliser Apache et Ubuntu.
Donc, de cette façon vous êtes en utilisant votre disque.
Il est utilisant le cache et les images qui y sont disponibles.
>> La dernière pièce est Greffe, qui comment vous distribuez vos images.
Et, comme je l'ai mentionné plus tôt, il ya une version Nuage d'elle,
qui est Docker Hub.
Vous pouvez aller explorer beaucoup de, essentiellement
il est un produit SAS public vous pouvez toujours avoir des photos privées,
mais il ya beaucoup d'images publiques.
Il est effectivement illimitée, vous pouvez pousser images publiques illimitées il.
Et c'est comment vous pouvez collaborer avec votre équipe.
>> Vous pouvez suffit de leur indiquer de vous Repo et ils peuvent télécharger ou votre image
et ils peuvent le télécharger.
Alors assez avec le discours.
Qui veut voir quelques démos réel rapide?
D'accord.
Donc ici, je l'ai fait.
Ca vous vu mon écran?
D'accord.
>> Donc je dois Docker courir ici, donc je peut vérifier it's-- Ceci est la version
de Docker qui exécute.
Peut faire infos Docker.
Vérifiez toutes les informations sur le nombre de images qu'ils ont, et ainsi de suite et ainsi de suite.
Docker PS, il n'y a rien en cours d'exécution.
Concaténé ceux.
>> Donc la première chose que je veux faire est de spectacle vous comment vous pouvez facilement lancer un conteneur.
Donc, à propos de la beauté Docteur terme, si elle a effectivement
ne trouve pas une image localement, par défaut, il parle au docteur Hub
et essaie de le trouver là et des téléchargements pour vous.
Donc, il comprend un Docker tirez commande, naturellement.
>> Donc, si je fais un Docker terme, bonjour monde.
Donc, d'abord il va pour essayer de le localiser.
Sinon, comme vous pouvez le voir ici, il ne pouvait pas trouver localement.
En ce moment il juste tiré deux couches Cela fait que l'image et je l'ai couru.
Le bonjour-monde est juste fondamentalement sorties, ce que vous avez fait.
Donc ceci est le plus facile, un des exemples les plus faciles. les
Donc en fait je juste couru et terminé le conteneur réel rapide.
>> Si je veux run-- et par la manière, si Je veux que le temps, si vous le savez,
cela est combien de temps il faut pour fait tourner et le contenir.
Nous mesurer en millisecondes.
Donc vous pouvez voir combien cela peut effectivement vous aider non seulement dans les tests,
mais également même déploiement.
Voilà donc une note rapide à ce sujet.
La prochaine chose que je suis allons faire est en fait
exécuter une image que je l'ai déjà préparé.
Donc docker terme.
-d est juste un drapeau pour dire son fonctionnement en arrière-plan.
Et -p attribue certains ports.
Parce que, par défaut, le récipients sont isolés,
vous devez donc spécifier exactement comment il peut y avoir accès.
Et dans ce cas, je dis Docker pour mapper un port aléatoire sur l'hôte
à un port spécifié à l'intérieur le récipient lui-même.
Et qui est fondamentalement où le image-- Espérons que ce soit la bonne.
>> Donc, il ne téléchargements parallèles, chacune de ces couches comme vous pouvez le voir ici.
Ce sont des couches faisant l'image de la fin que je construit.
Il va prendre une seconde.
Et le tour est joué.
>> Alors maintenant, si je fais un ps de docker, je devrais voir quelque chose qui est en cours d'exécution.
Je devrais voir l'ID, l'image que celui-ci a été basée hors tension,
et la commande qui a été exécuté.
Et comment y accéder est fondamentalement, vous allez à ce port.
Donc, je vais aller to-- cette est que je suis en cours d'exécution sur AWS.
Je vais aller à 32769.
Oops.
Et c'est reparti.
>> Donc, cela est en fait juste un service web qui montre
lequel récipient il est servi à partir.
Donc vous pouvez voir que ce est de A9F récipient.
Et voici ce est le nom du conteneur.
Alors vous les gars peuvent voir à quelle vitesse il était réellement non seulement tirer mais aussi
déployer ce conteneur.
>> Maintenant, la prochaine étape est de regarder dans Dockerfiles
et comment nous pouvons effectivement construire de nouvelles images.
Je vais juste aller chercher clone, un obtenir un exemple Dockerfile selon la plus rapprochée
diagramme, l'un à Apache et PHP.
Espérons que je me souviens de ma pension.
>> Donc je dois mon référentiel dès maintenant.
Et vous allez voir cela beaucoup effectivement.
Je ne suis pas installer arbre.
>> Donc, fondamentalement, vous allez voir comment la documentation de votre code source autour
, puis un sur Dockerfile en fait comment l'emballer.
Donc, il est juste un échantillon PHP qui fait écho bonjour CS50.
>> Donc, si je veux courir, Je ferai docker construction.
Je dois construire en premier.
Je vais nommer demo_cs50.
Et vous avez besoin d'une étiquette à elle aussi.
Donc disons qu'il v1 dot.
Donc, comme je l'ai mentionné plus tôt, ce que je fais aujourd'hui
est que je suis dis Docker aller utilisation that-- fait, désolé, mon mauvais.
On n'a pas pris un coup d'oeil au Dockerfile lui-même.
Ainsi, les seules choses ici sont index.php ainsi que le fichier readme
et un Dockerfile.
>> Donc, si vous jetez un oeil à l'Dockerfile, il est donc
très similaire à ce Je l'ai décrit plus tôt.
Il est juste un tas de Docker étapes qui exécute
par la création et la démolition de conteneurs et [? compter?]-les dans une image.
>> Et fondamentalement, vous pouvez see-- [inaudible] il ici--
mais cela est du repo local.
Il va aller et grab index.php.
Voilà donc le seul code source sont en fait une partie de votre application.
Tout ce sont essentiellement fonctionnement du système de plomberie,
obtenir les bons paquets et Apache et PHP, et autres joyeusetés.
Mais cela prend réellement index.php et de commettre dans le récipient,
dans l'image.
>> Donc, si vous allez de l'avant et exécutez le commande en procédant comme suit,
il est en fait going--, cela pourrait prendre un peu.
Espérons que cela ne prend pas trop longtemps.
Donc vous pouvez voir les étapes.
Et je vous encourage à aller retour à la maison aujourd'hui et essayer.
Et Mano décrira exactement comment vous faites cela.
Mais il est vraiment génial de voir exactement ce qui se passe dans les coulisses.
Mais il est ridiculement facile à construire images et de les déployer en utilisant Docker.
>> Ça prend un peu plus que je m'y attendais.
>> Voyons ce qui arrive quand vous-- refroidir.
Donc, comme vous pouvez le voir, chacune de ces étapes représenter des lignes dans le Dockerfile.
Et il montre ici qu'il construit avec succès cette image.
>> Donc, si je fais des images de docker, je vais voir toutes les images que je dois localement.
Et l'un d'eux est appelé ma nom d'utilisateur et le nom de l'image,
et la balise representing-- il est essentiellement une étiquette de version.
>> Alors maintenant, si je veux courir , je ne docker terme.
Et je veux juste faire un -d -P. Avez-v1.
Donc, je peux voir maintenant que je dois à deux contenants en cours d'exécution, celui que je viens
créé et le bonjour Docker celui que je suis la dernière.
>> Et vous pouvez voir ici que ce lui a attribué un port différent.
Donc, si je vais à la même adresse IP, mais l'assigner un port-- différente espérons que non.
Alors maintenant, cette demande est que je viens déployé.
>> Si je veux faire des changements, je peut modifier rapidement le code source
et faire ce qui suit.
Faisons bonjour Harvard.
Alors maintenant ce qui se passe de se produire est que je suis
va marquer avec un différente version-- oh,
pas ce guy-- des tags avec une version différente.
Et vous allez see-- Avez-vous les gars Attendez-
à prendre la même quantité de temps de construire une seconde fois ou pas?
Tout à droite, et quelqu'un sait pourquoi?
Speak up.
>> AUDIENCE: [inaudible]
>> NICOLA KABAR: Il est fondamentalement nous changer seulement l'une des étapes ultérieures.
Et donc il va utiliser la cache et utiliser chacune de ces couches.
Et qui est vraiment une partie de la caractéristiques tueuses de Docker
est la façon dont il utilise effectivement et réutilise la prise en charge
votre disque dur pour la même pièces exactes d'informations.
>> Donc, si nous faisons la même chose, il a fallu seulement quelques secondes.
Si nous voulons redeploy-- maintenant Je devrais avoir trois conteneurs.
Mais celui-ci est en cours servi sur the-- Seven One.
Alors maintenant, il est le troisième conteneur.
Tout le monde à comprendre ce que je viens de faire ici?
>> Alors maintenant, si vous souhaitez partager cette récipient réel rapide avec vos amis,
vous pouvez juste faire pousser le docker nom du conteneur, nous l'espérons.
Alors maintenant, il va pousser to-- Je ne suis pas signé ici.
Désolé A propos de ça.
Mais je ne vais pas résoudre cela maintenant.
Mais fondamentalement, que l'on commande est juste aller jusqu'à pousser.
Et vous allez être en mesure de voir si vous allez à Docker Hub
Et vous vous connectez, vous êtes va être capable de le voir.
Et puis vous pouvez juste signaler celui qui va
d'utiliser cette image pour aller tirer.
Et ils peuvent l'utiliser.
>> Avec qui, espérons- Je sorte de démontrais
combien il est facile de travailler avec Docker.
Et je vais juste redonner aux Mano.
Et il va prendre d'ici.
>> MANO MARQUES: Très bien merci, merci Nico.
Et alors?
Donc l'une des choses que je voulu faire est de mettre ensemble
pourquoi cela est un important-- pourquoi Docker et pourquoi
conteneurs sont telles une nouveau important,
une nouvelle façon de faire réellement le logiciel.
>> Et avant que je fais, je vais juste présenter quelques statistiques.
Je ne vais pas lire tout cela.
Mais cela vous montre beaucoup sur la façon populaire Ceci est dans la communauté.
Les technologies de base Docker sont open source.
Voilà donc Docker moteur, Compose, Swarm, un tas d'autres trucs
tout est open source.
Et nous avons, qu'est-ce que je dire, 1.300 contributeurs.
Vous voyez maintenant, si vous regardez le nombre d'ouvertures d'emploi, la dernière fois
nous avons examiné, il était d'environ 43 000 emplois ouvertures de mentionner spécifiquement
familiarité avec Docker.
Des centaines de millions d'images ont téléchargés à partir Docker Hub.
Et, ainsi, beaucoup plus grandes statistiques.
>> Pour ceux qui sont curieux, il a été initialement écrit en Python
puis réécrit en Go.
Et ça ne fait que ouvrir source-- il est seulement
été libéré pendant environ 2 ans 1/2, ce qui signifie que dans 2 ans 1/2,
nous avons vu une énorme quantité de croissance et l'importance
de ce dans la communauté.
Et donc je veux parler un peu pourquoi.
>> Donc, juste pour réitérer certaines des Points clés de Nico, Docker est rapide.
Il est portable.
Il est reproductible.
Et il met en place un environnement standard.
>> Et what-- ceci est mon merde éradiquer ce monolithes slide--
il est d'aider les gens font, ce qui beaucoup de l'industrie du logiciel
commencé à le faire dans le début des années 2000, est en mouvement
à partir de ceux-ci monolithique applications simples
où chaque dépendance devait être testé avant l'application entière avait
à se déployer, ce qui pourrait signifier un site Web
seulement eu déployé fois tous les trois mois, ou plus,
à un beaucoup plus de service architecture orientée
ou type différent à base de composants de l'architecture de l'application.
Et ainsi permettant à ces type d'architectures
qui profitent de Docker à courir dans ces trois
principaux domaines du développement, qui est le développement d'écrire votre code réel,
tester votre code, et le déployer.
>> Alors, pourquoi est-ce important?
Si vous êtes a-- laissez-moi vous donner un exemple.
Si vous êtes un site Web développeur de l'appareil, vous êtes
l'élaboration d'un site Web qui est basée sur le base de données que David produite ici.
Désolé David, je vous appelle à.
Si vous vouliez déployer le tout, vous seriez
avoir à attendre sous un traditionnel le développement de logiciels monolithique
environnement, vous auriez à attendre jusqu'à ce qu'il a été fait avec la base de données
avant que vous pourriez réellement faire des modifications à votre site web.
Vous auriez à redéployer le toute demande de le faire.
>> Et ce Docker vous aide à faire est chaque personne travaille sur différents composants
et mettre à jour eux car ils vont, juste faire assurer que les interfaces restent les mêmes.
Donc, ce qu'il a fait est il est décalé personnes
de faire ces massifs monolithique logiciel architecturé que
déployé tous les mois à un continue l'intégration et le développement continue
environnement.
>> Maintenant, ce ne sont pas uniques à Docker, Docker, mais il est tellement plus facile,
qui signifie que vous êtes essentiellement déployer en permanence.
Nous parlons à des entreprises qui sont le déploiement d'applications de parement publics
des milliers de fois par jour, car ils voient la valeur en juste faire
de petits changements, et aussi longtemps car il fonctionne à travers les essais,
laisser aller dans la production.
Nico me disait toujours plus tôt que dans de nombreux environnements,
le cycle de vie standard d'un récipient est mesurée en secondes,
alors une machine virtuelle pourrait être exprimée en mois.
>> Je voulais prendre une légère tourner ici parce que je suis
un établissement d'enseignement.
Je voulais donner un exemple de la façon dont cela fonctionne dans une recherche en éducation
situation.
Donc, il ya une organisation appelés BIOBOXES.
Bioboxes fait l'ADN analyse pour les chercheurs.
>> Maintenant, ce qu'ils ont trouvé était que lorsque un associés-- et ce ne est pas
la faute d'une particulière associés-- mais quand
un chercheur déployé un algorithme pour analyser,
De façon particulière, un échantillon d'ADN, qu'ils écriraient le logiciel,
publier que, peut-être à GitHub ou ailleurs,
puis ils ont été faits.
>> Eh bien, le problème était qu'il est pas nécessairement reproductible.
Parce que, pour comprendre le logiciel,
ils seraient mis en place pour le environnement de développement exacte
ce que chercheur utilisé, habituellement leur ordinateur portable ou un serveur, ou une donnée
centre qui ils utilisaient.
Et par conséquent, il était très difficile de reproduire les résultats de recherche lorsque
l'analyse des échantillons d'ADN à regarder à des choses comme incidence--
comparer l'incidence des crises cardiaques en fonction de certains gènes étant présents,
par exemple, ou le risque de cancer, ou l'un des autres types de choses.
>> Donc, ce qu'ils ont fait à la place était ils ont commencé la création de conteneurs.
Et vous pouvez aller à bioboxes.org, il est une grande organisation.
Et ce qu'ils font est qu'ils produisent conteneurs basés sur la recherche.
Et puis, chaque fois que quelqu'un envoie dans leur échantillon, ils peuvent exécuter.
Et il a tout l'environnement nécessaire pour exécuter cet algorithme
et de produire des résultats.
Et ils trouvent qu'ils sont beaucoup plus probable et beaucoup plus
plus rapidement en mesure de retourner des résultats pour les gens.
>> Et en fait, ce que les gens font exécutent leur propre analyse de l'ADN,
que pour l'envoi de BIOBOXES, et puis biobox prend juste les données,
court contre la variété de différents conteneurs
pour voir des résultats différents basé sur la recherche différente.
Donc, il est un très puissant manière dont les chercheurs
peut faire une seule instance qui permet d'autres personnes pour essayer de reproduire
Les resultats.
>> Alors, comment obtenez-vous commencé?
Nous sommes bien pris en charge sur Linux.
Donc, si vous souhaitez installer rien sur Linux,
vous utilisez votre niveau gestionnaire de paquets à installer.
Si vous utilisez une Debian, il est get apt.
CentOS est yum.
Fedora Red Hat est rpm-- Je ne me souviens pas.
Quoi qu'il en soit, tout est là.
Nous soutenons une grande variété des distributions Linux.
Vous pouvez vérifier ceux dehors.
>> Nous avons également des options pour vous pourrait fonctionner sur Mac ou Windows.
Maintenant Nico mentionné plus tôt que il a été pris en charge uniquement sur Linux.
Cela est vrai, car il a besoin d'un noyau Linux.
Mais, vous pouvez exécuter dans une machine virtuelle.
Et ce que la boîte à outils Docker ne, que vous pouvez télécharger,
il vous donne cette machine virtuelle.
>> Donc, juste un rapide 48 Deuxièmement, je pense, téléchargez.
Vous venez de recherche sur Docker Boîte à outils, le télécharger sur le Mac,
et cette partie est de Bien sûr accéléré car qui
veut regarder un signal de téléchargement?
Installation standard Mac, et puis vous êtes
aller voir Jérôme a mis dans son mot de passe.
Cela est très excitant.
Et puis, il installe un tas ensemble d'outils.
Et particulièrement, elle sera installer une ligne de commande.
Et alors vous pourriez voir Tester ses images Jérôme.
>> Et puis, sur cette base, vous pouvez voir que YouTube
pense que Nico est intéressé par Star Wars, Le spectacle Jimmy Kimmel,
et je pense que Ellen.
Je pense que la dernière est un clip à partir d'un show Ellen.
>> Donc Docker Toolbox vient bien avec plus que juste la machine Docker.
Donc Docker Machine est la chose qui aide
vous configurez un virtuelle machine sur Windows
ou Mac-- votre boîte de Windows ou de votre Mac box-- et vous aide à faire le provisionnement,
>> Mais il est également livré avec Essaim et Compose,
qui sont conçus pour vous aider à faire un grand déploiements à grande échelle de votre application.
Donc, si vous voulez gérer des groupes de noeuds,
des grappes de conteneurs, composer et Swarm sont la voie à suivre à ce sujet.
>> Et bien sûr, il est livré avec Docker Moteur et Kitematic,
qui est ce bureau GUI.
Je dois aussi mentionner Registre Docker, qui ne sont pas inclus dans la boîte à outils,
mais il est une façon pour vous de gérer votre propre registres de Docker images comme Docker
Hub, mais vous pouvez aussi utiliser Docker Hub comme un moyen de le faire.
>> Et, rebondissement, vous voyez il en cours d'exécution dans un récipient.
Et voilà comment nous sommes la distribution de nos diapositives.
Toute cette présentation est en fait un jeu de diapositives HTML.
Et il est en cours d'exécution dans un récipient, que vous pouvez obtenir by--
>> NICOLA KABAR: Oui, il est donc tourne à plein temps sur mon max.
Et je présente d'elle.
Et vous faites juste après Docker vous installez votre boîte à outils.
Vous pouvez juste faire une course de docker et obtenir et utiliser les diapositives.
>> MANO MARQUES: Et voilà.
Donc, nous vous remercions tous d'être venus.
Et nous sommes heureux de répondre aux questions.
Je dois mentionner avant que quiconque laisse il est T-shirts là-bas.
Désolé tout le monde qui regarde ceci sur Livestream ou vidéo,
mais nous avons Docker T-shirts là-bas.
Et nous savons étudiants Docker, et dans mon expérience,
professeurs aussi, comme les vêtements gratuitement.
>> Donc, merci à vous tous d'être venus.
Et suivez-nous sur Twitter si vous voulez, ou ne le faites pas.
Je ne me soucie pas.
Aussi suivez Docker sur Twitter.
Ce qui est aussi intéressant.
Et puis ça y est.
Docker.com.
Je vous remercie.
>> [APPLAUDISSEMENTS]