Vous êtes sur la page 1sur 8

Jetons un coup d'œil au Chapitre 2, Création de services conteneurisés.

Dans ce chapitre, nous allons fournir un service utilisant la technologie des


conteneurs. La première section, provisionnement d'un serveur de base de données conteneurisé. Parlons simplement de la façon dont nous allons
réellement démarrer certains conteneurs ici. Donc, provisionner des services conteneurisés, récupérer des images de conteneurs avec Podman, nous avons
déjà parlé d'images. Les images proviendront d'un référentiel d'images. Et nous allons en saisir un, puis démarrer un conteneur à partir de cette image, à
partir de cette image immuable. Et nous allons le faire en utilisant Podman. J'ai déjà mentionné que Podman remplace Docker. Donc, si vous avez déjà vu
Docker, cela vous semblera vraiment familier. Et si ce n'est pas le cas, eh bien, vous êtes sur le point d'en savoir beaucoup sur ces deux choses. Donc, une
chose que nous pouvons faire est la recherche de Podman search. Vous pouvez maintenant spécifier où vous souhaitez rechercher. Les noms de ces
conteneurs vont ressembler à une URL. Ils vont avoir où le conteneur est hébergé. Ils auront peut-être le nom d'utilisateur, le compte dans lequel il est
hébergé. Il pourrait y avoir une version à la fin, tout cela, vous allez le voir. Donc, si nous ne le spécifions pas, comment sait-il d'où l'obtenir ? Il y a un fichier
de configuration. Nous y reviendrons un peu. Mais il y a un fichier de configuration. Il dit s'ils ne le précisent pas, voici une liste d'endroits où nous pouvons
aller chercher ces choses. Donc ici, nous venons de chercher rhel. Nous n'avons pas spécifié de compte, nous n'avons pas spécifié d'endroit où l'obtenir. Et
donc il va juste parcourir cette liste et les parcourir tous. Maintenant, il est indiqué que la sortie est omise ici car cela pourrait revenir avec beaucoup de
choses en fonction de ce que vous recherchez. Et il y a différentes choses que vous pouvez faire pour cela. Vous pouvez dire montrez-moi simplement ceux
qui ont un certain nombre d'étoiles, montrez-moi ceux qui ont un certain favori ou vous pouvez faire sortir la description. La podman search est un bon
outil. Mais dans ce cas, l'un de ceux que nous avons trouvés est ce register.access.redhat.com/rhel. Maintenant, tout comme avec la commande de
recherche, la commande pull, qui va la télécharger

Donc ici, nous n'avons pas tout précisé, nous lui avons juste dit podman pull rhel et il ramène le tout premier qu'il a trouvé lors de sa recherche.
Maintenant, il semble que nous n'ayons demandé qu'une seule chose, mais il semble que pas mal de choses soient téléchargées. Et c'est en fait un très
petit nombre de choses. C'est parce que les images ont toutes ces couches. Ce sont les couches dont nous avons parlé. Ils vont descendre chacun
individuellement.

maintenant, généralement, quand nous voyons l'un de ces noms d'image, ça va paraître assez gros. Il va y avoir un tas d'informations dans le registre d'où il
vient, peut-être le compte d'utilisateur, le nom de l'image elle-même, et éventuellement encore une balise à la fin. Habituellement, la balise indiquera le
numéro de version. Il pourrait simplement dire dernière si nous parlons de la dernière version

Si nous descendons ici nous pouvons voir une autre commande podman images Cela listera les images que vous avez dans votre cache local Donc ceux-ci
ont déjà été supprimés et vous pouvez maintenant voir ce qu'il y a sur votre machine. Et encore une fois, il le nomme tout, Lorsque vous créez une image
sur votre machine locale, vous allez devoir entrer le nom du registre et votre nom d'utilisateur et des trucs comme ça pour qu'il sache où faire le push si
vous avez l'intention de le télécharger sur votre compte
L'autre chose que nous devons savoir, c'est podman run. C'est pour faire fonctionner un conteneur. Maintenant, si vous lui dites d'exécuter un conteneur
particulier, vous ne spécifiez pas le conteneur, vous spécifiez l'image. Il va créer un conteneur basé sur cette image. Maintenant, la commande run est
spéciale parce que si vous avez déjà téléchargé quelque chose, si vous pouvez le voir dans les images podman et qu'il est là, super, ça va le faire. Mais si
vous lui dites d'exécuter quelque chose et qu'il ne le trouve pas localement, il le recherchera, le téléchargera, puis l'exécutera. Ainsi, vous pouvez
réellement tirer et exécuter en une seule étape avec podman run.

