Imagem do docker que inclui vinho e winetricks para executar aplicativos do Windows no Linux e MacOS
O contêiner Docker-Wine pode ser executado com o encaminhamento X11 ou como um servidor RDP para se adequar ao seu caso de uso. O padrão é usar o encaminhamento X11, que utiliza o servidor X da sua máquina para renderizar gráficos diretamente na sua sessão atual e reproduzir sons através do PULSEAUDIO (redirecionamento de áudio apenas no Linux).
O uso do Docker-Wine com um servidor RDP permite que o contêiner seja executado em uma máquina sem cabeça ou em uma máquina que pode não estar executando um servidor X. Em seguida, você pode usar um cliente de desktop remoto para se conectar ao contêiner que pode estar localizado na sua máquina local ou remota. Atualmente, esta é a única solução se você precisar de som no macOS.
Usar o script docker-wine é a maneira mais fácil de começar e deve ser tudo o que você precisa para Linux e MacOS.
docker-wineNo Linux:
wget https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-wineNo macOS:
curl -O https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-winedocker-wine com o encaminhamento X11Executar o script sem outros argumentos iniciará uma sessão interativa de bash:
./docker-wine Você pode substituir a sessão interativa padrão da Bash, adicionando wine , winetricks , winecfg ou quaisquer outros comandos válidos com seus argumentos associados:
./docker-wine wine notepaddocker-wine com XVFBInicia um exibição de buffer de quadro que deixa de inadimplência para: xvfb: 95 -Screen 0 320x200x8 Exportações Exportações para o número do servidor: 95
./docker-wine --xvfb./docker-wine --xvfb=:95,0,320x200x8docker-wine preso com Notty ./docker-wine --nottydocker-wine com servidor RDP Execute a opção --rdp para iniciar o servidor RDP com uma sessão interativa de bash:
./docker-wine --rdpOu você pode executar o contêiner como um daemon destacado que é executado em segundo plano. Para começar o daemon:
./docker-wine --rdp=startEntão para parar o daemon:
./docker-wine --rdp=stopTodos os desktops e servidores do Windows vêm com o cliente de desktop de desktop, usuários pré-instalados e macos podem baixar o aplicativo de desktop remoto do Microsoft gratuitamente na App Store. Para usuários do Linux, sugiro usar o cliente Remmina Remote Desktop.
Para o nome do host, use localhost Se o contêiner estiver hospedado na mesma máquina, você está executando seu cliente de desktop remoto e, para conexões remotas, basta usar o nome ou o endereço IP da máquina que você está se conectando. Nota: Para conectar -se a uma máquina remota, exigirá que a porta TCP 3389 seja exposta através do firewall.
Para fazer login, use os seguintes detalhes da conta de usuário padrão:
Username: wineuser
Password: wineuserdocker-wineInicie o contêiner como raiz:
./docker-wine --as-rootOu inicie o contêiner como você mesmo com o mesmo nome de usuário, UID, GID e Caminho em casa (especialmente útil ao vincular ao sistema de arquivos local):
./docker-wine --as-meVocê pode combinar opções:
./docker-wine --as-root --rdpVocê também pode usar a sintaxe padrão do docker para adicionar quantas variáveis, dispositivos e volumes de ambiente adicionais forem necessários:
./docker-wine --env= " MY_ENV_VAR=some_value " --device=/dev/snd --volume= " myvol:/some/path:ro " --volume= " /usr/data:data " Veja a ajuda do docker-wine para uma lista completa de opções:
./docker-wine --help A senha padrão é wineuser e mudará para seu próprio nome de usuário por padrão se você usar o argumento --as-me . Você pode substituir a senha padrão usando --password="your_password" , mas mesmo que essa senha seja criptografada antes de passá -la para o contêiner, sua senha ainda aparece em texto simples na lista de processos para qualquer outro usuário conectado à mesma máquina host. Dependendo do seu caso de uso, isso pode ser um problema.
Uma solução é usar --password-prompt e ser solicitado a inserir a senha do usuário ao instanciar o contêiner do Docker-Wine. Isso impedirá que sua senha apareça na lista de processos da sua máquina, mas exige inserir manualmente a senha a cada vez.
Se a solicitação for indesejável, a solução é criptografar sua senha antes de passá-la para o script docker-wine , usando openssl . Este comando produzirá um hash criptografado do MD5 de sua senha com um sal aleatório, o que significa que cada execução produzirá um hash diferente:
openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password "
Um método de usar esta string segura seria armazená -la no disco:
echo $( openssl passwd -1 -salt $( openssl rand -base64 6 ) " your_password " ) > ~ /.docker-wine Em seguida, basta cat o arquivo ao usar o script docker-wine :
./docker-wine --rdp --as-me --secure-password= " $( cat ~ /.docker-wine ) " Primeiro, clone o repositório do Github:
git clone https://github.com/scottyhardy/docker-wine.git
cd docker-winePara construir o contêiner, basta executar:
./build Para executar o seu recipiente construído localmente, use docker-wine com o interruptor --local :
./docker-wine --local wine notepad Quando o contêiner Docker-Wine é instanciado com o script docker-wine , um contêiner de volume chamado winehome é criado e é mapeado para a casa do usuário dentro do contêiner. O uso de um contêiner de volume permite que o contêiner do Docker-Wine seja removido com segurança após cada execução, pois os dados do usuário persistirão enquanto o volume winehome não for removido. Isso efetivamente permite que a imagem docker-wine seja trocada por uma versão mais recente a qualquer momento.
Você pode criar manualmente o recipiente de volume winehome em execução:
docker volume create winehomeSe você não quiser o contêiner de volume, pode excluí -lo usando:
docker volume rm winehome Se você planeja usar scottyhardy/docker-wine como base para outra imagem do Docker, você deve configurar o mesmo ENTRYPOINT para ativar os modos de encaminhamento X11 e servidor RDP para continuar operando:
FROM scottyhardy/docker-wine:latest
... <your code here>
ENTRYPOINT [ "/usr/bin/entrypoint" ]docker runHá vários pré -requisitos para fazer o redirecionamento do Pulseaudio trabalhando no Linux e para o redirecionamento do X11 trabalhar no macOS. Eu pretendo documentá -los em um wiki em um futuro próximo, mas isso deve ser suficiente para você começar.
Primeiro, puxe a imagem mais recente do DockerHub:
docker pull scottyhardy/docker-wine Aqui está um comando básico docker run para redirecionamento x11 no Linux que iniciará uma sessão interativa de bash:
docker run -it
--rm
--hostname= " $( hostname ) "
--env= " DISPLAY "
--volume= " ${XAUTHORITY :- ${HOME} / .Xauthority} :/root/.Xauthority:ro "
--volume= " /tmp/.X11-unix:/tmp/.X11-unix:ro "
scottyhardy/docker-wine /bin/bash Aqui está um comando básico docker run para iniciar o servidor RDP no macOS e no Linux com uma sessão interativa de bash:
docker run -it
--rm
--hostname= " $( hostname ) "
--env= " RDP_SERVER=yes "
--publish= " 3389:3389/tcp "
scottyhardy/docker-wine /bin/bashPara testar o vídeo, tente abrir o bloco de notas:
./docker-wine wine notepad Para testar o som, tente usar pacat :
./docker-wine pacat -vv /dev/urandom