Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
windows — Executar Windows dentro de um container Docker com aceleração KVM, instalação automática e recursos personalizáveis. Suporta múltiplas versões do Windows, passagem de USB e rede macvlan. | Kitploit
Ferramentas/GitHubGitHub/dockur/windows
Utilitários de Propósito GeralSegurança de ContêineresVirtualização para SegurançaSegurança na Nuvem
GitHubdockur/windows

windows

Executar Windows dentro de um container Docker com aceleração KVM, instalação automática e recursos personalizáveis. Suporta múltiplas versões do Windows, passagem de USB e rede macvlan.

Ver Repositório
52.8k4.6k68há 22 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
<h1 align="center">Windows<br />
<div align="center">
<a href="https://github.com/dockur/windows"><img src="https://raw.githubusercontent.com/dockur/windows/master/.github/logo.png" title="Logo" style="max-width:100%;" width="96" /></a>
</div>
<div align="center">

[![Build]][build_url]
[![Version]][tag_url]
[![Size]][tag_url]
[![Package]][pkg_url]
[![Pulls]][hub_url]

</div></h1>

Windows dentro de um contentor Docker.

## Funcionalidades ✨

- Executa Windows dentro de um contentor Docker
- Transferência automática e instalação sem intervenção
- Suporte para versões modernas e legadas do Windows
- Desempenho quase nativo com aceleração KVM
- Alocação personalizável de CPU, memória e armazenamento
- Alocação dinâmica de memória com ballooning de memória
- Passagem de USB e partilha de pastas do anfitrião
- Suporte para redes NAT, modo de utilizador, macvlan e macvtap

## Vídeo 📺

