Contêiner mínimo de nspawn do sistema para isolamento de árvore de processo com aplicativos incorporados

1

É possível usar o nspawn para um único executável? Meu objetivo é apenas isolar a árvore de processos do aplicativo, não a portabilidade.

Digamos que você escreveu um aplicativo em C, criado para sua plataforma de segmentação. Hoje eu posso executar isso como um serviço systemd por configuração através de um arquivo de unidade systemd. Existe uma maneira de criar um "contêiner" nspawn mínimo para meu aplicativo? Todos os artigos que eu li indicam que o nspawn requer o debianbootstrap, que acaba sendo quase 300mb de arquivos. Se eu não me importo com a portabilidade, existe alguma outra maneira de alavancar os recursos de isolamento da árvore de processos do nspawn?

    
por Zugdud 14.10.2016 / 15:30

1 resposta

3

Você leu a página de manual systemd-nspawn ? Nada lá diz que você precisa do debianbootstrap, e na verdade ele mostra vários exemplos não-debian.

Você faz um sistema de arquivos raiz, mas como um contêiner Docker (ou mesmo um ambiente tradicional chroot ) que não requer nada além do seu executável e de quaisquer bibliotecas compartilhadas ou outros recursos necessários para que ele seja executado.

Se você apenas deseja o isolamento da árvore de processos, talvez em vez de systemd-nspawn você queira unshare :

# unshare --pid --fork --mount-proc bash
# ps -fe
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  4 09:49 pts/0    00:00:00 bash
root        24     1  0 09:49 pts/0    00:00:00 ps -fe
    
por 14.10.2016 / 15:50