Après cela, il sera disponible localement pour vous. Alors podman run, donne lui le nom d'une image. Et puis ils ont fait quelque chose de spécial ici. Ils ont
en fait changé le programme qui va s'exécuter. Normalement, une image est préprogrammée avec ce que nous appelons un point d'entrée. C'est le thread
à partir duquel le conteneur va être construit. C'est le programme que nous menons actuellement. ce pourrait être MySQL, ce pourrait être Apache,
quelque chose comme ça. Et il dit que lorsque vous démarrez ce conteneur, c'est le programme que nous allons exécuter. C'est la chose que nous mettons
dans le conteneur. Mais vous pouvez spécifier un programme différent à la place. Nous allons afficher le conteneur, mais cette commande echo va être ce
qu'elle va exécuter. Maintenant, lorsque cela se termine, vous récupérez votre invite. Votre conteneur est parti, il va s'arrêter. Nous en avons déjà parlé
aussi. Ces conteneurs sont le programme que vous exécutez. Ce n'est pas un conteneur, puis un programme à l'intérieur du conteneur. Le conteneur est le
programme, c'est le fil. C'est le processus, avec ces oeillères, avec les restrictions spéciales qui s'y rattachent, c'est ce qu'est le conteneur. Donc quand ça
s'arrête, c'est le conteneur arrêté.

Ici en bas, nous avons cette chose supplémentaire à discuter, -d, ils nous jettent beaucoup de trucs. Cette commande, cette commande podman run, je ne
vais pas vous mentir, ça va être long. Nous allons le prendre un morceau à la fois maintenant. Maintenant, ici, nous n'avons pas mis de -d et il nous a
répondu sur la ligne de commande. La sortie réelle de la commande s'est produite ici. La sortie qui vient d'Apache n'est pas quelque chose que vous voulez
normalement voir. Normalement, vous voulez l'exécuter en tant que service en arrière-plan. Mysql, même genre de chose. Ceux-ci sont normalement
exécutés en tant que services en arrière-plan.

Habituellement, nous avons une autre façon de parler à ces services d'arrière-plan en plus d'interagir avec eux. C'est ce que vous verriez si vous faisiez cela
sans le -d, si vous faisiez podman run. Et puis ici, ils ont fait cette image httpd2 4 Si vous exécutiez cela vous verriez la sortie d'Apache sur votre écran Mais
à la place d signifie mis en arrière plan détaché détaché de notre terminal Nous allons obtenir une signature du conteneur qui s'est exécuté, le conteneur
qui a engendré cette image. Et puis nous récupérons notre invite et nous pouvons jouer avec cela à ce stade.

Une autre chose qu'ils font sur cette ligne de commande est quelque chose de légèrement plus avancé ou de faire une redirection de port ici avec ce -p.
Donc, dans ce cas, ils ont dit qu'ils allaient utiliser le port 8080. Maintenant, ces conteneurs lorsqu'ils fonctionnent, ils vont se ramasser à l'intérieur de votre
machine. Ils ont leur propre pool d'adresses IP et ils vont en tirer une adresse. Mais c'est un saut loin de votre réseau, apparaît sur votre réseau qui peut
vous joindre. Vous ne pourrez pas accéder à votre machine, à travers votre machine, à moins que vous ne transformiez votre machine en routeur. Et c'est,
c'est quelque chose pour une autre classe entièrement. Au lieu de cela, ce que nous faisons normalement, c'est simplement de faire rapport sur ces choses.
Donc -p port 8080, 8080 sur ce conteneur, le conteneur généré à partir de cette image va être envoyé à votre machine.

Maintenant, nous n'avons pas spécifié le port extérieur dans ce cas, donc il va choisir le sien. La commande que nous pouvons utiliser pour découvrir qu'il
s'agit du port podman.

