Distrobox (Português)

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-git
AUR
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