27 pontos por GN⁺ 2024-03-08 | 2 comentários | Compartilhar no WhatsApp
  • Ferramenta para compilar imagens Docker em binários independentes e portáteis
  • Permite fornecer aos usuários binários executáveis sem necessidade de comandos como docker run, pip install ou npm i

Recursos

  • Compila imagens Docker em binários portáteis.
  • Contêineres que não exigem privilégios de root.
  • Suporte a MacOS e Windows (usando QEMU): planejado
  • Suporte a x86_64 (suporte a arm64 planejado)
  • Suporte a argumentos
  • Suporte à definição de variáveis de ambiente com -e.
  • Suporte à definição de volumes com -v.

Como usar

  • Instale o dockerc a partir da release mais recente.
  • Gere o binário de saída usando uma imagem do Docker Hub ou uma imagem do repositório do daemon Docker local.
  • O binário gerado pode ser executado como um binário comum.
  • As opções -e e -v podem ser especificadas da mesma forma que ao usar docker run.
  • É possível acessar diretamente os serviços de rede executados dentro do contêiner, sem necessidade de especificar -p.
  • O carregamento de imagens usa Skopeo; para outros locais, consulte a documentação correspondente.

Opinião do GN⁺

  • O dockerc é uma ferramenta que pode melhorar bastante a usabilidade do Docker, permitindo que os usuários executem aplicações sem processos de instalação complexos. Isso pode ser especialmente útil para usuários não técnicos.
  • A capacidade de compilar imagens Docker em binários simplifica a distribuição e a implantação, oferecendo economia de tempo e eficiência para desenvolvedores e administradores de sistemas.
  • No entanto, para que essa tecnologia seja amplamente adotada, questões relacionadas a segurança, desempenho e compatibilidade precisam ser suficientemente resolvidas. Por exemplo, é necessário verificar se os binários compilados são tão seguros quanto as imagens Docker originais e se funcionam sem problemas em todos os sistemas.
  • Outro projeto com funcionalidades semelhantes às do Docker é o Podman, que oferece a capacidade de executar contêineres sem privilégios de root.
  • Ao adotar o dockerc, é preciso considerar a integração com os fluxos de trabalho existentes do Docker, os métodos de atualização e gerenciamento das imagens, além do tamanho e do desempenho dos binários compilados. Os benefícios dessa tecnologia estão na simplificação da distribuição e na facilidade de uso, mas também é necessário avaliar com cuidado o overhead do processo de compilação e possíveis problemas de compatibilidade.

2 comentários

 
cosine20 2024-03-11

Oh, bem interessante.

 
GN⁺ 2024-03-08

Opiniões do Hacker News

  • Isso é realmente muito legal.

    • O usuário está tentando tornar seu Docker mais distribuível. No momento, é um script simples em Python dentro de um ambiente Python dentro de um contêiner Docker dentro de um contêiner QEMU, automatizando cliques e usando netcat. O tamanho do arquivo é de 20 GB, o que é bem leve para os padrões modernos.
  • No passado, eu usei e recomendei nix-bundle¹ ou sua contraparte oficial, nix bundle².

    • Essas ferramentas permitem pular a etapa de gerenciar imagens Docker diretamente. Isso é especialmente conveniente quando criar uma imagem Docker é difícil ou quando esse processo virou uma arte esquecida.
    • nix bundle pode criar não apenas executáveis grandes, mas também imagens Docker, AppImages e alguns outros formatos de imagem/executável.
  • É realmente bom voltar para executáveis portáteis com um SO embutido.

    • Isso leva o “funciona na minha máquina” a um novo nível de inferno de solução de problemas. Ainda assim, o projeto é legal.
  • O usuário está esperando que as pessoas comecem a enviar Dockerfiles que gerem contêineres Docker para executar essas coisas.

  • Há uma grande ironia cósmica nisso.

    • Logo depois da seção pedindo apenas um executável, sem precisar compilar nem instalar, vem imediatamente a invocação de Zig para compilar este projeto.
  • Isso é um avanço legal, Nils! Fico feliz em ver o progresso do projeto desde que conversamos na AGI House.

    • O dockerc usa Zig + crun + squashfs/overlayfs. Nils (o autor) compartilhou mais informações nesta thread.
  • Ainda são necessárias coisas diferentes para outras arquiteturas.

    • Neste ponto, acho que seria melhor compilar estaticamente e incluir um sistema de arquivos virtual. Isso é basicamente igual ao que a Sun fez nos anos 90.
  • Boa ideia! Como isso realmente funciona?

    • O usuário supõe que isso seja um loader personalizado + Docker + a imagem empacotados em um binário executável.
  • Foi legal usar a ilustração do rant.

    • A próxima ilustração do rant provavelmente será sobre “executar um executável deveria abrir uma janela com esse aplicativo”.
  • O que isso significa? Agora os usuários podem distribuir um executável Ruby portátil sem instalar Ruby?