podman port répertoriera les ports qui sont transférés. Dans ce cas, il indique que le port 8080 était transféré vers l'hôte local 44389. Il a choisi le sien.
Donc, si quelqu'un essaie de se connecter, que vous le fassiez via localhost ou quelqu'un sur votre réseau, en supposant que vos pare-feu. D'accord avec
cela, si quelqu'un se connecte à votre machine sur le port 44389, il va en fait répondre à partir du port 8080 sur cette image, sur cela, pas l'image, mais ce
conteneur qui a été généré à partir de cette image. Ce -l ici est un cas particulier. Cela signifie latest. La dernière chose dont nous parlions, nous venons de
démarrer ce conteneur. Ainsi, au lieu de dire port podman et de devoir répertorier ce conteneur par son nom ou par son numéro, nous avons simplement
indiqué le dernier auquel nous faisions référence.

Un grand nombre de commandes podman pourront prendre ce -l pour le plus récent. Maintenant, vous pouvez le spécifier. Vous auriez pu dire 8080 : 8080.
Et puis ça aurait été le port extérieur et le port intérieur avec une allumette mais nous y reviendrons plus tard.

Quelque chose qu'ils ne vous ont pas encore montré est cette option de nom. Pouvoir nommer votre conteneur est certainement quelque chose que vous
voudrez faire. Si vous ne le faites pas, si vous ne nommez pas votre conteneur, il choisira son propre nom. Et ça va être bizarre.

Exécutez certaines de ces choses sans lui donner de nom et observez les noms qu'il choisit pour lui-même. Maintenant, en plus d'avoir à chercher quel nom
bizarre il a choisi pour lui-même, pourquoi d'autre devrions-nous, nommer ces choses ? Bien sûr, la chose évidente est que vous savez quel est le nom et
que vous pouvez donc déjà le référencer si c'est vous qui lui avez donné un nom. Mais vous vous souvenez comment j'ai dit que ces lignes de commande
allaient devenir très longues. Ils vont devenir très, très longs, ce qui signifie qu'ils seront très sujets aux fautes de frappe. Et vous allez entrer et exécuter
l'une de ces choses et cela ne fonctionnera pas et vos conteneurs vont mourir immédiatement. Et vous allez revenir en arrière et essayer de trouver la faute
de frappe et la réparer qui a causé cela, puis ça va recommencer et mourir immédiatement. Et vous allez revenir en arrière et trouver une autre faute de
frappe. Et au moment où vous avez fait votre huitième faute de frappe et que vous avez enfin réussi à faire fonctionner la chose. Eh bien, il a choisi son
propre nom à chaque fois, ce qui signifie que vous avez huit exemplaires de ce truc et qu'ils ne fonctionnent pas tous.

Le dernier arrive, les autres sont morts, mais ils sont toujours là et ont besoin d'être nettoyés. Vous allez donc devoir retourner avec un podman rm pour
l'enlever. Et ça ne va pas vous le rappeler. Si vous nommez la chose la première fois que vous remontez pour corriger en laissant cela --name est égal à
n'importe quoi, ça va dire, oh hé! vous ne pouvez pas en démarrer un autre du même nom car il y en a déjà un. Allez d'abord supprimer cela si vous voulez
recommencer, et de cette façon vous gardez votre système propre derrière vous. C'est un autre bonus pour pouvoir le nommer vous-même. Nous en
reparlerons un peu plus dans un instant.
Quelques autres drapeaux que nous voulons voir à ce sujet -i et t, vous les verrez toujours à peu près ensemble. Je ne pense pas les avoir jamais vus
indépendamment les uns des autres. L'un installe la borne et la fixe, l'autre la rend interactive. Même si vous obtenez une sortie de quelque chose, vous ne
pourrez peut-être pas y revenir à moins que vous ne soyez en mode interactif. Donc, si vous voulez pouvoir interagir avec ça, comme dans le cas d'ici. Ils ont
exécuté cette image de base ici. Et au lieu du programme pour lequel il allait être préprogrammé, ils exécutent Bash à la place.

