16 votos

¿Instalar Docker a través de apt vs snap?

Estoy empezando a construir mi propio servidor multimedia que usará Docker para diferentes paquetes. Principalmente Plex, Radarr, y demás.

Aunque he experimentado un poco con Linux antes, nunca supe qué es snap, siempre usé apt.

Ahora que he empezado a investigar al respecto, puedo ver el atractivo para ciertos usos, principalmente para pruebas y programas autocontenidos como GIMP.

Sin embargo, estoy confundido con Docker, ya que conecta sus propios contenedores a otros contenedores y luego al sistema. ¿Eso significaría que los contenedores de Docker están dentro del contenedor snap, si lo instalé a través de snap?

¿Existen diferencias significativas entre snap y apt en particular para Docker? ¿Alguna diferencia funcional? ¿Alguna diferencia de uso con la que pueda encontrarme más adelante?

Es decir, si recibiera una computadora con Docker instalado con uno u otro, ¿mi uso sería diferente de uno a otro o es todo lo mismo?

Leí que algunas personas dijeron que snap a veces tarda más en arrancar, ¿pero además de eso, hay alguna diferencia?

15voto

Artur Meinild Puntos 31

En mi experiencia y opinión, no habrá mucha diferencia en usar Docker desde la instalación de snap vs. apt. Sin embargo, es importante que elijas uno o el otro, ya que no pueden realmente coexistir. En cuanto a abordar algunas de tus preguntas específicas:

¿Eso significaría que los contenedores de Docker están dentro del contenedor de snap, si lo instalé a través de snap?

De cierta manera, esto es cierto. Pero más bien, los contenedores de Docker se ejecutan en un entorno aislado. Sin embargo, la abstracción de snap es bastante transparente, así que no creo que haya ninguna diferencia práctica en el rendimiento.

¿Existen diferencias notables entre snap y apt para Docker específicamente? ¿Alguna diferencia funcional? ¿Alguna diferencia de uso con la que pueda encontrarme más adelante?

La mayor diferencia puede estar en la contención de los datos. Según la página de Docker de Snapcraft:

Esta compilación solo puede acceder a archivos en el directorio de inicio. Por lo tanto, los Dockerfiles y todos los demás archivos utilizados en comandos como docker build, docker save y docker load deben estar en $HOME.

Así que por defecto, la versión de snap solo accederá a archivos en $HOME, mientras que la versión de apt puede acceder a archivos en cualquier lugar.

Como también mencionaste, los snaps pueden afectar los tiempos de arranque y carga, pero principalmente en sistemas más antiguos. En sistemas más nuevos con discos SSD, esto no debería ser un problema.

Además, al ejecutar la versión de snap, el servicio de Docker que se ejecuta (docker.service) no es visible directamente en el sistema. Esto significa que cualquier ajuste fino del servicio systemd no es posible en la misma medida que con la versión de apt.

Finalmente, las aplicaciones de snap se actualizan automáticamente, con una opción de rebote a las últimas 2 versiones de forma predeterminada. Puede que prefieras esto o no.

A partir del 31/03/2022 y para Ubuntu 20.04 Focal, la versión de apt de Docker es 20.10.7, mientras que la versión de snap es 20.10.12.

Para mayor referencia, la última versión de los repositorios oficiales de Docker es la 20.10.14. Por lo tanto, si deseas la última versión absoluta, se recomienda instalarla como un paquete apt desde los repos oficiales de Docker.

Conclusión

En general, la funcionalidad básica de Docker será la misma (dejando de lado la contención de datos, el control de servicio y posibles diferencias menores de versión), sin importar qué opción de instalación elijas. Tanto la versión de snap como la de apt deberían ser generalmente adecuadas para uso en producción, pero la versión de apt permitirá más posibilidades de control y personalización a nivel bajo.

1voto

ei-grad Puntos 111

Recomendaría no usar la versión snap de docker, así como cualquier otro paquete snap si ya estás utilizando los paquetes apt en el sistema. Generalmente, se considera una mala práctica usar varios administradores de paquetes diferentes en el sistema, y si utilizas Ubuntu (no Ubuntu Core) - ya estás utilizando los paquetes apt, por lo que usar snap para cualquier cosa debe hacerse con precaución.

Por ejemplo, si instalas docker a través de snap (posiblemente mediante la instalación de algún otro paquete snap que depende de docker, como la herramienta dive que está ausente de los repositorios de apt, pero está disponible a través de snap), silenciosamente rompería tu instalación existente de docker con apt - snap sobrescribiría silenciosamente /var/run/docker.sock, y tus contenedores docker en funcionamiento actualmente se volverían inaccesibles. Necesitarías desinstalar el docker de snap y usar systemctl restart docker.socket para solucionar el problema.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X