Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  La folie Docker

 -  Juillet 2014 - 

Docker, présenté ici même en mars dernier, est un conteneur ou isolateur, ou encore système de cloisonnement (plus de détails en seconde partie). Il se repose sur des systèmes comme LXC, les namespaces et les cgroups (control groups) de Linux, qui permettent de limiter et isoler l'utilisation des ressources de type processeur, mémoire, disque, etc. Docker se compare aux BSD Jails et aux zones de Solaris. Il est développé en Go, sous licence Apache 2.0, tout ce qu'il y a de plus libre.

Logo Docker

La première version de Docker date du 20 mars 2013. 16 mois plus tard, 9,308 commits de 509 contributeurs, 2.75 million de téléchargements, plus de 14,000 applications “Dockerisées”, c'est la version 1.1.0. qui est livrée. La folie Docker s'est emparée d'Internet tout entier !

Sommaire

Petite introduction

Les conteneurs ou isolateurs, ou encore systèmes de cloisonnement permettent de faire tourner plusieurs environnements de systèmes d'exploitation sur une seule et même machine physique. Ce type de logiciel se compare avantageusement aux hyperviseurs, virtualisateurs et émulateurs, par le fait que le seul noyau qui tourne est celui de la machine physique, et il n'y a pas de couche de « virtualisation ».

Isolateur :

Isolateur

Émulateur :

Émulateur

Benchmarks :

Changements entre la version 0.11 et 1.0

Construire pour les développeurs

  • Une nouvelle instruction de Docker build est apparue, COPY, qui copie les fichiers et dossiers en l'état depuis le build context;
  • Améliorations autour de l'instruction ADD, et les volumes conservent le propriétaire et les permissions des fichiers pendant le build des images.

Outiller pour les admins sys

  • Docker a désormais la capacité de mettre en pause et redémarrer des conteneurs, permettant aux utilisateurs de récupérer des ressources CPU pour une gestion plus fine de celles-ci.
  • Mise à jour du profil de sécurité pour l'accès aux périphériques et des capacités pour les conteneurs.
  • Au niveau du stockage: amélioration du backend DeviceMapper, prise en charge de XFS, gestion des périphériques physiques et amélioration des performances de la suppression d'un conteneur.
  • L'IANA réserve les ports 2375 et 2376 respectivement pour le trafic HTTP et HTTPS de l'API Docker.

En plus de la correction de 40 bugs et l'amélioration de la cohérence de l'API, la documentation a été entièrement ré-écrite.

Pour les plus intéressés :

Changements entre la version 1.0 et 1.1.0

Très attendue, la nouvelle fonctionnalité .dockerignore

Vous pouvez ajouter un fichier .dockerignore à côté de votre Dockerfile ; dans ce cas, Docker va ignorer les fichiers et répertoires indiqués dans ce fichier quand il enverra le "build context" au démon.

Exemple: https://github.com/dotcloud/docker/blob/master/.dockerignore

Mettre en pause des conteneurs pendant le commit

Auparavant, faire un commit sur un conteneur actif n'était pas recommandé, à cause du risque de fichiers dans un état corrompu (par exemple, si ces fichiers étaient en cours d'écriture pendant le commit).
Les conteneurs sont maintenant mis en pause quand un commit est lancé.

Vous pouvez invalider cette fonctionnalité avec docker commit --pause=false ..

Voir la fin des logs

Vous pouvez maintenant consulter la fin des logs d'un conteneur. Par exemple, pour avoir les dix dernières lignes d'un log, avec la commande docker logs --tail 10 . Vous pouvez aussi suivre en temps réel les logs d'un conteneur sans être obligé de lire le fichier complet avec docker logs --tail 0 -f .

Un fichier tar peut être passé en tant que contexte pour docker build

Vous pouvez donner une archive tar à docker build en tant que contexte. Cela peut être utilisé pour automatiser les docker builds, par exemple : cat context.tar | docker build - ou docker run builder_image | docker build -

Monter/binder votre système de fichiers complet dans un conteneur

/ est maintenant autorisé en tant que source de --volumes. Cela signifie que vous pouvez binder/monter votre système de fichier complet dans un conteneur, si besoin. Par exemple :
docker run -v /:/my_host ubuntu:ro ls /my_host
Cependant il est maintenant interdit de monter vers /.

Autres améliorations et changements

