Difference between revisions of "Singularity3"
Mauferrari (talk | contribs) (→= Esta será a versão utilizada na rede VeRLab/JLab a partir de mar/2022) |
Mauferrari (talk | contribs) (→Arquivo único, extensão .sif: NÃO é possivel editar o container) |
||
| Line 27: | Line 27: | ||
<br> | <br> | ||
==== '''Arquivo único, extensão <code>.sif</code>''': <span style="color: red;">NÃO</span> é possivel editar o container ==== | ==== '''Arquivo único, extensão <code>.sif</code>''': <span style="color: red;">NÃO</span> é possivel editar o container ==== | ||
| − | * Destinado para fase de | + | * Destinado para fase de testes (production) |
* Vantagem: Em geral, ocupa menos espaço (comprimido) e executa mais rápido que um container equivalente no formato sandbox. Também suporta criptografia | * Vantagem: Em geral, ocupa menos espaço (comprimido) e executa mais rápido que um container equivalente no formato sandbox. Também suporta criptografia | ||
* Desvantagem: Não pode-se fazer modificação no container. Para instalar/editar algo, tem que transformar em '''"pasta sandbox"'''. | * Desvantagem: Não pode-se fazer modificação no container. Para instalar/editar algo, tem que transformar em '''"pasta sandbox"'''. | ||
Revision as of 14:54, 20 January 2022
Contents
- 1 Singularity CE 3.x (Community Edition)
- 1.1 Esta será a versão utilizada na rede VeRLab/JLab a partir de mar/2022
- 1.2 Documentação oficial Singularity v3.x
- 1.3 IMPORTANTE: Diferença entre os 2 formatos suportados pelo build:
- 1.4 Passo a Passo: caso de uso do Singularity
- 1.4.1 Criar sua máquina container no formato "pasta sandbox" (para instalar os pacotes e dependências dos seus experimentos)
- 1.4.2 Executar seu container singularity no formato "pasta sandbox" (modo edição ou modo leitura)
- 1.4.3 Converter uma máquina container singularity do formato "pasta sandbox" para o formato .sif
- 1.4.4 PIP
- 1.5 Docker Hub: Máquinas Container Prontas!
- 1.6 Alguns Comandos Básicos
- 1.7 build: Criar uma máquina container
- 1.8 shell: Executar a máquina container e interagir no shell:
- 1.9 opção --writable: Permitir que mudanças sejam salvas na imagem da máquina container (instalar pacotes):
- 1.10 opção --bind:Montando pastas da máquina host para acessar dentro da máquina container
Singularity CE 3.x (Community Edition)
Esta será a versão utilizada na rede VeRLab/JLab a partir de mar/2022
Documentação oficial Singularity v3.x
User Guide CE v3.9.x
Adm Guide CE v3.9.x
Apenas para problemas mais específicos de segurança e instalação!
Exemplos de Definition Files
Exemplos de container prontos na Sylabs Cloud Library
IMPORTANTE: Diferença entre os 2 formatos suportados pelo build:
Arquivo único, extensão .sif: NÃO é possivel editar o container
- Destinado para fase de testes (production)
- Vantagem: Em geral, ocupa menos espaço (comprimido) e executa mais rápido que um container equivalente no formato sandbox. Também suporta criptografia
- Desvantagem: Não pode-se fazer modificação no container. Para instalar/editar algo, tem que transformar em "pasta sandbox".
- compressed read-only Singularity Image File (SIF) format suitable for production (default)
Pasta Sandbox sandbox directory : INDICADO PARA MODIFICAR a imagem (instalar pacotes), sem limitações de espaço significativas
- Destinado para desenvolvimento inicial do container, quando ainda não se sabe exatamente as configurações e ferramentas a serem usadas, logo o container ainda sofre muitas alterações.
- Vantagem: vários arquivos e sub-pastas que são expansíveis automaticamente conforme os pacotes são instalados (opção --writable). O tamanho do disco é expansível conforme disponibilidade da máquina host.
- Desvantagem: Mais para execução!
- writable (ch)root directory called a sandbox for interactive development ( --sandbox option)
Passo a Passo: caso de uso do Singularity
Criar sua máquina container no formato "pasta sandbox" (para instalar os pacotes e dependências dos seus experimentos)
1) Criar sua pasta de usuario em /srv/forge/fulano/ ou /homeLocal/fulano :
- Foi escolhido que das máquinas de processamento na rede, apenas EPONA e GHOST serão capazes de criar um container e abrir em modo edição com
$sudo singularity shell --writable.... - Outra restrição é que essa permissão só pode ser executada na pasta
/srv/forge
cd /srv/forge mkdir fulano cd /srv/forge/fulano
cd /homeLocal mkdir fulano cd /homeLocal/fulano
2) Criar seu container singularity no formato "pasta sandbox" para ser possível instalar pacotes (Mais dicas sobre usar URL Docker Hub):
sudo singularity build --sandbox [pasta_destino] [origem] sudo singularity build --sandbox my_container docker://jjanzic/docker-python3-opencv:opencv-4.0.1
Executar seu container singularity no formato "pasta sandbox" (modo edição ou modo leitura)
1) Executar seu singularity no formato "pasta sandbox" em modo edição para instalar pacotes:
sudo singularity shell --writable my_container/
- Use
sudosomente quando necessário (e.g., instalação de pacotes e configuração). Quando for rodar o container para experimentos, não será necessário invocar o singularity com permissãosudo. - Foi escolhido que das máquinas de processamento na rede, apenas EPONA e GHOST serão capazes de criar um container e abrir em modo edição com
$sudo singularity shell --writable.... - Outra restrição é que essa permissão só pode ser executada na pasta
/srv/forge
2) Executar seu singularity no formato "pasta sandbox" em modo leitura para testar (não precisa do sudo):
singularity shell my_container/
Converter uma máquina container singularity do formato "pasta sandbox" para o formato .sif
Depois de pronta, a máquina container, pode ser convertida do formato "pasta sandbox" para o formato de .sif) isso permite que ela execute mais rápido, reduz o espaço em disco.
O container pronto pode ser armazenado na sua pasta /home/nome_usuario da rede, assim pode ser executada como leitura de qualquer máquina de processamento que o usuário logar.
1) Para converter do formato "pasta sandbox" para o formato .sif. Dicas sobre conversão de formatos das máquinas container:
sudo singularity build [destino] [origem] sudo singularity build my_container-compact.sif my_container/
PIP
O Python Package Installer, também conhecido como PIP, é responsável por instalar os pacotes Python criados pela comunidade. Dentro do singularity + moosefs, ele tem um comportamento anômalo, não instalando nas pastas padrão. Tais pastas "padrão" são especificadas diretamente no código-fonte do python, mais precisamente no módulo sys.
Faz-se portanto necessário utilizar a flag -t/--target ao instalar os pacotes via pip, apontando para a pasta dist-packages da distribuição utilizada.
pip install <package> -t /usr/local/lib/python2.7/dist-packages/
Converter do formato "pasta sandbox" para o formato .sif
- Para converter uma "pasta sandbox" para o formato
.sif. Dicas sobre conversão de formatos das máquinas container:
sudo singularity build my_ubuntu.sif my_container/
Docker Hub: Máquinas Container Prontas!
- Docker Hub: várias imagens prontas com ferramentas instaladas
https://hub.docker.com/
Por exemplo pode-se buscar no google: "docker hub opencv ubuntu", uma das respostas será o repositório
https://hub.docker.com/r/jjanzic/docker-python3-opencv
Para usar um endereço de imagem docker hub e criar seu container singularity, usa-se o formato docker://REPOSITORIO:TAGS
No caso do repósitório exemplo, ao abrir o link, vai encontrar diversas TAGS listadas na pagina:
List of available docker tags: opencv-4.1.0 (latest branch) contrib-opencv-4.1.0 (opencv_contrib branch) opencv-4.0.1 contrib-opencv-4.0.1 opencv-4.0.0 contrib-opencv-4.0.0 opencv-3.4.2 contrib-opencv-3.4.2 (...)
Assim para criar o container usando build e copiando do repositório exemplo a tag opencv-4.0.1, tem-se:
sudo singularity build --sandbox opencv-base docker://jjanzic/docker-python3-opencv:opencv-4.0.1
More details about the different build options and best practices, read singularity flow:
https://sylabs.io/guides/2.5/user-guide/introduction.html#the-singularity-usage-workflow
Alguns Comandos Básicos
https://www.sylabs.io/guides/2.5/user-guide/quick_start.html#interact-with-images
-
build: Cria uma imagem para a máquina container
-
shell: Executa a imagem da máquina container e permite a interação no prompt do shell
-
exec: Executa um comando na máquina container, em segundo plano, e apresenta o resultado no shell da máquina host
-
run: Executa ações e scripts configurados no container, como se fosse um executável.
- opção
--build: Permite acessar pastas e arquivos (path) da máquina host dentro da máquina container (outras dicas sobre --build)
build: Criar uma máquina container
Criar uma máquina container editável (para instalar pacotes)
- Deve-se usar um singularity no formato "pasta sandbox" (estrutura de diretórios). Dicas sobre a opção
--sandbox. - Criar singularity sandbox usando o repositório Ubuntu 18.04 do Docker Hub:
sudo singularity build --sandbox my_container/ docker://index.docker.io/library/ubuntu:18.04
sudo singularity build --sandbox my_container/ docker://index.docker.io/library/ubuntu:latest
- Exemplo singularity sandbox usando um repositório qualquer do dockerhub
sudo singularity build --sandbox my_container/ docker://repository_name:tag
outros exemplos menos usados, pois criam container's com limitação de edição ou não editável
- Criar uma máquina container em formato
.img(read-only) a partir de um repositório Docker Hub:
sudo singularity build my_ubuntu.img docker://index.docker.io/library/ubuntu:latest
Deve-se usar o formato .img (writable) a partir de um repositório Docker Hub:
sudo singularity build --writable my_ubuntu.img docker://index.docker.io/library/ubuntu:latest
- Para aumentar o tamanho do disco no container formato
.imgpode-se utilizar o comandosingularity image.expand --size XXX
singularity image.expand my_test.img # Specify a size for an operation in MiB, i.e. 1024*1024B (default 768MiB) singularity image.expand --size 500 my_test.img # expand size of 500 MiB
- Converter ou Criar uma máquina container em formato de imagem a partir de uma pasta sandbox: (Dicas sobre conversão de formatos das máquinas container
sudo singularity build my_ubuntu.simg my_container/
- Criar uma máquina container em formato
.simg(read-only) a partir de um repositório Docker Hub:
singularity build lolcow.simg docker://godlovedc/lolcow
shell: Executar a máquina container e interagir no shell:
You can make changes to the container (assuming you have the proper permissions to do so) but those changes will disappear as soon as you exit. To make your changes persistent across sessions, use the --writable option. It’s also a good practice to shell into your container as root to ensure you have permissions to write where you like.
- Executar a máquina container no shell, sem salvar modificações feitas na sessão:
singularity shell my_container/
singularity shell my_ubuntu.img/
- para algum teste de configuração ou instalação de pacote temporário
sudo singularity shell my_ubuntu.img/
opção --writable: Permitir que mudanças sejam salvas na imagem da máquina container (instalar pacotes):
- TODO: Como fazer na homeLocal e como fazer na proc2:/srv/forge
- Dado que sua imagem está no formato
sandbox
sudo singularity shell --writable my_container/
- Executar a máquina container no shell, salvando as modificações da sessão ao sair do container. usar opção --writable (Dicas sobre a opção
--writable)
sudo singularity shell --writable my_container/ - para instalação de pacotes / configuração
singularity shell --writable my_container/ - para a execução de experimentos
- Criar uma imagem .img writable
(Dicas sobre criar uma imagem .img --writable)
opção --bind:Montando pastas da máquina host para acessar dentro da máquina container
A pasta do home do usuário é montada automaticamente pelo singularity dentro da máquina container, mas se for necessário acessar outra pasta no disco da máquina host, deve-se usar a opção --bind para indicar o caminho (path) a ser usado. O usuário precisa ter permissão de leitura e escrita na pasta da máquina host.
- Executar a máquina container no shell e montar o caminho /homeLocal/fulano da máquina host dentro da máquina container
singularity shell --bind /homeLocal/fulano my_container/