Quelle est la principale différence entre Docker et Snap?

85

Récemment c't (malheureusement, paywalled ), il y a un article sur Snap et Flatpak.

entrez la description de l'image ici

Cela ressemble beaucoup à Docker, beaucoup de concepts sont les mêmes. Maintenant, ma question, quelle est la différence entre Snap et Docker? S'agit-il de cas d'utilisation différents?

Ivanov
la source

Réponses:

110

Vous trouverez peut-être que l'exposé de Mark Shuttleworth intitulé "Pourquoi nous avons besoin d'un conteneur différent uniquement pour les applications" de Container Camp est pertinent pour votre question. Il parle généralement des ordinateurs virtuels, des conteneurs et de Docker au début, puis continue sur les clichés et explique leur place pendant environ neuf minutes. Voici mon résumé:

  • Différents types de conteneurs se ressemblent mais sont utilisés à des fins différentes.
  • Les conteneurs n'existent pas vraiment au niveau du noyau. Différentes sortes d'illusions sont possibles. Indépendamment, nous pouvons créer des illusions sur ce que les utilisateurs, le réseau, le disque et les processus voient dans un conteneur.
  • Différents types de conteneurs correspondent à différentes classes d’illusions créées.
  • Les clichés sont:
    • Immuable, mais fait toujours partie du système de base.
    • Intégré en termes de réseau, partagez donc l'adresse IP du système, contrairement à Docker, où chaque conteneur obtient sa propre adresse IP.
    • En d'autres termes, Docker nous donne une chose là-bas . Snaps nous donne une chose ici . Par exemple, sur un bureau, une capture instantanée fournit une application directement sur celle-ci.
    • Un cliché ne peut pas polluer le reste du système. C'est dans sa propre boîte. Mais il peut toujours voir (en lecture seule) le reste du système, ce qui lui permet de parler et de s'intégrer au système.

Vous avez posé des questions sur différents cas d'utilisation par rapport à Docker. En voici une que les instantanés peuvent faire, mais que Docker ne peut pas faire: les applications de bureau. Les tiers peuvent expédier des applications de bureau en utilisant des instantanés et les utilisateurs peuvent facilement les installer et les mettre à jour. Un conteneur Docker ne peut pas (facilement) interagir graphiquement avec l'utilisateur à l'écran, charger des documents à partir du répertoire de base de l'utilisateur ou fournir une vidéoconférence via la webcam de l'utilisateur. Snaps peut (une fois l'autorisation donnée).

Vous pourriez vous demander en quoi cela est mieux que d’utiliser des AAE. Mais, comparé à Docker, cela revient à demander comment Docker est meilleur qu’à installer manuellement des dépendances sur un système. C'est mieux, mais exactement quelle serait probablement la meilleure réponse dans une question distincte, non spécifique à Docker.

Robie Basak
la source
3
Ce n'est pas vrai. Docker peut interagir avec les applications de bureau (une fois l'autorisation donnée). github.com/jamrizzi/docker-gtk
Jam Risser
2
Cela ressemble à Sandboxie pour Windows. Les programmes en bac à sable peuvent ouvrir des boîtes de dialogue, accéder à tous les fichiers locaux, mais lorsqu'ils écrivent, ils écrivent simplement dans leur bac à sable.
feedc0de
1
Qu'est-ce que l'outil que vous associez pour faire différemment d'un docker normal? Vous pouvez monter votre socket x11 dans le menu fixe sans aucune version spéciale du menu fixe.
feedc0de
1
Ce n'est pas un outil, c'est une démonstration
Jam Risser
1
@jamrizzi Il semble que vous donniez simplement à docker l'accès au socket X11 dans un script. Ceci est assez loin d'impliquer l'utilisateur dans ce processus (où se trouve le dialogue "Docker veut accéder à l'affichage. Annuler ou autoriser?"?)
Thorbjørn Ravn Andersen