![Featued image for: What Is API Management?](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706091725_O-que-e-gerenciamento-de-API-150x150.jpg)
O que é gerenciamento de API?
24 de janeiro de 2024![Um resultado de microsserviços: testes em expansão](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706095989_Um-resultado-de-microsservicos-testes-em-expansao-150x150.png)
Um resultado de microsserviços: testes em expansão
24 de janeiro de 2024Como desenvolvedor, você pode precisar trabalhar com contêineres GUI. Se for esse o caso, você descobrirá rapidamente que o mecanismo de tempo de execução tradicional do Docker não fornece a execução de aplicativos GUI (a menos que sejam do tipo baseado na Web). Quando você deseja desenvolver um aplicativo GUI em contêiner, o que você faz?
Felizmente, existem muitos aplicativos de terceiros que facilitam bastante o lançamento de contêineres GUI em um desktop. Como seria de esperar, isso requer um ambiente de desktop (caso contrário, você estaria desenvolvendo em uma configuração mais tradicional baseada em servidor). Um desses aplicativos é chamado x11docker. Como o nome indica, este aplicativo funciona com o servidor de exibição Linux X (o que significa que você precisará de uma distribuição Linux para fazê-lo funcionar).
O aplicativo x11docker inclui recursos como:
- Aceleração de hardware GPU
- Som com PulseAudio ou ALSA
- Compartilhamento da área de transferência
- Acesso à impressora e webcam
- Pasta inicial persistente
- Suporte Wayland
- Criação de localidade de idioma
- Vários sistemas init e DBus dentro de containers
- Suporta vários tempos de execução e backends de contêiner (incluindo podman)
Você pode estar se perguntando: “O X11 não é inseguro?” É sim. Felizmente, o x11docker evita vazamentos no servidor X usando vários servidores X. Assim, você pode usar a ferramenta sem se preocupar em expor você mesmo, seu sistema ou seus contêineres aos pontos fracos típicos do servidor X11.
Uma coisa a ter em mente é que o x11docker cria um usuário de contêiner sem privilégios. A senha desse usuário é x11docker e restringe os recursos do contêiner. Por causa disso, alguns aplicativos podem não se comportar conforme o esperado. Por exemplo, ao tentar executar o navegador Tor de dentro de um contêiner, ele não consegue acessar /dev/stdout, o que significa que o contêiner não será executado. Esse não é o caso de todos os contêineres. Vou demonstrar com o media player VLC, que funciona conforme o esperado.
Quero mostrar como instalar o x11docker em uma instância em execução de um sistema operacional de desktop baseado em Ubuntu. Claro, a primeira coisa que você deve fazer é instalar o mecanismo de tempo de execução Docker. Para isso, vou mostrar dois métodos diferentes.
Preparar? Vamos fazer isso.
O que você precisará
Como já mencionei, você precisará de uma instância em execução de uma distribuição de desktop Linux baseada no Ubuntu. Você também precisará de um usuário com privilégios sudo. É isso.
Instalando o Docker
Primeiro, seguiremos o método tradicional de instalação do mecanismo de tempo de execução Docker. A primeira coisa a fazer é adicionar o Docker GPG oficial ao sistema com o comando:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
A seguir, devemos adicionar o repositório Docker, para que possamos instalar o software. Isso é feito com o comando:
echo "deb (arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg) https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Com o repositório adicionado, instalaremos algumas dependências usando o comando:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
Atualize o apt com:
sudo apt-get update
Agora podemos instalar o Docker com o comando:
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Para poder executar o comando Docker sem sudo (o que pode ser um risco à segurança), adicione seu usuário ao grupo docker com o comando:
sudo usermod -aG docker $USER
Saia e faça login novamente para que as alterações tenham efeito.
Se preferir fazer isso de maneira rápida, você pode instalar o Docker com os seguintes comandos:
sudo apt-get install curl wget uidmap -y wget -qO- https://get.docker.com/ | sudo sh
Para poder executar o Docker sem root, emita o seguinte comando:
dockerd-rootless-setuptool.sh install
Como instalar o x11docker
Antes de podermos instalar o x11docker, devemos instalar algumas dependências. Isso pode ser feito com o comando:
sudo apt-get install xpra xserver-xephyr xinit xauth xclip x11-xserver-utils x11-utils -y
Em seguida, instale o x11docker com o comando:
curl -fsSL https://raw.githubusercontent.com/mviereck/x11docker/master/x11docker | sudo bash -s -- --update
Você pode então atualizar o x11docker com o comando:
sudo x11docker --update
Como usar o x11docker
Com o x11docker instalado, é hora de testá-lo. Vamos testar isso com o contêiner do aplicativo VLC. Primeiro, extraia a imagem com o comando:
docker pull jess/vlc
Depois que a imagem for extraída, execute o VLC (com a ajuda do x11docker) com o comando:
x11docker --pulseaudio --share=$HOME/Videos jess/vlc
Você deverá ver a janela do VLC aberta, pronta para ser usada (Figura 1). Será um pouco mais lento do que se a mídia fosse instalada diretamente na sua área de trabalho, mas, caso contrário, deverá funcionar conforme o esperado.
-
Figura 1: Lançamos o media player VLC como um contêiner.
Claro, isso não ajuda muito se você é um desenvolvedor porque deseja desenvolver seus próprios contêineres. Você sempre pode criar a imagem com a qual deseja trabalhar, marcá-la, enviá-la para o repositório de sua escolha, puxá-la para o seu sistema de desenvolvimento com o comando docker pull e, em seguida, implantar o contêiner com x11docker.
E aí está. Agora você pode executar aplicativos GUI a partir de contêineres Docker, graças ao x11docker. Aproveite isso implantando seus próprios contêineres personalizados a partir de suas próprias imagens e veja como funciona.
A postagem Executar aplicativos GUI como contêineres com x11docker apareceu pela primeira vez em The New Stack.