[![YouTube](https://assets.kitploit.com/production/public/readmes/8002/385d83d323911ea44b233b3d962a8c34a2909ab01a2ba3a525946ce7025a1df3.jpg)](https://www.youtube.com/watch?v=xhGYobuG508)

## Utilização 🐳

##### Docker Compose:

```yaml
services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "11"
    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    volumes:
      - ./windows:/storage
    restart: always
    stop_grace_period: 2m
```

##### Docker CLI:

```bash
docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows
```

##### Kubernetes:

```shell
kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
```

##### GitHub Codespaces:

[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/dockur/windows)

##### Instalador gráfico:

[![Download WinBoat](https://raw.githubusercontent.com/dockur/windows/master/.github/winboat.png)](https://winboat.app)

## Requisitos ⚙️

- Docker ou Podman num anfitrião Linux com suporte KVM.
- Docker Desktop ou Podman (Desktop) no Windows 11 com virtualização aninhada ativada.
- Pelo menos 4 GB de RAM disponível.
- Pelo menos 64 GB de espaço livre em disco.

> [!NOTE]
> O Docker Desktop no Linux, macOS e Windows 10 atualmente não fornece acesso KVM aos contentores e, portanto, não é suportado.

## FAQ 💬

### Como uso?

  Muito simples! Estes são os passos:
  
  - Inicie o contentor e conecte-se à [porta 8006](http://127.0.0.1:8006/) usando o seu navegador web.

  - Relaxe enquanto a mágica acontece, toda a instalação será realizada de forma totalmente automática.

  - Assim que vir a área de trabalho, a sua instalação do Windows está pronta para uso.
  
  Aproveite a sua nova máquina e não se esqueça de dar uma estrela neste repositório!

### Como seleciono a versão do Windows?

  Por padrão, o Windows 11 Pro será instalado. Mas pode adicionar a variável de ambiente `VERSION` ao seu ficheiro compose, para especificar uma versão alternativa do Windows a ser transferida:

  ```yaml
  environment:
    VERSION: "10"
  ```

  Selecione entre os valores abaixo:
  
  | **Valor** | **Versão**            | **Tamanho** |
  |---|---|---|
  | `11`   | Windows 11 Pro            | 7,9 GB   |
  | `11l`  | Windows 11 LTSC           | 4,7 GB   |
  | `11e`  | Windows 11 Enterprise     | 6,6 GB   |
  ||||
  | `10`   | Windows 10 Pro            | 5,7 GB   |
  | `10l`  | Windows 10 LTSC           | 4,6 GB   |
  | `10e`  | Windows 10 Enterprise     | 5,2 GB   |
  ||||
  | `8e`   | Windows 8.1 Enterprise    | 3,7 GB   |
  | `7u`   | Windows 7 Ultimate        | 3,1 GB   |
  | `vu`   | Windows Vista Ultimate    | 3,0 GB   |
  | `xp`   | Windows XP Professional   | 0,6 GB   |
  | `2k`   | Windows 2000 Professional | 0,4 GB   | 
  ||||  
  | `2025` | Windows Server 2025       | 7,6 GB   |
  | `2022` | Windows Server 2022       | 6,0 GB   |
  | `2019` | Windows Server 2019       | 5,3 GB   |
  | `2016` | Windows Server 2016       | 6,5 GB   |
  | `2012` | Windows Server 2012       | 4,3 GB   |
  | `2008` | Windows Server 2008       | 3,0 GB   |
  | `2003` | Windows Server 2003       | 0,6 GB   |

> [!TIP]
> Para instalar versões ARM64 do Windows, use [dockur/windows-arm](https://github.com/dockur/windows-arm/).

### Como altero a localização do armazenamento?

  Para alterar a localização do armazenamento, inclua a seguinte montagem bind no seu ficheiro compose:

  ```yaml
  volumes:
    - ./windows:/storage
  ```

  Substitua o caminho de exemplo `./windows` pela pasta de armazenamento ou volume nomeado desejado.

### Como altero o tamanho do disco?

  Para expandir o tamanho padrão de 64 GB, adicione a definição `DISK_SIZE` ao seu ficheiro compose e defina-o para a capacidade pretendida:

  ```yaml
  environment:
    DISK_SIZE: "256G"
  ```
  
> [!TIP]
> Isso também pode ser usado para redimensionar um disco existente para uma capacidade maior sem perda de dados. No entanto, precisará [estender manualmente a partição do disco](https://learn.microsoft.com/en-us/windows-server/storage/disk-management/extend-a-basic-volume?tabs=disk-management) depois, pois o espaço de disco adicionado aparecerá como não alocado.

### Como partilho ficheiros com o anfitrião?

  Após a instalação, haverá uma pasta chamada `Shared` na sua área de trabalho, que pode ser usada para trocar ficheiros com a máquina anfitriã.
  
  Para selecionar uma pasta no anfitrião para este fim, inclua a seguinte montagem bind no seu ficheiro compose:

  ```yaml
  volumes:
    -  ./example:/shared
  ```

  Substitua o caminho de exemplo `./example` pela sua pasta partilhada desejada, que então se tornará visível como `Shared`.

### Como altero a quantidade de CPU ou RAM?

  Por padrão, o Windows poderá usar 2 núcleos de CPU e 4 GB de RAM.

  Se quiser ajustar isso, pode especificar a quantidade desejada usando as seguintes variáveis de ambiente:

  ```yaml
  environment:
    RAM_SIZE: "8G"
    CPU_CORES: "4"
  ```

### Como configuro o nome de utilizador e a palavra-passe?

  Por padrão, é criado um utilizador chamado `Docker` e a sua palavra-passe é `admin`.

  Se quiser definir credenciais diferentes durante a instalação, pode configurá-las no seu ficheiro compose:

  ```yaml
  environment:
    USERNAME: "bill"
    PASSWORD: "gates"
  ```

### Como seleciono o idioma do Windows?

  Por padrão, a versão inglesa do Windows será transferida.
  
  Mas pode adicionar a variável de ambiente `LANGUAGE` ao seu ficheiro compose, para especificar um idioma alternativo a ser transferido:

  ```yaml
  environment:
    LANGUAGE: "French"
  ```
  
  Pode escolher entre: 🇦🇪 Árabe, 🇧🇬 Búlgaro, 🇨🇳 Chinês, 🇭🇧 Croata, 🇨🇿 Checo, 🇩🇰 Dinamarquês, 🇳🇱 Holandês, 🇬🇧 Inglês, 🇪🇪 Estónio, 🇫🇮 Finlandês, 🇫🇷 Francês, 🇩🇪 Alemão, 🇬🇷 Grego, 🇮🇱 Hebraico, 🇭🇺 Húngaro, 🇮🇹 Italiano, 🇯🇵 Japonês, 🇰🇯 Coreano, 🇱🇻 Letão, 🇱🇹 Lituano, 🇳🇴 Norueguês, 🇵🇹 Polaco, 🇵🇹 Português, 🇷🇴 Romeno, 🇷🇺 Russo, 🇷🇸 Sérvio, 🇸🇮 Eslovaco, 🇸🇮 Esloveno, 🇪🇸 Espanhol, 🇸🇪 Sueco, 🇹🇭 Tailandês, 🇹🇷 Turco e 🇺🇦 Ucraniano.

### Como seleciono o layout do teclado?

  Se quiser configurar um layout de teclado ou localidade que não seja o padrão para o idioma selecionado, pode adicionar as variáveis `KEYBOARD` e `REGION` assim:

  ```yaml
  environment:
    REGION: "en-US"
    KEYBOARD: "en-US"
  ```

### Como instalo uma imagem personalizada?

  Para transferir uma imagem ISO não suportada, especifique o seu URL na variável de ambiente `VERSION`:
  
  ```yaml
  environment:
    VERSION: "https://example.com/win.iso"
  ```

  Alternativamente, também pode saltar a transferência e usar um ficheiro local, vinculando-o no seu ficheiro compose desta forma:
  
  ```yaml
  volumes:
    - ./example.iso:/custom.iso
  ```

  Substitua o caminho de exemplo `./example.iso` pelo nome do seu ficheiro ISO desejado. O valor de `VERSION` será ignorado neste caso.

### Como executo um script após a instalação?

  Para executar o seu próprio script após a instalação, pode criar um ficheiro chamado `install.bat` e colocá-lo numa pasta juntamente com quaisquer ficheiros adicionais necessários (por exemplo, software a ser instalado).
  
  Em seguida, vincule essa pasta no seu ficheiro compose assim:

  ```yaml
  volumes:
    -  ./example:/oem
  ```

  A pasta de exemplo `./example` será copiada para `C:\OEM` e o ficheiro `install.bat` dentro dessa pasta será executado durante o último passo da instalação automática.

### Como realizo uma instalação manual?

  Recomenda-se manter a instalação automática, pois ajusta várias definições para evitar problemas comuns ao executar Windows dentro de um ambiente virtual.

  No entanto, se insistir em realizar a instalação manualmente (por sua conta e risco), adicione a seguinte variável de ambiente ao seu ficheiro compose:

  ```yaml
  environment:
    MANUAL: "Y"
  ```

### Como me conecto usando RDP?

  O visualizador web destina-se principalmente ao uso durante a instalação, pois é menos responsivo que o RDP e não suporta funcionalidades como partilha de área de transferência.

  Assim, para uma melhor experiência, pode conectar-se usando qualquer cliente Microsoft Remote Desktop ao IP do contentor, usando o nome de utilizador `Docker` e a palavra-passe `admin`.

  Existe um cliente RDP para [Android](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx) disponível na Play Store e um para [iOS](https://apps.apple.com/nl/app/microsoft-remote-desktop/id714464092?l=en-GB) na Apple Store. Para Linux pode usar [FreeRDP](https://www.freerdp.com/) e no Windows basta escrever `mstsc` na caixa de pesquisa.

### Como ativo o áudio?

    O áudio está desativado por padrão, a menos que esteja a usar RDP. Para transmiti-lo para o navegador, adicione a seguinte variável de ambiente:

  ```yaml
  environment:
    AUDIO: "Y"
  ```

  Em seguida, ative **Áudio** em **Definições → Avançadas** no visualizador web. A transmissão está ativa apenas enquanto esta opção estiver ativada, portanto, não consome largura de banda extra caso contrário.

### Como atribuo um endereço IP individual ao contentor?

  Por padrão, o contentor usa rede bridge, que partilha o endereço IP com o anfitrião.

  Se quiser atribuir um endereço IP individual ao contentor, pode criar uma rede macvlan da seguinte forma:

  ```bash
  docker network create -d macvlan \
      --subnet=192.168.0.0/24 \
      --gateway=192.168.0.1 \
      --ip-range=192.168.0.100/28 \
      -o parent=eth0 vlan
  ```
  
  Certifique-se de modificar esses valores para corresponder à sua sub-rede local.

  Após criar a rede, altere o seu ficheiro compose para o seguinte:

  ```yaml
  services:
    windows:
      container_name: windows
      ..<snip>..
      networks:
        vlan:
          ipv4_address: 192.168.0.100

  networks:
    vlan:
      external: true
  ```
 
  Uma vantagem adicional desta abordagem é que não precisará mais de fazer mapeamento de portas, pois todas as portas serão expostas por padrão.

> [!IMPORTANTE]  
> Este endereço IP não será acessível a partir do anfitrião Docker devido ao design do macvlan, que não permite comunicação entre os dois. Se isso for uma preocupação, precisa de criar um [segundo macvlan](https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/#host-access) como solução alternativa.

### Como pode o Windows adquirir um endereço IP do meu router?

  Após configurar o contentor para [macvlan](#como-atribuo-um-endereço-ip-individual-ao-contentor), é possível que o Windows se torne parte da sua rede doméstica solicitando um IP ao seu router, tal como um PC real.

  Para ativar este modo, no qual o contentor e o Windows terão endereços IP separados, adicione as seguintes linhas ao seu ficheiro compose:

  ```yaml
  environment:
    DHCP: "Y"
  devices:
    - /dev/vhost-net
  device_cgroup_rules:
    - 'c *:* rwm'
  ```

### Como adiciono múltiplos discos?

  Para criar discos adicionais, modifique o seu ficheiro compose assim:
  
  ```yaml
  environment:
    DISK2_SIZE: "32G"
    DISK3_SIZE: "64G"
  volumes:
    - ./example2:/storage2
    - ./example3:/storage3
  ```

### Como faço passagem de um disco?

  Pode passar dispositivos de disco ou partições diretamente, adicionando-os ao seu ficheiro compose desta forma:

  ```yaml
  devices:
    - /dev/sdb:/disk1
    - /dev/sdc1:/disk2
  ```

  Use `/disk1` se quiser que se torne a sua unidade principal (que será formatada durante a instalação) e use `/disk2` e superiores para adicioná-los como unidades secundárias (que permanecerão intocadas).

### Como faço passagem de um dispositivo USB?

  Para passar um dispositivo USB, primeiro procure os seus IDs de fabricante e produto através do comando `lsusb`, depois adicione-os ao seu ficheiro compose assim:

  ```yaml
  environment:
    ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234"
  devices:
    - /dev/bus/usb
  ```

> [!AVISO]  
> Adicionar um dispositivo de armazenamento USB antes da Configuração do Windows terminar pode fazê-la falhar. Ou pior: a unidade pode ser formatada como disco do sistema, e todos os seus dados serão perdidos! Portanto, mantenha-os sempre desconectados ao iniciar o contentor pela primeira vez.

### Estas são todas as opções disponíveis?

  Não. Para uma visão geral completa de todas as definições suportadas, veja a página de [variáveis de ambiente](https://github.com/dockur/windows/blob/master/docs/environment.md).

### Como verifico se o KVM está disponível?

  Primeiro, certifique-se de que a sua plataforma e runtime do contentor cumprem os [requisitos](#requisitos-️) listados acima.

  Num anfitrião Linux, instale o `cpu-checker` e execute:

  ```bash
  sudo apt install cpu-checker
  sudo kvm-ok
  ```

  Uma configuração funcional deve reportar:

  ```text
  KVM acceleration can be used
  ```

  Também pode verificar se o dispositivo KVM existe:

  ```bash
  ls -l /dev/kvm
  ```

  Se o KVM não estiver disponível, verifique se:

  - A virtualização de hardware (`Intel VT-x` ou `AMD-V`) está ativada na sua BIOS ou UEFI.
  - A virtualização aninhada está ativada quando o anfitrião é ele próprio uma máquina virtual.
  - O seu VPS ou fornecedor de cloud suporta virtualização aninhada.

  Se `kvm-ok` for bem-sucedido, mas o contentor ainda reportar que o KVM não está disponível, pode adicionar temporariamente `privileged: true` ao seu ficheiro Compose para descartar um problema de permissão ou acesso ao dispositivo.

### Como executo macOS num contentor?

  Pode usar [dockur/macos](https://github.com/dockur/macos) para isso. Partilha muitas das mesmas funcionalidades, exceto a instalação automática.

### Como executo um ambiente de trabalho Linux num contentor?

  Pode usar [qemus/qemu](https://github.com/qemus/qemu) nesse caso.

### Este projeto é legal?

  Sim, este projeto contém apenas código de código aberto e não distribui o Windows propriamente dito. Quaisquer chaves de produto encontradas no código são chaves de instalação genéricas publicadas pela Microsoft para fins de teste e não são licenças de ativação válidas.

  É responsável por garantir que possui uma licença válida do Windows e que o seu uso cumpre os termos de licenciamento da Microsoft.

## Estrelas 🌟
[![Stargazers](https://raw.githubusercontent.com/star-stats/stars/refs/heads/data/charts/dockur-windows.svg)](https://github.com/dockur/windows/stargazers)

## Aviso Legal ⚖️

*Os nomes de produtos, logótipos, marcas e outras marcas registadas referidas neste projeto são propriedade dos seus respetivos titulares. Este projeto não é afiliado, patrocinado ou endossado pela Microsoft Corporation.*

[build_url]: https://github.com/dockur/windows/
[hub_url]: https://hub.docker.com/r/dockurr/windows/
[tag_url]: https://hub.docker.com/r/dockurr/windows/tags
[pkg_url]: https://github.com/dockur/windows/pkgs/container/windows

[Build]: https://github.com/dockur/windows/actions/workflows/build.yml/badge.svg
[Size]: https://img.shields.io/docker/image-size/dockurr/windows/latest?color=066da5&label=size
[Pulls]: https://img.shields.io/docker/pulls/dockurr/windows.svg?style=flat&label=pulls&logo=docker
[Version]: https://img.shields.io/docker/v/dockurr/windows/latest?arch=amd64&sort=semver&color=066da5
[Package]: https://img.shields.io/badge/dynamic/json?url=https://ipitio.github.io/backage/dockur/windows/windows.json&query=$.downloads&logo=github&style=flat&color=066da5&label=pulls
Baixar ferramenta