L'allocation de port (utilisez la commande docker port pour voir le mapping) a été améliorée. Dans la version précédente, parfois Docker vous empêchait de démarrer un conteneur avec des ports précédemment alloués, que Docker croyait à tort encore alloués. Cela a été corrigé.

Un bug dans la commande docker save était apparu dans la dernière version. La commande docker save créait parfois des images avec des métadatas invalides. La commande crée maintenant des images avec des métadatas correctes.
La commande docker inspect lancée dans un conteneur affiche maintenant les conteneurs liés à ce conteneur.

Le flag de docker commit a amélioré sa validation, pour vous empêcher de commiter une image avec un nom comme -m. Les noms des images contenant des tirets peuvent entrer en conflit avec les flags de la ligne de commande.

L'API a maintenant des codes de retour améliorés pour start et stop. Essayer de démarrer un conteneur déjà démarré renvoie maintenant une erreur 304.

La performance a été globalement améliorée. Le démarrage d'un démon est plus rapide que dans les versions précédentes. La performance du démon a aussi été améliorée quand il gère un grand nombre d'images et de conteneurs.

Un problème avec les espaces et les multi-lignes dans les Dockerfiles a été corrigé.

Le flag de docker commit a amélioré sa validation, pour vous empêcher de commiter une image avec un nom comme -m. Les noms des images contenant des tirets peuvent entrer en conflit avec les flags de la ligne de commande.

L'API a maintenant des codes de retour améliorés pour start et stop. Essayer de démarrer un conteneur déjà démarré renvoie maintenant une erreur 304.

La performance a été globalement améliorée. Le démarrage d'un démon est plus rapide que dans les versions précédentes. La performance du démon a aussi été améliorée quand il gère un grand nombre d'images et de conteneurs.

Un problème avec les espaces et les multi-lignes dans les Dockerfiles a été corrigé.

Packaging

La version 1.0 est déjà disponible dans Debian Sid/Unstable.

boot2docker pour Mac OS X et Windows

http://boot2docker.io/

boot2docker est une distribution Linux très légère, basée sur Tiny Core Linux, et créée spécifiquement pour lancer des conteneurs Docker. Elle fonctionne complètement en RAM, pèse ~27MB et boote en moins de 5s (YMMV).

boot2docker s'installe sous Windows et sous OSX.

Annonces de la #dockercon

La version 1.0 a été annoncée à l'occasion de la toute première dockercon.

Pour une première édition, elle a réuni 600 personnes (avec 400 sur liste d'attente !), ce qui peut être considéré comme un beau succès marketing.

Cette conférence a notamment été l'occasion pour l'équipe Docker d'annoncer 3 bibliothèques :

libcontainer

Libcontainer permet aux conteneurs de travailler avec les espaces de noms Linux, les control groups, les capabilities, les profils de sécurité APPArmor, les interfaces réseaux et les règles de pare-feu d'une manière cohérente et prédictible.
Dans ce cas, les conteneurs ne s'appuient plus sur des composants de l'espace utilisateur Linux comme LXC, libvirt, ou systemd-nspawn. Docker déclare : « Cela réduit fortement le nombre de parties mouvantes et protège Docker des effets de bord introduits par les versions et distributions de LXC ».

libswarm

Décrit comme « une boite à outils pour créer des services réseaux », l'objet de libswarm est de simplifier les déploiements d'applications Docker dans des configurations multi-nœuds, les nœuds pouvant tourner sur des distributions Linux différentes..
Swarm (nom/verbe) signifie essaim ou essaimer.

Cela permettra en retour de faciliter l'adoption de Docker en entreprise pour les déploiements d'applications sans devoir choisir une plateforme de clustering. Solomon Hykes, fondateur de Docker et développeur de libswarm déclare dans un entretien récent avec Phil Whelan d'ActiveState: "Je ne crois pas qu'il devrait y avoir une seule plateforme de clustering dominante que tout le monde utiliserait".

Démo venant de Dockercon sur youtube :/

libchan

Libchan est une bibliothèque réseau ultra-légère qui permet aux services réseaux de communiquer de la même manière que les goroutines communiquent en utilisant des canaux :

  • Simple message passing
  • Synchronisation pour la programmation parallèle
  • Nesting : les canaux peuvent envoyer (vers) des canaux
  • Libchan gère les options de transport suivantes :
    • In-memory Go channel
    • Unix socket
    • Raw TCP
    • TLS
    • HTTP2/SPDY
    • Websocket

Voir cette discussion sur libchan avec le créateur de Docker (shykes pour Solomon Hykes)

Des spécifications sont précisées.

La folie Docker

Docker est super « à la mode » ! En 15 mois, à peine, et parti de quasiment rien, il devient un logiciel majeur dont tout le mode parle, même le PDG de Microsoft, Satya Nadella, qui a tweeté ce lien sur l'utilisation de Docker dans le cloud Azure de Microsoft !

Entretien avec Jérôme Petazzoni

Peux-tu nous parler de ton parcours ?

Jérôme Petazzoni : j'ai eu un bac S en 1996. Après deux ans de prépa (Maths Sup' et Spé) où j'ai fait trop peu d'informatique à mon goût, je suis parti décrocher un Master d'informatique à l'Université de Marne-la-Vallée (qui depuis s'appelle "Paris Est"). Ensuite, j'ai fait un peu de tout, tant que ça touchait de près ou de loin à Linux ou l'Open Source ; avec une grosse préférence pour les projets d'infrastructure. Je ne vais pas copier-coller mon CV, je pense que ça ennuierait tout le monde. Mais une expérience importante pour la suite, ça a été de découvrir Xen en 2004. L'année suivante, je m'associe avec un ami pour monter Enix et miser à fond sur l'hébergement de VM.

C'est peu après cette époque que je rencontre Solomon, co-founder de dotCloud (l'ancien nom de Docker). Il avait besoin de serveurs, on en avait ; on cherchait une solution de déploiement, c'était justement ce sur quoi travaillait dotCloud : nous étions faits pour nous entendre. C'est comme ça qu'en 2010, il m'a proposé de le rejoindre à San Francisco pour s'occuper de l'infrastructure et des "ops" pour dotCloud, qui venait de déménager pour la Californie.

