27 puntos por GN⁺ 2024-03-08 | 2 comentarios | Compartir por WhatsApp
  • Una herramienta para compilar imágenes de Docker en binarios independientes y portables
  • Permite ofrecer a los usuarios binarios ejecutables sin comandos como docker run, pip install o npm i

Características

  • Compila imágenes de Docker en binarios portables.
  • Contenedores que no requieren privilegios de root.
  • Soporte para MacOS y Windows (usando QEMU): próximamente
  • Soporte para x86_64 (soporte para arm64 próximamente)
  • Soporte para argumentos
  • Soporte para especificar variables de entorno con -e.
  • Soporte para especificar volúmenes con -v.

Cómo usarlo

  • Instalar dockerc desde la versión más reciente.
  • Generar el binario de salida usando una imagen de Docker Hub o una imagen del repositorio del daemon local de Docker.
  • El binario generado puede invocarse como un binario normal.
  • Las opciones -e y -v pueden especificarse de la misma forma que al usar docker run.
  • Se puede acceder directamente a los servicios de red que se ejecutan dentro del contenedor, sin necesidad de especificar -p.
  • Para cargar imágenes se usa Skopeo; para otras ubicaciones, consultar su documentación.

Opinión de GN⁺

  • dockerc es una herramienta que puede mejorar mucho la usabilidad de Docker, ya que permite a los usuarios ejecutar aplicaciones sin procesos de instalación complejos. Esto puede ser especialmente útil para usuarios no técnicos.
  • La función de compilar imágenes de Docker en binarios simplifica la distribución y el despliegue, lo que ofrece ahorro de tiempo y eficiencia para desarrolladores y administradores de sistemas.
  • Sin embargo, para que esta tecnología sea adoptada de forma amplia, deben resolverse suficientemente los problemas relacionados con seguridad, rendimiento y compatibilidad. Por ejemplo, es necesario verificar si los binarios compilados son tan seguros como la imagen original de Docker y si funcionan sin problemas en todos los sistemas.
  • Otro proyecto que ofrece funciones similares a Docker es Podman, que permite ejecutar contenedores sin privilegios de root.
  • Al adoptar dockerc, conviene considerar la integración con los flujos de trabajo existentes de Docker, la forma de actualizar y gestionar las imágenes, así como el tamaño y el rendimiento de los binarios compilados. Las ventajas de elegir esta tecnología son la simplificación del despliegue y la facilidad de uso, pero también hay que evaluar cuidadosamente el overhead que puede surgir en el proceso de compilación y los posibles problemas de compatibilidad.

2 comentarios

 
cosine20 2024-03-11

Oh, bastante interesante.

 
GN⁺ 2024-03-08

Comentarios de Hacker News

  • Esto es realmente genial.

    • El usuario está intentando hacer su Docker más desplegable. Actualmente consiste en un script simple de Python dentro de un entorno de Python dentro de un contenedor de Docker dentro de un contenedor de QEMU, que automatiza clics y usa netcat. El tamaño del archivo es de 20 GB, bastante ligero para los estándares modernos.
  • En el pasado usé y recomendé nix-bundle¹ o su contraparte oficial, nix bundle².

    • Estas herramientas permiten saltarse el paso de gestionar imágenes de Docker directamente. Son especialmente útiles cuando crear una imagen de Docker es difícil o cuando ese proceso es un arte olvidado.
    • nix bundle puede crear no solo ejecutables pesados, sino también imágenes de Docker, AppImages y algunos otros formatos de imagen/ejecutable.
  • Es realmente bueno volver a los ejecutables portátiles con un OS integrado.

    • Lleva el "funciona en mi máquina" a un nuevo nivel de infierno para resolver problemas. Aun así, el proyecto está genial.
  • El usuario está esperando a que la gente empiece a enviar Dockerfiles que generen contenedores de Docker para ejecutar estas cosas.

  • Aquí hay una gran ironía cósmica.

    • Justo después de la sección que pide solo un ejecutable sin necesidad de compilar ni instalar, aparece inmediatamente el conjuro de zig para compilar este proyecto.
  • ¡Qué gran avance, Nils! Me alegra ver el progreso del proyecto desde que hablamos en AGI House.

    • dockerc usa Zig + crun + squashfs/overlayfs. Nils (el autor) compartió más información en este hilo.
  • Siguen haciendo falta cosas distintas para otras arquitecturas.

    • En este punto, creo que sería mejor compilar estáticamente e incluir un sistema de archivos virtual. Esto es básicamente lo mismo que Sun hizo en los 90.
  • ¡Buena idea! ¿Cómo funciona esto en realidad?

    • El usuario supone que esto envuelve un cargador personalizado + Docker + la imagen en un binario ejecutable.
  • Está genial que hayan usado el dibujo del rant.

    • El siguiente dibujo del rant probablemente dirá: "si ejecutas un ejecutable, debería abrirse una ventana con esa aplicación".
  • ¿Qué significa esto? ¿Que los usuarios podrán distribuir un ejecutable portátil de Ruby sin instalar Ruby?