Donc, Bash apparaît parce que nous utilisons le mode terminal interactif, nous sommes en mesure de taper dans bash à l'intérieur de ce conteneur. Et vous
ne pourrez pas le faire à moins que vous ne mettiez le -it là-bas. Donc interactif et terminal, nous avons déjà parlé du -d pour le mode détaché. C'est un peu
le contraire de ça. C'est à ce moment-là que vous ne voulez pas vous occuper de la sortie de cela et que vous vouliez simplement aller vivre en arrière-plan
et faire son propre travail là-bas.

Parlons un peu des variables. j'ai mentionné que vous pouvez obtenir certaines de ces choses à partir de référentiels publics qui peuvent avoir littéralement
des millions de téléchargements. Je pourrais aller sur Docker Hub et télécharger MySQL, peut-être avoir 8 millions de téléchargements. Et encore une fois,
c'est une assez bonne indication que cela ne va probablement pas remplir votre ordinateur de logiciels malveillants que 8 millions de personnes en ont une
copie et que cela n'a pas fait la une des journaux. Bien sûr. Mais ce n'est pas le point en ce moment. Le fait est que quelque chose comme MySQL va exiger
que vous lui fournissiez un peu d'informations pour qu'il démarre. Il va falloir savoir quel est le nom de l'utilisateur. Pour MySQL, il va falloir un mot de
passe utilisateur, peut-être même un mot de passe root, pas pour le conteneur, mais pour MySQL lui-même. Il va avoir besoin de connaître le nom de la
base de données que vous utilisez. Toutes ces choses doivent être alimentées à cette chose pour qu'elle démarre.

Alors, comment pouvons-nous faire en sorte que cela soit accompli pour toutes ces personnes ? Évidemment, on pourrait faire qu'ils mettent un mot de
passe par défaut. Mais sur les 8 millions de personnes qui l'ont téléchargé, combien d'entre elles, selon vous, feraient la bonne chose et changeraient ce
mot de passe par défaut en quelque chose qu'elles seules connaissent. Sur 8 millions, je pense environ 0, n'est-ce pas ? Parce que les gens, vous savez, ils
étaient tous paresseux .

Ainsi, au lieu d'avoir cet attaque avec des millions de mots de passe par défaut, le système utilisé est que nous pouvons lui donner des variables, des
variables réelles. Vous avez vu que nous avons couru là-bas il y a une minute dans le, dans bin bash Vous pouvez lister les variables qui s'y trouvent. Et à
cause de la façon dont l'image est assemblée, elle est configurée pour rechercher des variables particulières à configurer, que si cela existe, c'est le nom
d'utilisateur que je vais utiliser. S'il existe, c'est le mot de passe que je vais utiliser. Et maintenant, nous allons le faire. Nous allons mettre notre commande
d'exécution, -e. Et nous pouvons en fait simplement injecter des variables d'environnement dans l'environnement réel du conteneur que nous utilisons.
Nous avons donc ici GREET est Hello, et NAME est RedHat.

Et ici, ils ont créé un environnement d'impression pour ces deux choses, saluer et nommer à partir de cette image. Donc, il exécute le conteneur basé sur ce
programme et il crache des réponses pour saluer et nommer parce que nous l'avons mis là-dedans. c'est juste des variables shell régulières.
Alors podman run. D'accord, nous allons exécuter, le nom est MySQL personnalisé, génial. On lui donne un nom qui n'a pas à choisir le sien. Et puis nous
avons -e utilisateur MySQL est égal à redhat, d'accord ? Un autre - e. Chaque fois que nous faisons cela, nous obtenons une autre variable, le mot de passe
MySQL est égal .... Un autre mot de passe root -MySQL équivaut à …..... - d mode détaché. Il va fonctionner en arrière-plan. Et puis enfin, la seule chose ici
qui, n'est pas précédée d'un -e, c’est donc le nom de l'image qui va produire le conteneur. Et il va contenir ces variables.

Maintenant, cette image est configurée pour rechercher ces variables spéciales afin d'avoir ses informations de démarrage. Il va y avoir beaucoup de choses
comme ça. c'est assez standard pour les activer.

Maintenant, comment allez-vous savoir lesquels ils sont ? Vous pouvez le laisser planter de nombreuses façons, puis regarder dans les journaux pour voir
pourquoi il s'est écrasé. Et il dira, parce que nous avons cherché cette variable et ne l'avons pas trouvée, vous pourriez obtenir des informations. Podman
inspecte le conteneur ou l'image, et il vous dira, voici ce que nous attendons de vous, que vous nous donniez. Je vous en montrerai un peu plus plus tard.
Ou vous pouvez obtenir où que vous obteniez vos conteneurs, où que vous obteniez vos images. Si vous accédez à la ressource pour cela, comme par
exemple, le catalogue Red Hat Container dont nous allons parler. Si vous naviguez jusqu'à cela, vous verrez des informations sur les conteneurs que vous
recherchez.

Et si vous regardez le Lisez-moi, il vous donnera dans les instructions. Ce sont ceux que nous attendons de vous. Voici un copier-coller, un guide sur la façon
dont vous pouvez tirer ceci et commencer cela. Donc, beaucoup de bonnes façons de le faire.

Un mot sur le catalogue Red Hat Container. C'est un endroit où vous pouvez obtenir de la bonne qualité. Encore une fois, sans manquer de respect pour les
référentiels publics mais public est publicain et vous ne savez pas exactement ce qui se passe avec l'un d'entre eux Ceux que vous avez soutiennent nos
promesses que nous les avons rassemblées, nous les avons inspectées et nous pouvons les soutenir.

Désormais, il se peut qu'il n'y ait pas autant de conteneurs dans le catalogue de conteneurs Red Hat que vous n'en trouverez dans un référentiel public.
Parce que vous avez des gens qui essaient littéralement tout, que cela fonctionne ou non. Donc, vous pourriez avoir un logiciel spécial et ils ont déjà un
conteneur, ce logiciel déjà dedans.

Le plus souvent. Vous voulez juste un conteneur de base que vous pouvez utiliser pour créer un nouveau conteneur à partir d'un conteneur auquel vous
pouvez faire confiance. Et puis vous savez exactement à partir de là ce que vous lui avez fait. J'ai installé ce logiciel, j'ai ajouté cette fonctionnalité, j'ai ajouté
cette chose et vous avez créé votre propre conteneur. Créer votre propre conteneur fait partie du processus régulier de ceci. C'est quelque chose que tout
le monde est obligé de faire à un moment donné, probablement beaucoup. Ce ne sont donc pas des trucs de très haut niveau. C'est facile. Nous allons le
faire nous-mêmes. Alors, procurez-vous un conteneur auquel vous pouvez faire confiance, s'il contient déjà votre logiciel, quelque chose de simple comme
MySQL ou Apache génial. Si ce n'est pas le cas, vous pouvez simplement obtenir une image de base, la mettre vous-même, créer la vôtre. Donc, en
regardant le site Web pour cela,
voici la page de recherche du catalogue Red Hat Container où vous pouvez rechercher ces éléments de la même manière que vous pourriez rechercher en
utilisant la ligne de commande si vous effectuez une podman search et que vous êtes configuré pour utiliser ce dépôt, alors vous en tirerez les mêmes
informations. Alors vous trouvez ce que vous aimez. Vous pouvez faire par fournisseur ou par catégorie ou quoi que ce soit, vous cliquez dessus. Et vous
allez obtenir plus d'informations à ce sujet, y compris le fichier Docker, le fichier conteneur. Cela vous montrera quelle était son image parente, quelles
modifications ont été apportées à cette image parente afin de vous la faire parvenir. Si vous cliquez sur Obtenir cette image, cela vous montrera comment
télécharger la chose.

Voici votre commande pull dont vous aurez besoin pour faire cela. Des informations sur les packages de sécurité qui s'y trouvent, les modifications qui ont
été apportées, l'indice de santé indiquant s'il fonctionne bien ou non, ou s'il est dans un état étrange, vous devrez peut-être obtenir une version différente
s'ils ont des problèmes avec la ligne actuelle ou quoi que ce soit, mais il vous en parlera.