Tu fais quoi chez Docker ?

Jérôme Petazzoni : plein de choses ! Avant de lancer Docker, nous avons développé et opéré un PAAS (dotCloud, concurrent d'Heroku). Il existe encore et je fais partie de l'équipe qui s'en occupe.

Mais j'aide aussi régulièrement les "core maintainers" (qui travaillent à plein temps sur Docker) ainsi que ceux qui développent les produits SAAS que nous offrons autour de Docker. Tu es victime d'un bug kernel mystique qui fait rebooter ta machine quand tu démarres un conteneur orienté vers l'Ouest ? Ta partition BTRFS prétend être pleine alors que "df" indique le contraire ? Tes règles iptables repeignent en rouge le trafic multicast qui sort de tes conteneurs ? Je peux t'aider !

En parallèle, je fais beaucoup d' "évangélisme", en l'occurrence sous forme de présentations dans diverses conférences (LinuxCon, OSCON…) et dans d'innombrables meet-ups locaux afin de faire connaître Docker, rencontrer nos utilisateurs, et discuter avec eux de leurs besoins et leurs attentes vis-à-vis du projet.

Vous êtes combien d'employés chez Docker maintenant ? Et contributeurs ?

Jérôme Petazzoni : on est une quarantaine d'employés, mais je serais incapable de donner un chiffre précis, car on recrute sans arrêt ! 5 personnes travaillent à plein temps sur le "Docker Engine" (la partie Open Source), mais quasiment toute l'équipe a contribué à un moment ou à un autre, que ça soit une petite feature, un bug fix, de la documentation … Mais l'essentiel du développement est maintenant entre les mains de la communauté, avec plus de 500 contributeurs au total. Il arrive assez souvent que la "core team" ne fasse que de la revue de code des jours durant, pour gérer toutes les contributions que l'on reçoit.

Comment est-ce que vous arrivez à gérer un tel afflux de contributions ? (presque 2000 forks sur github)

Jérôme Petazzoni : tout d'abord, il y a un processus très clair. Le fichier CONTRIBUTING à la racine du dépôt du projet définit tout dans les détails. Pour simplifier, toutes les contributions passent par une "pull request" sur GitHub. Le code et la documentation doivent suivre certaines règles très strictes. Chaque partie du dépôt est gérée par des mainteneurs. Pour qu'une modification soit acceptée (qu'il s'agisse d'une contribution externe ou interne à Docker Inc.!), elle doit être validée par la majorité absolue des mainteneurs concernés. Si seule la documentation change, seuls les mainteneurs de la documentation sont impliqués ; si c'est la gestion du réseau, ça sera d'autres personnes, et ainsi de suite. Si une modification concerne plusieurs sections, il faut l'accord de tout le monde.

Détail intéressant : il y a plus de 20 mainteneurs à ce jour, et moins de la moitié sont employés par Docker Inc. ; ça montre que, le projet est bel et bien entre les mains de la communauté. D'ailleurs, on recherche en permanence de nouveaux mainteneurs pour aider à traiter ce flot de contributions. À bon entendeur …

Comme il y a souvent plus de 100 pull requests ouvertes à un instant donné, nous avons développé un outil en ligne de commande pour faciliter le processus ; par exemple, pour permettre à un mainteneur d'identifier les pull requests le concernant, et tout particulièrement celles ayant déjà reçu l'approbation d'autres mainteneurs (et donc proches d'être intégrées). Cet outil s'appelle Gordon (c'est aussi le nom de la tortue qui vit dans nos bureaux à San Francisco !), il est Open Source, et disponible sur https://github.com/dotcloud/gordon. Il utilise l'API GitHub ; autrement dit, il est utilisable pour d'autres projets souhaitant implémenter un processus similaire.

