Giter Site home page Giter Site logo

wine-docker's Introduction

Executar aplicativos Windows dentro do Docker

Você está cansado de instalar milhares de aplicativos no seu Linux para conseguir rodar aquele seu aplicativo Windows?

Seus problemas acabaram, agora você consegue rodar um aplicativo Windows no Linux usando Docker e o melhor não precisa instalar nada. Tudo fica no Docker.

Neste exemplo vamos rodar Winbox no Linux mais você pode utilizar para executar outros aplicativos...

Criando a imagem Docker

Você pode iniciar a construção da imagem wine1.5 com:

docker build --rm -t wine1.5 .

Após um ou dois minutos, a compilação está concluída e a imagem resultante é armazenada localmente no host do Docker. Você pode dar uma olhada usando o comando docker images:

docker images | grep wine

A maneira simples

Executando o wine em um contêiner do Docker

A maneira mais simples é expor seu xhost para que o contêiner possa renderizar para a exibição correta lendo e gravando no soquete X11 unix.

Podemos ajustar as permissões do host do servidor X. Porém, essa não é a maneira mais segura, pois você compromete o controle de acesso ao servidor X em seu host.

Portanto, com um pouco de esforço, alguém poderia exibir algo na tela, capturar a entrada do usuário, além de facilitar a exploração de outras vulnerabilidades que possam existir no X.

# para os preguiçosos e imprudentes
xhost +local:root

Para testar nossa imagem wine1.5 do Docker, executaremos o notepad aplicativo que acompanha o Wine:

docker run -it --rm --name winbox \
    --env="DISPLAY" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --volume="winbox_data:/root/.wine" \
    wine1.5 \
    wine "C:\windows\system32\notepad.exe"

Se você está preocupado com isso (como deveria), depois que você terminar de usar a GUI em contêiner, isso retornará os controles de acesso que foram desabilitados com o comando anterior.

xhost -local:root

Para o mesmo exemplo acima só que utilizando o winbox

docker run -it --rm --name winbox \
    --env="DISPLAY" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --volume="/home/edward/docker/docker-wine/wine-root:/root/.wine" \
    wine1.5 \
    wine /winbox/winbox64.exe

A maneira mais segura

Outra maneira é usar as credenciais do seu próprio usuário para acessar o servidor de exibição. Isso envolve montar diretórios adicionais e tornar-se você mesmo no contêiner:

mkdir /home/$USER/wine_docker
docker run -it --rm --name winbox \
    --user=$(id -u $USER):$(id -g $USER) \
    --env="DISPLAY" \
    --volume="/etc/group:/etc/group:ro" \
    --volume="/etc/passwd:/etc/passwd:ro" \
    --volume="/etc/shadow:/etc/shadow:ro" \
    --volume="/etc/sudoers.d:/etc/sudoers.d:ro" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --volume="/home/$USER/wine_docker:/home/$USER/.wine" \
    wine1.5 \
    wine /winbox/winbox64.exe

Caso tenha problema com as fontes do Windows, copie a pasta fontes para este caminho.

./wine_docker/drive_c/windows/Fonts

Rodar um terminal Docker para versão do Wine que compilamos.

docker run --rm -it --entrypoint /bin/bash wine1.5

Rodar um terminal Docker para o Ubuntu 20.04 para realizar testes.

docker run --rm -it --name ubuntu --entrypoint /bin/bash ubuntu:20.04

Para mais informações de como usar GUI's com Docker consulte o artigo relacionado:

wine-docker's People

Contributors

edwarddn avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

wine-docker's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.