Très bien, il y a donc beaucoup de bonnes choses avec le catalogue Red Hat Container. Allez jeter un coup d'œil à certains d'entre eux, fouillez et obtenez
de bonnes informations sur ces choses et voyez ce qui est disponible, voyez ce que vous pouvez utiliser. Et rappelez-vous que si vous ne trouvez pas
exactement ce dont vous avez besoin, vous pouvez créer le vôtre. Nous allons apprendre cela.

Exercice guidée

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Parlons des conteneurs sans root. Nous en avons parlé un peu avant et comment c'est beaucoup mieux. Je veux dire, si vous n'avez pas besoin des
privilèges supplémentaires, vous ne devriez pas utiliser les privilèges supplémentaires..

Et en n'exécutant pas du tout ces choses en tant que root, il n'y a aucun moyen de s'échapper et d'obtenir des autorisations supplémentaires pour cela.
Alors parlons un peu de ça.

Allons voir le livre. Utilisation de conteneurs sans racine. Nous devrions pouvoir expliquer la différence entre les conteneurs root et rootlets. Décrivez les
avantages et les inconvénients car il y a des inconvénients pour les cas et nous devrions pouvoir fonctionner en tant que root et sans root même avec
Podman.

Jetons donc un coup d'œil à cela. Évolution de l'utilisation des conteneurs. Mais la plupart des outils que nous avons utilisés traditionnellement ont exécuté
ces choses en tant qu'utilisateur privilégié. Comme je l'ai dit avec Docker, quand j'ai commencé avec Docker, il fonctionnait. Vous utiliseriez la commande
Docker pour demander au démon Docker de démarrer quelque chose pour vous. Et c'était le cas, le service fonctionnait en tant que root. Alors maintenant,
il y avait une possibilité que votre conteneur s'exécute en tant que root. Maintenant, comme nous pouvons le voir ici, Podman et OpenShift, les outils Red
Hat, ils vont fonctionner sans racine par défaut. Les nouvelles versions de Docker apparemment depuis la version 2010, un mode sans racine est devenu
généralement disponible. Donc, ce dont je parle concerne les anciennes versions de Docker. Mais même ici, de nombreuses images de conteneurs
communautaires, les éléments de docker.io nécessitent toujours une route pour s'exécuter. Il y a un petit problème, vous devriez vraiment éviter cela si
vous le pouvez. Les meilleures pratiques consistent à conteneuriser les applications de manière à ce qu'elles n'aient pas besoin d'un utilisateur privilégié
pour s'exécuter. Ce n'est pas toujours possible, mais si c'est possible, vous devez absolument le faire. Avantages des conteneurs sans racine.

Très bien! Les conteneurs sans racine sont un nouveau concept. Ce n'est plus si nouveau, mais c'est relativement nouveau. Ajoute une nouvelle couche de
sécurité car vous ne pouvez pas en sortir. Si vous en sortez, vous n'êtes qu'un utilisateur régulier. Permet une très bonne isolation à l'intérieur des
conteneurs imbriqués, permet à plusieurs utilisateurs non privilégiés d'exécuter du code sur la même machine racine. À l'intérieur d'un conteneur sans
racine, vous pouvez toujours regarder et fonctionner en tant que racine locale de ce conteneur.

Et on verra ça, on regardera ça quand on entrera dans l'exercice. Mais à l'extérieur, vous n'allez pas vraiment être root, mais ça y ressemble de l'intérieur.
Vous pouvez donc toujours utiliser certains des avantages d'être root. Vous pouvez toujours avoir dans le conteneur. Ce ne sera tout simplement pas un
problème de sécurité pour sortir. Maintenant, malgré tous ces avantages, l'exécution sans racine fait, bien sûr, qu'il y aura des capacités manquantes. Il y
aura des choses que vous pourrez faire en tant que root en tant que vrai root que vous ne pourrez tout simplement pas faire si vous exécutez le conteneur
en tant qu'utilisateur normal, même s'il prétend être root et signé. Vous ne pourrez pas vous lier aux ports de numéro de chargement si seul root est
autorisé à exécuter un service sur un port inférieur à 1024, c'est pourquoi lorsque nous lui avons fait choisir un nombre par lui-même, ils ont choisi un
nombre très élevé. Ça va toujours faire ça.