Pourquoi Go ? D'ailleurs, vous seriez pas le projet le plus important écrit dans ce langage ?

Jérôme Petazzoni : il y a des raisons techniques et non techniques. Sur le plan technique, Go gère nativement l'exécution concurrente, grâce aux goroutines (ça ressemble aux greenlets), tout en étant plus facile d'apprentissage que, par exemple, Erlang ou Haskell. De plus, par défaut, un programme Go se compile en un binaire massif embarquant presque toutes les bibliothèques nécessaires à son exécution. Cela veut dire que pour faire tourner un programme Go, il suffit de télécharger le binaire, l'exécuter, et ça marche. Pas besoin de yum/apt/emerge/pacman des bibliothèques supplémentaires, ou même d'exécuter un script d'installation. Cette caractéristique était très importante au début du projet, afin d'encourager les gens à le tester le plus simplement possible.

Sur le plan non technique, Go, c'est un peu la Suisse des langages modernes. Si on avait choisi Python, la communauté Ruby aurait grogné. Si on avait choisi Ruby, la communauté Python aurait grogné (et on serait probablement passés pour des imbéciles, car au début du projet, la majorité de l'équipe était plus à l'aise en Python qu'en Ruby). Si on avait choisi Java, tout le monde aurait râlé ! Plus sérieusement, Go était un moyen de ne pas choisir de camp. Bien sûr, c'était un pari risqué, surtout à l'époque ; mais même si la communauté Go est beaucoup plus restreinte, elle s'est avérée être très pointue dans les domaines qui nous intéressaient. Au final, même si c'est évidemment plus difficile de recruter des développeurs Go (plutôt que Python, Ruby ou Java), ceux qu'on trouve ont plus souvent le profil que l'on recherche.

Sommes-nous le projet le plus important en Go? Euh, c'est quoi, un projet important? Si on en croit les métriques de GitHub (forks, stars, contributeurs, activité…), oui, très probablement ! Mais il y a peut-être des projets encore plus gros dans les labos secrets de Google ou autre. Disons que c'est probablement le plus visible des projets Open Source écrits en Go!

Comment Docker s'articule-t-il avec LXC (Linux Containers) ?

Jérôme Petazzoni : Docker a parfois été décrit comme une surcouche de LXC. D'un point de vue strictement technique, c'était vrai au début, puisque Docker exécutait "lxc-start" pour lancer les conteneurs.

Cependant, depuis la version 0.9, Docker a ajouté un autre moteur d'exécution natif, basé sur libcontainer. Libcontainer est une bibliothèque Go, permettant de faire le travail de LXC, c'est-à-dire la gestion des namespaces et des control groups (les mécanismes du noyau Linux qui composent les conteneurs). Cette bibliothèque est réutilisable en dehors de Docker si nécessaire. Sous le capot, elle fonctionne exactement comme LXC et utilise les mêmes appels système. Mais elle est utilisée par défaut et, par conséquent, il n'est plus nécessaire d'installer les paquetages LXC pour faire tourner Docker. Ça simplifie l'installation.

Ensuite, par rapport à LXC, Docker offre une tonne d'autres fonctionnalités : une API REST, un système permettant de transférer des images depuis et vers une registry, le build avec les Dockerfiles … Aujourd'hui, Docker est une surcouche de LXC tout comme apt et yum sont des surcouches de tar, cpio, et wget !

Comment Docker se compare-t-il par rapport aux BSD Jails, zones de Solaris, OpenVZ Virtuozzo, et Linux-VServer ?

Jérôme Petazzoni : ces projets se comparent à LXC plutôt qu'à Docker. Docker ne va pas les remplacer, mais plutôt s'intégrer avec eux.

Parallels (la société qui développe OpenVZ) a annoncé qu'elle allait contribuer à libcontainer. Il est donc possible que Docker puisse prochainement lancer des VE OpenVZ. VServer, c'est nettement moins certain (et il y a certainement beaucoup moins de gens qui s'en servent encore).

Il est possible de porter Docker sur FreeBSD et Solaris. Beaucoup de fonctionalités doivent être adaptées : non seulement le moteur d'exécution, mais aussi la couche réseau (il faut adapter le système actuel, qui utilise iptables et un pont Ethernet) et le stockage (BTRFS, AUFS et DeviceMapper n'existent pas et seraient vraisemblablement remplacés par ZFS pour le système de copy-on-write).

On voit tous les jours des nouveaux projets démarrer, mais Docker a eu un succès rarement vu dans le monde du logiciel libre. C'est quoi la recette de cette réussite ?

Jérôme Petazzoni : un énorme coup de bol ! Être au bon endroit, au bon moment, avec la bonne techno et la bonne équipe. En 2008, dotCloud (avant d'être un PAAS) ressemblait énormément au Docker actuel. Mais il manquait plein de choses pour réussir : il fallait des noyaux spéciaux (avec, entre autres, OpenVZ et AUFS), la création d'images était beaucoup plus lourde … L'outil était génial, mais seulement pour des sysadmins très pointus et très motivés. Ça a servi de base pour construire le PAAS dotCloud.

Quelques millions de conteneurs plus tard, on avait acquis une solide expérience dans ce domaine ; cette expérience nous a permis d'aller très vite dans le développement de Docker. Le fait d'être à San Francisco a aussi contribué au décollage rapide, car on côtoyait sans cesse des gens construisant des grosses architectures distribuées, qui ont vu immédiatement le potentiel de Docker et nous ont énormément encouragés. Les conteneurs sont très adaptés, par exemple, aux micro-services.

Enfin, si on regarde en détail les fonctionalités bas niveau du noyau sur lesquelles reposent Docker (et les conteneurs en général), elles n'étaient pas aussi stables il y a ne serait-ce que deux ans (et encore aujourd'hui, elles continuent de s'améliorer sans cesse).

Ta fonctionnalité préférée de Docker ?

Jérôme Petazzoni : je vais dire une des rares que j'ai implémentées, le privileged mode ! Techniquement, rien de sorcier : c'est juste une option permettant de lancer un conteneur sans limiter ses droits d'accès. Il peut tout faire, y compris casser complètement la machine sur laquelle il tourne (comme l'utilisateur root). Mais grâce à ça, il y a plein de choses qu'on peut faire tourner dans Docker (et qu'on ne pouvait pas avant) : OpenVPN, Xorg, KVM, et même Docker lui-même (très utile pour l'intégration continue et le développement du projet).

Grâce à ça, on peut piquer le slogan de NetBSD, et dire "of course it runs in a container" :-)

Les nouveautés à venir dans les prochaines versions de docker (identity, authentification…) ?

Jérôme Petazzoni : d'un point de vue "devops", ce qui est le plus prometteur, c'est à mon avis libswarm. Libswarm permet d'interfacer ensemble des clients Docker (CLI ou utilisant directement l'API), des hôtes Docker (faisant tourner des conteneurs), et des ordonnanceurs de ressources (comme Mesos par exemple). Le but est de pouvoir dire "je veux 4 conteneurs basés sur l'image webfront42, chacun sur une machine différente, mais dans le même datacenter que mon conteneur dbfront69", et que le système choisisse tout seul où les placer en fonction des ressources (mémoire, CPU…) disponibles à un instant donné. Il y a ensuite une infinité de variantes sur ce thème : pouvoir relancer les conteneurs lorsqu'une machine est indisponible ; lancer automatiquement de nouvelles machines (si on est sur un IAAS) lorsqu'on manque de capacité ; s'interfacer correctement avec des load balancers ; etc.

