Toolbox

Como um host imutável, o Silverblue é uma excelente plataforma para desenvolvimento baseado em contêiner e, para trabalhar com contêineres, buildah e podman são recomendados.

Silverblue também vem com o utilitário toolbox, que usa contêineres para fornecer um ambiente onde ferramentas de desenvolvimento e bibliotecas podem ser instaladas e usadas.

Por que usar o toolbox?

O toolbox facilita o uso de um ambiente em contêiner para o desenvolvimento e depuração de software do dia a dia. Em sistemas operacionais imutáveis, como Fedora Silverblue, ele fornece um ambiente familiar baseado em pacote no qual ferramentas e bibliotecas podem ser instaladas e usadas. No entanto, o toolbox também pode ser usado em sistemas baseados em pacotes.

Usar o Toolbox para executar seus fluxos de trabalho em contêineres traz várias vantagens:

  • Ele mantém o sistema operacional hospedeiro limpo e estável e ajuda a evitar a confusão que pode acontecer após a instalação de muitas ferramentas de desenvolvimento e pacotes.

  • Você obtém acesso a diferentes versões de distribuições com suporte, independentemente da versão em execução.

  • Os contêineres são uma boa maneira de isolar e organizar as dependências necessárias para diferentes projetos.

  • Os contêineres são um espaço seguro para experimentar: se algo der errado, é fácil jogar uma toolbox fora e começar de novo.

Como funciona

O toolbox simplifica o uso de contêineres, fornecendo um pequeno número de comandos simples para criar, inserir, listar e remover contêineres. Ele também integra contêineres de caixa de ferramentas em seu ambiente de trabalho normal, para tornar mais fácil para você usá-los como um espaço de desenvolvimento diário.

Os contêineres são criados a partir de imagens e geralmente são uma versão simplificada das distribuições. Nessas imagens, quase não há ferramentas e documentação disponíveis. A equipe por trás do Toolbox mantém uma imagem do Fedora onde tais ferramentas e documentação estão disponíveis, fornecendo uma boa experiência pronta para uso.

Cada contêiner do toolbox é um ambiente que você pode inserir a partir da linha de comando. Dentro de cada um, você encontrará:

  • Seu nome de usuário e permissões existentes

  • Acesso para seu diretório pessoal (home) e várias outros locais

  • Acesso ao sistema e à sessão D-Bus, journal do sistema e Kerberos

  • Ferramentas de linha de comando comuns, incluindo um gerenciador de pacotes (por exemplo, DNF no Fedora)

Em outras palavras, os contêineres de toolbox parecem, se comportam e se comportam como um ambiente de linha de comando padrão do Linux. Ao conectar todas essas informações, os contêineres de toolbox perdem uma certa quantidade de segurança obtida com o uso da tecnologia de contêineres. Portanto, você não deve tratar os contêineres de toolbox como uma caixa de proteção ("sandbox") onde você pode executar qualquer script que nunca executaria em qualquer outro sistema.

Na maioria dos casos, quando um comando é executado dentro de um contêiner, o programa de dentro do contêiner é usado. No entanto, existem alguns casos especiais onde o programa no host é usado (usando flatpak-spawn). Um exemplo disso é o próprio comando do toolbox; isso torna possível usar o toolbox de dentro dos contêineres de toolbox.

Instalação

Fedora Silverblue

O toolbox está pré-instalado no Fedora Silverblue 30 ou mais recente. Em versões anteriores, ele pode ser instalado com o seguinte comando:

$ rpm-ostree install toolbox

Isso vai instalar toolbox como um RPM em camada.

Fedora Workstation

O toolbox pode ser instalado no Fedora Workstation (ou em qualquer versão baseada em pacote do Fedora) com o seguinte comando:

$ sudo dnf install toolbox

Sua primeira toolbox

Depois que o toolbox é instalado, dois comandos simples são necessários para começar:

$ toolbox create

Isso fará o download de uma imagem OCI e criará um contêiner do toolbox a partir dela. Assim que terminar, execute:

$ toolbox enter

Uma vez dentro da toolbox, você pode acessar ferramentas de linha de comando comuns e instalar novas usando um gerenciador de pacotes (por exemplo, DNF no Fedora).

Quando o prompt está dentro de uma toolbox, ele é prefixado com um diamante: isso indica que o prompt está dentro de um contêiner de toolbox. O símbolo do diamante pode não estar presente se você usar um tema de shell personalizado.

Comandos e uso

toolbox create [opções] <nome>

Cria um contêiner de toolbox. Isso fará o download de uma imagem OCI se não houver uma disponível (isso é necessário para criar o contêiner). Por padrão, uma imagem correspondendo à versão do host é usada. Se o sistema host não tiver uma imagem correspondente, uma imagem do Fedora é usada em seu lugar.

Usado sem opções, toolbox create nomeará automaticamente o contêiner criado. Para criar toolboxes adicionais, use o argumento <nome>.

Para usar uma versão específica do sistema host (por exemplo, Fedora 32 no Fedora 34), use a opção --release <lançamento> | -r <lançamento>.

Para usar uma distribuição diferente para criar um contêiner de toolbox (por exemplo, RHEL no Fedora), use a opção --distro <distro> | -d <distro>.

Para usar uma imagem diferente, use a opção --image <nome> | -i <nome>.

toolbox enter [opções] <nome>

Entra em uma toolbox para uso interativo. Usado sem opções, toolbox enter abre a toolbox padrão.

Para inserir uma toolbox com um nome específico, use o argumento nome.

Para inserir uma toolbox para uma distribuição diferente (por exemplo, Fedora no RHEL), use a opção --distro <distro> | -d <distro>.

Para entrar em uma toolbox com uma versão específica (por exemplo, RHEL 8.1 no RHEL 8.3), use o método `--release <lançamento> | opção -r <lançamento> `.

toolbox run [opções] <cmd> <arg …​>

Executa um comando em uma toolbox sem entrar nela. Usado sem opções, toolbox run executa o comando na toolbox padrão.

Para executar um comando em uma toolbox com um nome específico, use o método `--container <nome> | opção -c <nome> `.

Para executar um comando em uma toolbox para uma distribuição diferente (por exemplo, Fedora no RHEL), use a opção --distro <distro> | -d <distro>.

Para executar um comando em uma toolbox com versão específica (por exemplo, RHEL 8.1 no RHEL 8.3), use a opção `--release <lançamento> | -r <lançamento> `.

toolbox list [opções]

Lista contêineres e imagens de toolbox locais.

Para mostrar apenas contêineres, use o método --containers | -c.

Para mostrar apenas imagens, use a opção --images | -i.

toolbox rm [opções] <nome …​>

Remove um ou mais contêineres de toolbox.

A opção --force | -f remove os contêineres marcados mesmo se estiver em execução.

A opção --all | -a remove todos os contêineres de toolbox.

toolbox rmi [opções] <nome …​>

Remove uma ou mais imagens de toolbox.

A opção --force | -f remove as imagens marcadas e todos os contêineres que foram criados usando as imagens marcadas.

A opção --all | -a remove todas as imagens de toolbox.

toolbox --help

Mostra a página de manual do Toolbox.

Saindo de uma toolbox

Para retornar ao ambiente host, execute exit ou saia do shell atual (normalmente Ctrl+D).

Debaixo do capô

O toolbox usa as seguintes tecnologias:

Contato e problemas

Para relatar problemas, fazer sugestões ou contribuir com correções, consulte projeto do toolbox no GitHub.

To get in touch with toolbox users and developers, use Fedora’s Discourse instance, or join the #silverblue IRC channel on Libera.