Como Executar Aplicativos Baseados em GUI no Docker

Executar Aplicativos Gui Docker

O Docker é comumente usado para aplicativos do lado do servidor e de linha de comando. No entanto, com a configuração correta, você também pode executar aplicativos baseados em GUI dentro de contêineres. Esses contêineres podem incluir bibliotecas GUI e ferramentas de exibição, que permitem que os aplicativos sejam executados em um ambiente seguro e isolado. Essa abordagem simplifica o desenvolvimento, teste e implantação de aplicativos GUI em diferentes máquinas ou ambientes de SO. Este guia irá orientá-lo sobre como executar aplicativos GUI dentro de contêineres Docker com uma configuração mínima.

Compreendendo Docker e Contêineres GUI Docker

O Docker permite que você empacote um aplicativo junto com tudo o que ele precisa, como código, bibliotecas e configurações, em uma unidade autônoma chamada contêiner. Esses contêineres compartilham o kernel do sistema host, tornando-os leves, rápidos para iniciar e eficientes em comparação com máquinas virtuais completas.

Os contêineres GUI são configurações Docker que incluem aplicativos gráficos, como Firefox, Gedit ou outras ferramentas de desktop, permitindo que suas janelas apareçam na sua tela real. Ao contrário dos contêineres padrão, esses requerem configuração adicional para se conectar ao sistema de exibição do host, permitindo a renderização e interação adequadas com os elementos GUI.

Por que Executar Aplicativos GUI no Docker?

Aqui estão as principais razões pelas quais executar aplicativos GUI no Docker pode ser benéfico:

  • Quando você executa um aplicativo GUI no Docker, tudo o que ele precisa, como bibliotecas e configurações, está empacotado dentro do contêiner. Isso mantém seu sistema principal livre de desordem ou conflitos.
  • Usar Docker significa que seu aplicativo funcionará da mesma forma em qualquer máquina. Seja você desenvolvendo, testando ou compartilhando com outros, o ambiente permanece consistente.
  • Os contêineres facilitam o teste de um novo aplicativo ou a depuração de algo. Você pode executar, pausar ou removê-los sem afetar sua máquina host.
  • O Docker permite que você execute aplicativos GUI Linux em sistemas não Linux. Ele faz isso usando ferramentas de compartilhamento de exibição como XQuartz ou VcXsrv, portanto, não há necessidade de uma máquina virtual.
  • Ao contrário das VMs tradicionais, os contêineres Docker usam menos recursos do sistema. Eles iniciam mais rápido e funcionam mais suavemente, mesmo para aplicativos baseados em GUI.

Executar Aplicativos GUI no Docker

Para executar aplicativos GUI no Docker, você deve primeiro garantir que o Docker esteja instalado em seu sistema Linux. Você pode verificar isso executando o seguinte comando:

docker--version

Se este comando retornar um número de versão, significa que o Docker está instalado e funcionando. Caso contrário, você provavelmente verá um erro de “comando não encontrado”.

Uma vez que o Docker esteja configurado corretamente, você pode passar para os próximos passos.

Ativar o Serviço Docker

Agora, inicie o serviço Docker usando o seguinte comando:

sudo systemctl start docker

Para verificar se o serviço Docker está funcionando corretamente, execute:

sudo systemctl status docker

A saída confirma que o serviço Docker está ativo e funcionando sem problemas:

Verificar Status do Docker

Configurar Pasta do Projeto e Dockerfile

Vamos criar um diretório chamado “dockerGUI”, onde armazenaremos todos os arquivos relacionados ao Docker para executar aplicativos GUI:

mkdir dockerGUI

Agora navegue até este diretório para garantir que todos os arquivos subsequentes que criarmos ou modificarmos serão mantidos na pasta dockerGUI:

cd dockerGUI

Crie um novo arquivo chamado dockerGUIFile para definir a configuração da imagem Docker:

nano dockerGUIFile

Agora, cole as seguintes linhas de código no dockerGUIFile:

FROM jess/firefox  
ENV DISPLAY=:0  
CMD ["firefox"]

O código acima informa ao Docker para usar uma imagem pré-construída do Firefox e define o ambiente de exibição para que a GUI possa aparecer no sistema host. Além disso, garante que o Firefox seja iniciado automaticamente quando o contêiner for executado.

Nota: Para tentar um aplicativo diferente, basta alterar a imagem e o comando no seu Dockerfile. Por exemplo, para executar o Gedit, você pode usar a imagem oficial do Ubuntu e instalar o aplicativo durante a construção assim:

FROM ubuntu  
RUN apt-get update&&apt-get install-y gedit  
ENV DISPLAY=:0  
CMD ["gedit"]

Construir a Imagem Docker

Agora que a configuração do Docker está definida no dockerGUIFile, vamos construir a imagem Docker usando o seguinte comando:

sudodocker build -t myfirefox:1-f dockerGUIFile .

Este comando constrói uma imagem Docker a partir do dockerGUIFile, nomeia-a de myfirefox com a tag 1 e usa o diretório atual como contexto:

Construir Imagem Docker

Iniciar Contêiner Docker com Suporte a GUI Habilitado

Agora, habilite o suporte a GUI para contêineres Docker executando o seguinte comando:

xhost +local:docker

A saída confirma que clientes locais (como contêineres Docker) executando em meu sistema agora estão autorizados a se conectar ao meu servidor X:

Agora, execute o contêiner usando o seguinte comando para iniciar o Firefox com suporte a GUI em seu sistema host:

docker run -it--rm-eDISPLAY=$DISPLAY-v/tmp/.X11-unix:/tmp/.X11-unix myfirefox:1

Como resultado, este comando conecta o contêiner à sua exibição, o que permite que o Firefox se abra na sua tela como um aplicativo nativo:

Executar Aplicativo Gui do Docker

Nota: Usar a opção --rm faz com que o Docker exclua automaticamente o contêiner após o fechamento do aplicativo, mantendo seu sistema limpo e evitando que ele apareça em docker ps -s.

Desconectar o Docker do Servidor X

Uma vez que você tenha terminado de usar o aplicativo GUI, é recomendável fechar o acesso ao servidor X por razões de segurança:

xhost -local:docker

Considerações Finais

Executar aplicativos baseados em GUI no Docker é uma ótima maneira de estender o que os contêineres podem fazer além da linha de comando. Com a configuração correta, você pode iniciar aplicativos de desktop a partir de um contêiner como se estivessem instalados em seu sistema. É uma abordagem simples, mas poderosa para teste, desenvolvimento ou exploração de ferramentas Linux em um ambiente limpo. Comece a construir seus próprios contêineres prontos para GUI e aproveite ao máximo o que o Docker oferece em sua área de trabalho Linux.