Bien sûr, il va aussi y avoir plein d'améliorations pour une clientèle "enterprise" : signature des images pour en assurer la provenance ; analyse des graphes de dépendances entre images pour déterminer celles affectées par une vulnérabilité ; possibilité d'héberger en interne les services du "Docker Hub" …

Le fondateur (le français Solomon Hykes, Epitech 2006) a recruté un PDG, pris la fonction de CTO et reste actif sur https://github.com/shykes. En France, il aurait pris la fonction de PDG. Est-ce typique des US ?

Jérôme Petazzoni : aucune idée !

Tu peux nous expliquer et nous en dire plus sur l'exploit présent dans la version 0.11 ?

Jérôme Petazzoni : cette attaque utilise un appel système particulier, open_by_handle_at(). Cet appel système permet d'ouvrir un fichier en spécifiant non pas son chemin, mais un identifiant opaque. Cet identifiant opaque est normalement obtenu en utilisant un autre appel système, name_to_handle(). Le but est de faciliter l'implémentation de serveurs de fichiers en userspace (par exemple NFS ou 9P). Cette partie est expliquée dans cet article sur LWN.

Il se trouve que l'identifiant opaque en question est, dans la plupart des cas, l'inode du fichier. Il se trouve aussi que dans la plupart des systèmes de fichiers (incluant EXT2/3/4), l'inode de la racine est toujours 2. Il est alors enfantin d'utiliser open_by_handle_at() pour accéder à la racine du système de fichiers sur lequel se trouve un conteneur.

open_by_handle_at() est contrôlé par une capability, CAP_DAC_READ_SEARCH. Le problème, c'est que jusque Docker 0.11, au lieu d'enlever toutes les capabilities pour ne laisser que celles qui sont inoffensives, Docker enlevait celles qui étaient dangereuses pour laisser toutes les autres. Bilan, quand CAP_DAC_READ_SEARCH a été ajouté au noyau, on a oublié de le mettre dans la liste des permissions dangereuses.

« Mais pourquoi vous avez fait un truc pareil ? Tout le monde sait que la sécurité, ça marche pas comme ça ! Faut tout enlever, et donner uniquement les permissions nécessaires ! » Absolument. C'est un héritage des anciennes versions de LXC, dans lesquelles on ne pouvait spécifier que lxc.cap.drop. Les versions plus récentes permettent de spécifier à la place lxc.cap.keep, mais par souci de compatibilité avec les anciennes versions, on utilisait encore lxc.cap.drop. C'est d'ailleurs une des raisons qui nous ont poussé à développer libcontainer : gérer toutes les versions différentes de LXC devenait difficile.

Détail intéressant : l'exploit ne fonctionne a priori pas si vous utilisez BTRFS (car, au moins sur mes machines, le numéro d'inode de la racine n'est pas 2) ou si /var/lib/docker est sur un autre système de fichiers (l'exploit permet alors tout de même de sauter d'un conteneur à l'autre, en étant un peu créatif).

Enfin, nous avons toujours été assez clairs sur le fait qu'il fallait être prudent lorsqu'on fait tourner des processus en "root" dans des conteneurs ; en particulier du code arbitraire. Notre position est simple : les conteneurs seront un jour aussi fiables que les VM, mais ce jour n'est pas encore arrivé ; et en attendant, il faut utiliser des couches de sécurité additionnelles et/ou limiter le champ d'application des conteneurs. La bonne nouvelle, c'est que 99% des applications n'ont pas besoin des droits "root". Les conteneurs sont donc déjà tout à fait utilisables !

Lire les commentaires

par Nÿco, palm123, BAud, jpetazzo, Sylvestre Ledru, Benoît Sibaud, NeoX, Florent Zara, GeneralZod, tankey, Siosm, olivierweb, Narmer, Sébastien Koechlin, glennie, Bruno Michel, vieuxshell

DLFP - Dépêches

LinuxFr.org

Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)


XZ et liblzma: Faille de sécurité volontairement introduite depuis au moins deux mois

 -  31 mars - 

Andres Freund, un développeur Postgres, s’est rendu compte dans les derniers jours que xz et liblzma ont été corrompus par l’un des mainteneurs du (...)