14 pontos por xguru 2025-06-27 | 2 comentários | Compartilhar no WhatsApp
  • Plataforma de contêineres open source projetada com foco em simplicidade/velocidade/segurança
    • Otimizada para ambientes de HPC (computação de alto desempenho) e sistemas compartilhados
  • Oferece um formato imutável de imagem de contêiner em arquivo único, com suporte a criptografia e assinatura
  • Em vez de isolamento, o foco está na usabilidade integrada, permitindo usar diretamente GPU, rede de alta velocidade e sistemas de arquivos paralelos em ambientes de cluster/servidor
  • Pode importar todos os contêineres de registries OCI (Open Containers Initiative), com máxima compatibilidade com Docker
    • Suporta fazer pull, executar (run) e fazer build da maioria dos contêineres do Docker Hub sem alterações
  • Renomeado a partir do Singularity e transferido como projeto para a Linux Foundation
  • Com contêineres em arquivo único baseados em SIF (Singularity Image Format), é fácil mover, implantar e compartilhar
  • Aplica um modelo de segurança seguro no qual as permissões do usuário dentro e fora do contêiner são as mesmas e, por padrão, não é possível obter elevação adicional de privilégios no host
  • Licença BSD

2 comentários

 
galadbran 2025-06-27

Artigo do unregistry mencionado nos comentários do Hacker News:
Unregistry – envia docker push diretamente ao servidor sem registro | GeekNews

 
GN⁺ 2025-06-27
Comentários do Hacker News
  • Nossa equipe tentou usar o Apptainer em um cluster de computação para design/verificação de silício, mas no fim voltou aos módulos tradicionais em TCL (migrando para Lua)

    • Encontramos vários problemas.
      • Primeiro, os contêineres não conseguem usar uns aos outros. Por exemplo, se ferramentas como Make, GCC, Git estiverem cada uma em um Apptainer diferente, ao entrar no contêiner do Make você não enxerga o GCC
      • Segundo, artefatos que dependem do interior do contêiner não funcionam direito. Ao compilar um programa com um Apptainer do GCC, o binário gerado fica ligado às bibliotecas dentro do Apptainer e não executa, e também surgem problemas com headers C
      • Terceiro, o valor de PATH fica se enrolando o tempo todo, então repetidamente deixamos de enxergar caminhos ou ferramentas necessários fora do Apptainer
      • No geral, a ideia era boa, mas em termos de usabilidade real só trouxe complicação, então acabou sendo muito mais fácil usar diretamente um SO antigo (RHEL8)
    • Eu vejo Apptainer/Singularity como algo parecido com Docker (só que sem configuração completa de rede). Esses problemas também acontecem em contêineres Docker tradicionais.
      • No meu fluxo de trabalho de HPC, uso o Apptainer como substituto direto do Docker, e ele atende bem a esse uso
      • A maior vantagem do Apptainer é ser um contêiner sem privilégios de root. Por isso ele não permite redes complexas, mas é muito mais seguro em ambientes multi-tenant como HPC
    • Se a sua maior reclamação sobre apps em contêiner é que eles agem como contêineres, isso é a própria essência de um contêiner
    • Você não deve misturar pedaços de contêineres, assim como não misturaria binários de distribuições Linux diferentes
      • O ideal é usar o contêiner para desenvolvimento dentro de um único ambiente integrado. Como o contêiner é um ambiente isolado, qualquer coisa compilada precisa permanecer no próprio contêiner
      • Dito isso, também é possível criar vários contêineres a partir da mesma imagem base para garantir compatibilidade de arquivos, desde que você inclua todas as dependências necessárias
  • Fico feliz em ver o Apptainer recebendo atenção. Em alguns casos ele é melhor que Docker, Podman e afins

    • Quando é preciso executar vários trabalhos em um único contêiner (o que não é recomendado em outras tecnologias de contêiner)
    • HPC (e alguns ambientes universitários)
    • Suporte a modelo de distribuição em arquivo único (embora sem suporte a delta)
    • Possibilidade de assinar com criptografia arquivos SIF sem servidor externo separado
    • Suporte forte a GPU
  • O Docker também permite distribuição em arquivo único com os comandos docker save e docker load

    • Não suporta delta, mas recentemente uma solução chamada "unregistry" foi linkada no HN, e ela permite funcionalidade tipo "docker push" e aplicação de delta mesmo sem Docker Registry
  • Tanto o Apptainer quanto o singularity ce são bastante usados em HPC. Os dois surgiram a partir do antigo projeto Singularity, mas não são exatamente idênticos

    • Nós usamos singularity em vários supercomputadores (HPC), e alguns pesquisadores instalam o Apptainer localmente
    • Recentemente encontramos um bug de fuso horário em código Python (matplotlib, xarray etc.); no singularity ce havia problema, mas no Apptainer funcionou corretamente
    • O Apptainer mais novo tem uma base de código parecida, mas as correções de bugs estão chegando mais rápido. Por exemplo, o singularity sobrescrevia o fuso horário do usuário no sistema, e isso causava o problema
    • Link de referência: issue #3686 do singularity
    • O Apptainer não é um fork do antigo projeto Singularity. O Apptainer é o projeto principal original, e só teve o nome alterado por votação da comunidade. Depois passou para a Linux Foundation
      • O caso do singularity ce foi um fork em que a Sylabs contratou os desenvolvedores originais
      • Referência: community announcement
    • Ainda assim, a compatibilidade entre contêineres foi mantida, então algo compilado no Apptainer roda no Singularity também (e vice-versa)
  • Apptainer basicamente é o Singularity. O artigo relacionado está aqui

    • Ao usar sistemas compartilhados em clusters universitários ou governamentais, o Apptainer quase sempre está disponível, enquanto Podman/Docker quase nunca estão
    • Nesses ambientes, em vez de usar contêineres, costuma ser mais vantajoso se dar bem com o administrador de sistemas e entender como aquele cluster opera
    • Tenho curiosidade sobre por que Docker/Podman são menos usados, e por que seria melhor evitar contêineres. Será que é por causa de desempenho?
  • O Flatpak está tentando migrar do OSTree para um modelo baseado em contêineres. Dizem que a grande vantagem é ter tooling de contêiner com manutenção ativa. Mas fico curioso sobre como isso difere do Apptainer

    • Provavelmente o diferencial do Flatpak é fazer controle refinado de permissões por aplicativo, como via xdg-dbus, para permitir uso com cara de nativo
      • Não tenho certeza se o Apptainer chega a esse nível de separação/isolamento completo
      • Se você usar ferramentas como containertoolbx, a diferença entre abordagens de contêiner acaba perdendo importância
      • Sinceramente, há muita sobreposição de funcionalidades entre ferramentas, mas acho isso aceitável
  • No ambiente em que trabalho, o principal motivo para usar Apptainer não tem a ver com distribuição, isolamento ou disponibilidade de software

    • Nosso cluster HPC impõe um limite de cota de inode por usuário, o que dificulta instalar softwares com muitos arquivos (como Anaconda)
    • Mas imagens do Apptainer são um único arquivo baseado em squashfs, então dá para manter várias sem se preocupar com cota de inode
    • Instalar o mesmo software da forma tradicional até é mais fácil, mas a cota se esgota em pouquíssimo tempo
  • Concordo com o comentário do Havoc. A mensagem é ambígua: fica confuso se o Apptainer é um substituto do Flatpak para desktop ou algo voltado para servidores

    • É para servidores. Mas a própria pergunta é meio ambígua
      • O Apptainer serve para executar apps de CLI em contêineres imutáveis e rootless
      • A ferramenta mais parecida é o Fedora Toolbx
      • O principal uso do Apptainer é distribuição e reutilização de ferramentas de computação científica. Ele funciona sem privilégios de root, não permite modificar o rootfs de cada contêiner e monta automaticamente o diretório de trabalho, além de ter bom suporte a GPU (embora eu não tenha testado isso pessoalmente)
      • Referência: Fedora Toolbx
  • O nome "Apptainer" soa estranho de pronunciar e dá uma sensação de que há algo errado nele

  • Como desenvolvedor, você talvez esteja procurando uma ferramenta de contêiner para isolamento

    • Eu criei uma ferramenta baseada em Podman para isolar diferentes projetos de desenvolvimento. Se quiser ver o código ou usar em testes de segurança, confira o código ou o post no blog
    • Fico curioso sobre por que o toolbox não era suficiente
      • Para mim, o toolbox era bom porque, ao instalar ambientes de desenvolvimento por projeto, não era preciso gerenciar vários sistemas de arquivos ocultos
  • Em clusters SLURM e servidores sem acesso root, ele é muito útil

    • Eu também já usei em um cluster SLURM
      • A documentação oficial é boa o bastante para iniciantes
      • Mas, sem fakeroot ou sudo, havia a inconveniência de precisar compilar o Apptainer localmente e depois transferi-lo diretamente para o servidor