Il y a toute une liste de ces défauts sans racine. Si vous voulez prendre un lien, ce lien GitHub ici, jusqu'au marquage maître/sans racine. Cela vous donnera
un aperçu complet des problèmes qui peuvent venir de cela. Mais en général, c'est une bonne chose. J'utilise depuis longtemps des conteneurs sans racine.
Ils ne gênent pas vraiment. C'est juste qu'il y a des cas extrêmes où vous pourriez avoir besoin d'exécuter quelque chose en tant que root.

Comprendre les conteneurs sans racine, les espaces de noms d'utilisateurs. Nous en avons parlé un peu plus tôt. Les conteneurs vont utiliser des espaces de
noms pour s'isoler du système. Mais au lieu de simplement mapper à un utilisateur différent lors de l'exécution de la chose en tant que root, les conteneurs
sans racine vont utiliser l'espace du nom d'utilisateur pour donner l'impression que le code de l'application s'exécute en tant que root à l'intérieur du
conteneur. Donc, comme je l'ai dit, nous verrons que du point de vue du conteneur, il semble être root, mais de l'extérieur, c'est en fait un utilisateur
régulier.

En ce qui concerne la mise en réseau, normalement, ils créeraient simplement un périphérique Ethernet virtuel et lui permettraient d'utiliser ce
périphérique virtuel afin que, lorsqu'il écrivait sur cette carte réseau virtuelle, il soit mappé sur la connexion réelle dont il disposait. Mais seul root est
autorisé à le faire. Seul root est autorisé à créer ce type de périphériques. Ainsi, sur un conteneur sans racine, ils ont quelque chose appelé slirp, qui
fonctionne en bifurquant les espaces de noms utilisateur et réseau des conteneurs et en créant un périphérique de prise qui devient la route par défaut.

Alors maintenant, il est capable de le faire sans avoir à créer un nouvel adaptateur Ethernet. Il fait juste quelques trucs sympas et vous permet de le faire
quand même.

Pour le stockage, ils utiliseraient ces anciens moteurs de conteneurs. Eh bien, d'autres moteurs de conteneurs utiliseraient également ce pilote appelé
overlay. Mais vous n'êtes pas autorisé à superposer des systèmes de fichiers dans les espaces de noms d'utilisateurs. Donc, pour les conteneurs sans racine,
ils ont créé un nouveau pilote de stockage. Ce FUS, ce système de fichiers superposé à l'espace utilisateur, qui est encore plus efficace que le pilote de
stockage VFS qu'ils utilisaient auparavant, et il peut s'exécuter à l'intérieur des espaces de noms.

Ainsi, certaines solutions de contournement, parfois des solutions de contournement, vous rendent plus efficace. Et nous avons vu que nous avons en fait
obtenu certains avantages de certaines des solutions de contournement. D'autres fois, nous avons simplement l'avantage d'avoir le travail autour. Mais oui,
il y a quelques différences. Nous allons passer à un exercice guidé après cela.

Exercice guidée

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

nous avons atteint la fin du chapitre, alors essayons le lab. Maintenant, si vous n'avez jamais vu le laboratoire auparavant, la plus grande différence entre le
laboratoire et l'exercice guidé est que, contrairement à l'exercice guidé, le laboratoire ne vous dira pas exactement quoi faire. Vous avez appris un peu à ce
sujet. Et donc j'espère que maintenant, vous êtes en mesure de simplement suivre les instructions, nous avons les avant de commencer, nous avons
quelques instructions. Nous allons faire ces trois choses. Et si vous pouvez les faire vous-même, c'est génial. Si vous n'êtes pas prêt pour cela, vous pouvez
tourner la page et suivre la solution du lab qui ressemble étrangement à un exercice guidé et vous indique exactement quoi taper. Tant que vous
comprenez ce que vous mettez, il n'y a pas de honte à le faire jusqu'à ce que vous deveniez assez bon pour l'essayer par vous-même. Si vous pouvez le faire
vous-même, tant mieux, si vous le pouvez, si vous devez suivre les instructions, tant mieux. Faisons-le ensemble maintenant et voyons comment cela se
passe.

Vous aimerez peut-être aussi