Docker containers com aplicações gráficas

Publicado por Carlos Affonso Henriques. em 15/07/2020

[ Hits: 5.478 ]

 


Docker containers com aplicações gráficas



Em princípio é muito simples.

Vou demonstrar como rodar o xterm em um container, como exemplo usarei uma imagem oficial do CentOS.

Embora a instalação do Xorg e do xterm possa ser feita manualmente como em qualquer máquina, vou aproveitar a oportunidade para citar o comando "docker build" e Dockerfile.

Primeiramente crie um diretório:

mkdir SeuDockerfile
cd SeuDockerfile

Dentro desse diretório crie o seu "Dockerfile" (exatamente com essa sintaxe com "D" maiúsculo) com o seguinte conteúdo:

FROM centos:latest
MAINTAINER capitainkurn
LABEL  Description="GUI container"

RUN yum update -y && \
yum install xorg-x11-server-Xorg xterm -y

Agora ainda dentro desse diretório faça o build da imagem.

docker build -t centosgui:latest .

Obs.: com "." (ponto) no fim da linha mesmo.

Após o término execute o seu container:

run -it --rm -e DISPLAY=${DISPLAY} --net host --hostname gui0 --name gui0 -v "$HOME/.Xauthority:/root/.Xauthority:rw" -w ${HOME} centosgui:latest

Em seguida execute o xterm e ele abrirá em seu display padrão.

Você ainda poderá executá-lo via entrypoint com o container em background.

docker run -d --rm -e DISPLAY=${DISPLAY} --net host --hostname gui0 --name gui0 -v "$HOME/.Xauthority:/root/.Xauthority:rw" -w ${HOME} --entrypoint "/bin/xterm" centosgui:latest

Lembrando que o servidor X da máquina hospedeira deverá estar em modo de escuta TCP e com acesso liberado. No CentOS se o X estiver sendo iniciado pelo systemd graphical.target, edite o arquivo /etc/gdm/custom.conf e acrescente a seguintes linhas:

[security]
DisallowTCP=false

Se estiver sendo iniciado via xinit, edite o arquivo /bin/startx e altere a linha:

de:

defaultserverargs="-nolisten tcp"

para:

defaultserverargs=""

e finalmente libere acesso ao X com o comando:

xhost +


Outras dicas deste autor

Alterando o número de hops do Tor

Alterando o editor do crontab

TOR Browser rodando sob root ou qualquer outro usuário

Renomeando interfaces de rede com nameif e /etc/mactab

Raspberry PI 3: Wireless integrada funcionando no Slackware ARM

Leitura recomendada

Docker: "ps: command not found" [Resolvido]

Como exportar um container Docker para outra máquina

Como instalar o Docker no Debian 9 Stretch

Docker no Fedora 35

Docker CE no CentOS 8

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts