User Tools

Site Tools


tutoriais:apptainer

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tutoriais:apptainer [2024-03-15 16:47] gnanntutoriais:apptainer [2025-05-22 16:03] (current) david-local
Line 1: Line 1:
 ====== Utilizando programas através do Apptainer ====== ====== Utilizando programas através do Apptainer ======
  
-O Apptainer é um programa para criação e execução de containers, compatível com o Dockerque permite rodar programas dentro de 'imagens' prontas. Isso evita problemas de compatibilidade entre pacotes do sistema e os requeridos pelo programa.+O Apptainer é um programa para criação e execução de containers, compatível com o Docker que permite rodar programas dentro de 'imagens' prontas. Isso evita problemas de compatibilidade entre pacotes do sistema e os requeridos pelo programa.
  
-Sua principal vantagem em relação ao Docker no nosso caso é não precisar de permissões especiais dos usuários, o que o torna mais adequado a nossos servidores de uso compartilhado.+Sua principal vantagem em relação ao Docker é não precisar de permissões especiais dos usuários, tornando-o mais adequado a nossos servidores de uso compartilhado
 + 
 +Quase tudo que serve para o Singularity serve para o Apptainer.
  
 Abaixo um guia de como rodar um programa dentro do ambiente (no caso, o R). Abaixo um guia de como rodar um programa dentro do ambiente (no caso, o R).
  
-==== Imagens pré-baixadas ==== 
-Para facilitar, deixaremos algumas imagens baixadas em ''/opt/apptainer''. 
  
-Para rodar o R com a imagem ml-verse:+==== Executando uma imagem ====
  
-  apptainer exec /opt/apptainer/ml-verse_latest.sif R  +As imagens são ambientes com as dependências necessárias para que programa funcionepor isso é preciso primeiro baixá-las. <WRAP>++++ Clique para ver os passos |
-   +
-Para Rstudiotemos um script que chama a imagem do ml-verse com os parâmetros necessários, sendo necessário especificar a porta da interface web do Rstudio. É preciso escolher uma porta (qualquer número de 10000 a 40000 que já não esteja ocupado por outro processo no servidor), e acessar o servidor da seguinte forma (no exemplo, foi escolhido o número 12345):+
  
-  ssh -L 12345:localhost:12345 usuario@brucutu.ime.usp.br +Para baixar uma imagem podemos usar o subcomando ''pull''como:
-   +
-Entãochamar o script com o mesmo número:+
  
-  rstudio_apptainer.sh 12345 +  apptainer pull docker://rocker/ml-verse
-   +
-O script irá gerar e exibir uma senha de acesso. Basta acessar pelo navegador o endereço http://localhost:12345 e usar a senha para acessar o Rstudio.+
  
-==== Baixando uma imagem ====+O exemplo baixa uma imagem do R do [[ https://rocker-project.org/ | Projeto Rocker ]] que já vem com o R dentro de um ambiente Ubuntu com um repositório de pacotes pré-configurado para instalação mais rápida. A imagem deve ser baixada no diretório onde o comando foi executado, com extensão .sif (no exemplo, seria ''ml-verse_latest.sif'').
  
-As imagens do Apptainer são ambientes completos, com as dependências necessárias para que o programa incluso funcione corretamentePara baixar uma imagem, podemos usar o subcomando ''pull'', como:+O comando aceita URIs que apontem para imagens que seguem padrão OCIImagens de docker como a do exemplo costumam funcionar.
  
-  apptainer pull docker://rocker/ml-verse+++++ 
 +</WRAP>
  
-Esse exemplo baixa uma imagem do R do [[ https://rocker-project.org/ | Projeto Rocker ]], que já vem com R dentro de um ambiente Ubuntu com um repositório de pacotes pré-configurado para instalação mais rápida. A imagem deve ser baixada na pasta atual onde o comando foi executado o comando, com extensão .sif (no exemplo, seria ''ml-verse_latest.sif'').+Com objetivo de facilitar, **deixaremos algumas imagens pré-baixadas em ''/opt/apptainer''**.
  
-comando aceita URIs que apontem para imagens que seguem o padrão OCIImagens de docker como do exemplo devem funcionar normalmente.+Para executar, utilizamos o comando ''exec'' no escopo da imagemComo exemplo, utilizaremos ml-verse (já disponivel nas máquinas):
  
-==== Executando uma imagem ====+<code bash> 
 +  apptainer exec --nv /opt/apptainer/ml-verse_latest.sif R  
 +</code>
  
-Para executar a imagem, utilizamos subcomando ''apptainer run''especificando nome do arquivo da imagem:+Ao executar o comando, o apptainer irá criar um container baseado na imagem e executar o programa.
  
-  apptainer run ml-verse_latest.sif+Rodar o ''Rscript'' é análogo.
  
-Também é possível executar um comando no escopo da imagem:+Para rodar o RStudio, siga [[servicos:rstudio|o guia]].
  
-  apptainer exec ml-verse_latest.sif R+==== Particularidades do ambiente ====
  
-Ao executar o comando, o apptainer irá criar um container baseado na imagem e executar o programaEssa parte deve ser transparentecom a saída do terminal sendo similar a um programa executado nativamente.+apptainer irá automaticamente disponibilizar seu ''$HOME'' dentro do ambiente, então seus arquivos devem continuar a ser acessíveis normalmente. A maior diferença se dá nas bibliotecas e outras dependências inclusas na imagem. Caso algum pacote dependa de bibliotecas que não estejam inclusaso ideal é baixar ou criar uma imagem mais completa.
  
-==== Particularidades do ambiente ==== +Para instalar pacotes é preciso configurar o .libPaths(). No R, rodar: 
- +<code> 
-Apesar de rodar dentro de um containero apptainer irá automaticamente disponibilizar seu ''$HOME'' dentro do ambiente, então seus arquivos devem continuar a ser acessíveis normalmente. A maior diferença se dá nas bibliotecas e outras dependências inclusas na imagemCaso algum pacote dependa de bibliotecas que não estejam inclusas, o ideal é baixar uma imagem mais completa. Também é possível criar imagens customizadas.+dir.create(Sys.getenv('R_LIBS_USER')recursive=TRUE) 
 +.libPaths(Sys.getenv('R_LIBS_USER')) 
 +</code> 
 +Por padrão isso resultará em pacotes instalados em seu ''$HOME'' na pasta ''R''É possível alterar a variável de ambiente para mexer nesse comportamento.
  
 ==== Particularidades dos servidores do IME ==== ==== Particularidades dos servidores do IME ====
Line 54: Line 54:
 Além do ''$HOME'', o apptainer já disponibiliza o ''/tmp'' e o ''/var/tmp'' (entre outros diretórios). Nas brucutus também configuramos acesso ao ''/var/fasttmp'', que é sempre um SSD. Além do ''$HOME'', o apptainer já disponibiliza o ''/tmp'' e o ''/var/tmp'' (entre outros diretórios). Nas brucutus também configuramos acesso ao ''/var/fasttmp'', que é sempre um SSD.
  
- +==== Referências ==== 
- +  * https://apptainer.org/docs/user/latest/ 
 +  * https://rocker-project.org/use/singularity.html
tutoriais/apptainer.1710532066.txt.gz · Last modified: by gnann

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki