¿Cuál es la principal diferencia entre Docker y Snap?

85

En el último c't (tristemente pagado ) hay un artículo sobre Snap y Flatpak.

ingrese la descripción de la imagen aquí

Esto suena muy similar a Docker, muchos conceptos son iguales. Ahora mi pregunta, ¿cuál es la diferencia entre Snap y Docker? ¿Son esos casos de uso diferentes?

Ivanov
fuente

Respuestas:

110

Es posible que la charla de Mark Shuttleworth "Por qué necesitamos un contenedor diferente únicamente para aplicaciones" en Container Camp sea relevante para su pregunta. En general, habla sobre máquinas virtuales, contenedores y Docker al principio, continúa con las instantáneas y cómo encajan en unos nueve minutos. Aquí está mi resumen:

  • Los diferentes tipos de contenedores tienen el mismo aspecto pero se usan para diferentes propósitos.
  • Los contenedores no existen realmente en el nivel del núcleo. Son posibles diferentes tipos de ilusiones. Independientemente, podemos crear ilusiones sobre lo que los usuarios, la red, el disco y los procesos ve un contenedor.
  • Los diferentes tipos de contenedores son realmente sobre diferentes clases de las ilusiones que se crean.
  • Los snaps son:
    • Inmutable, pero sigue siendo parte del sistema base.
    • Integrado en términos de red, así que comparta la dirección IP del sistema, a diferencia de Docker, donde cada contenedor obtiene su propia dirección IP.
    • En otras palabras, Docker nos da algo allí . Snaps nos da una cosa aquí . Por ejemplo, en un escritorio, un complemento proporciona una aplicación directamente en él.
    • Un chasquido no puede contaminar el resto del sistema. Está en su propia caja. Pero aún puede ver (solo lectura) el resto del sistema, lo que le permite hablar e integrarse con el sistema.

Preguntaste sobre diferentes casos de uso en comparación con Docker. Aquí hay uno que los snaps pueden hacer, pero Docker no puede: aplicaciones de escritorio. Los terceros pueden enviar aplicaciones de escritorio usando snaps, y los usuarios pueden instalarlas y actualizarlas fácilmente. Un contenedor Docker no puede (fácilmente) interactuar gráficamente con el usuario en la pantalla, cargar documentos desde el directorio de inicio del usuario o proporcionar videoconferencias a través de la cámara web del usuario. Los snaps pueden (una vez que se les haya otorgado permiso).

Puede preguntar cómo es esto mejor que usar PPA. Pero en comparación con Docker, es como preguntar cómo Docker es mejor que instalar las dependencias en un sistema a mano. Es mejor, pero exactamente cómo se respondería mejor en una pregunta separada, no específica de Docker.

Robie Basak
fuente
3
Esto no es verdad. Docker puede interactuar con aplicaciones de escritorio (una vez que se le haya otorgado permiso). github.com/jamrizzi/docker-gtk
Jam Risser
2
Esto suena como Sandboxie para Windows. Los programas de espacio aislado pueden abrir diálogos, acceder a todos los archivos locales, pero cuando escriben, simplemente escriben en su espacio aislado.
feedc0de
1
¿Qué hace esa herramienta que vinculas de manera diferente a un acoplador normal? Puede montar su zócalo x11 en la ventana acoplable sin ninguna versión especial de ventana acoplable.
feedc0de
1
No es una herramienta, es una demostración
Jam Risser
1
@jamrizzi Parece que lo que haces es simplemente darle acceso a la ventana acoplable al zócalo X11 en un script. Esto está bastante lejos de involucrar al usuario de todos modos en este proceso (¿dónde está el diálogo "Docker quiere acceder a la pantalla. Cancelar o Permitir?")
Thorbjørn Ravn Andersen