Jump to content

# Distrobox (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Distrobox. Data da última tradução: 2023-12-30. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

O Distrobox é uma camada de encapsulamento de contêineres que permite ao usuário instalar versões containerizadas do Linux diferentes do host, proporcionando uma integração estreita com o host e permitindo o uso de binários projetados para uma distribuição em outra.

O Distrobox não é um gerenciador de contêineres e depende do Podman ou Docker para criar contêineres.

Da documentação do Distrobox:

  Use qualquer distribuição Linux dentro do seu terminal. Habilite compatibilidade retroativa e futura com softwares e tenha a liberdade de usar a distribuição que preferir. O Distrobox usa podman ou docker para criar contêineres usando a distribuição Linux de sua escolha. O contêiner criado será integrado ao host, compartilhando o diretório HOME do usuário, armazenamento externo, dispositivos USB externos e aplicativos gráficos (X11/Wayland) e áudio.

## Implicações de segurança

O objetivo principal do Distrobox não é focar no sandboxing dos contêineres do host (o que seria impossível devido à natureza da integração estreita do projeto) e, como tal, os contêineres executados dentro do Distrobox terão acesso total à sua pasta home e a alguns outros locais.

É recomendado usar o Podman ao invés do Docker, já que por padrão o Docker executará contêineres como root e contêineres rootful terão acesso irrestrito ao sistema de arquivos do host. O Docker sem root atualmente não funciona, mas está sendo desenvolvido.

Sandboxing é possível, veja #Modo unsharing para detalhes.

## Instalação

### Com acesso root

Primeiro, siga a página para Podman (Português) ou Docker e verifique se você consegue instalar e executar um contêiner Hello World.

Instale o distrobox ou distrobox-gitAUR

### Sem acesso root/sistema de arquivos imutável

É possível instalar o Distrobox na sua pasta home se você não tiver acesso root ao sistema ou se estiver usando uma distro imutável. Isso requer o uso de um pipe curl-to-sh, que é um método de instalação não suportado devido ao risco de segurança.

Você pode encontrar instruções na página de documentação do Distrobox

#### Desinstalando

O Distrobox fornece um script de desinstalação para instalações sem root, necessário apenas se você instalou sem root. Se instalou via Pacman, então deve desinstalar da maneira usual.

## Uso

Nota

- Ao longo da seção seguinte, `nome` é uma variável e pode ser o que você quiser. Em todos os casos, substitua `nome` pelo nome real que escolher
- Para a lista completa de opções suportadas em qualquer subcategoria, use `--help`, por exemplo, para ver todas as opções de criação use `distrobox create --help`
- Uma lista completa de distribuições suportadas, junto com os nomes de suas imagens, pode ser encontrada em https://distrobox.it/compatibility/#containers-distros
- Para técnicas de uso mais avançadas, consulte a página de Documentação do Distrobox em https://distrobox.it/usage/usage/

Para criar um novo contêiner, execute o seguinte:

    $ distrobox create -n nome

Para listar contêineres instalados, execute o seguinte:

    $ distrobox list

Para interagir com um contêiner instalado, execute o seguinte:

    $ distrobox enter nome

ou você pode enviar um comando diretamente para um contêiner com:

    $ distrobox enter nome -- comando-a-executar

Para parar um contêiner em execução, execute o seguinte:

    $ distrobox stop nome

Para excluir um contêiner, execute o seguinte:

    $ distrobox rm nome

Para instalar uma distribuição específica em um contêiner, execute o seguinte (neste exemplo, Ubuntu):

    $ distrobox create --image ubuntu:22.04

As instalações podem ser totalmente personalizadas da seguinte forma (neste exemplo, um contêiner chamado teste executando Gentoo com acesso root):

    $ distrobox create -i docker.io/gentoo/stage3:latest -n teste --root

Se você precisar que seu contêiner tenha acesso root ao host, recomenda-se usar a flag `--root` em vez de `sudo distrobox`.

### Modo unsharing

O Distrobox agora permite que os usuários `unshare` certos locais em seu sistema de arquivos. No seu modo padrão, os seguintes compartilhamentos são criados, `devsysfs`, `ipc`, `netns`, `process`, `$HOME` e `Acesso a Aplicativos`.

Agora você pode escolher `unshare` alguns desses usando os comandos listados abaixo ao criar um novo contêiner:

Compartilhamentos
Compartilhamento | Comando | Uso
--- | --- | ---
devsysfs | `--unshare-devsysfs` | Não compartilhar dispositivos e diretórios sysfs do host.
ipc | `--unshare-ipc` | Não compartilhar o namespace ipc com o host.
netns | `--unshare-netns` | Não compartilhar o namespace de rede com o host.
process | `--unshare-process` | Não compartilhar o namespace de processos com o host.
All | `--unshare-all` | Ativar todas as flags de `unshare`.

Não compartilhar `$HOME` e `Acesso a Aplicativos` não é possível, pois são obrigatórios e sem eles o Distrobox não seria capaz de operar.

Atenção Embora este recurso ofereça segurança aprimorada em relação a um contêiner padrão, ainda é considerado não ser uma sandbox completa pelos desenvolvedores da aplicação.

## Configuração

É possível configurar o Distrobox de duas maneiras, com um arquivo de configuração ou usando variáveis de ambiente.

### Arquivo de configuração

O Distrobox verifica os seguintes locais para arquivos de configuração, do menos ao mais importante:

- `/usr/share/distrobox/distrobox.conf`
- `/usr/etc/distrobox/distrobox.conf`
- `/etc/distrobox/distrobox.conf`
- `~/.config/distrobox/distrobox.conf`
- `~/.distroboxrc`

Um exemplo de arquivo de configuração é o seguinte:

    container_always_pull="1"
    container_generate_entry=0
    container_manager="docker"
    container_image_default="registry.opensuse.org/opensuse/toolbox:latest"
    container_name_default="nome-teste-1"
    container_user_custom_home="$HOME/.local/share/container-home-test"
    container_init_hook="~/.local/distrobox/a_custom_default_init_hook.sh"
    container_pre_init_hook="~/a_custom_default_pre_init_hook.sh"
    non_interactive="1"
    skip_workdir="0"

### Variáveis de ambiente

As seguintes variáveis estão disponíveis e devem ser definidas usando variáveis por usuário:

    DBX_CONTAINER_ALWAYS_PULL
    DBX_CONTAINER_CUSTOM_HOME
    DBX_CONTAINER_IMAGE
    DBX_CONTAINER_MANAGER
    DBX_CONTAINER_NAME
    DBX_CONTAINER_ENTRY
    DBX_NON_INTERACTIVE
    DBX_SKIP_WORKDIR

## Veja também

- Página do GitHub do Projeto
- Página de documentação do projeto

Categories:

- Virtualization (Português)
- Sandboxing (Português)

Distrobox (Português)
Add topic