# Windows 7 in a Docker container

- [Github repo](https://github.com/dockur/windows)


## docker-compose.yml
```yml
services:
  windows:
    image: dockurr/windows
    container_name: windows
    restart: unless-stopped
    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    stop_grace_period: 2m
    environment:
      CPU_CORES: "4"
      RAM_SIZE: "8G"
      DISK_SIZE: "128G"
      USERNAME: "admin"
    volumes:
       - ./windows:/storage
       - ./win7.iso:/custom.iso
```

## Tips & Tricks

### Custom ISO image
Just add this bit (and remove the `VERSION` environment variable) to the `docker-compose.yml` file:

```yml
  volumes:
    - /home/user/example.iso:/custom.iso
```

### CPU & RAM
By default, the container will be allowed to use a maximum of 2 CPU cores and 4 GB of RAM.
If you want to adjust this, you can specify the desired amount using the following environment variables:

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

### Username and password
By default, a user called `Docker` is created during the installation, with an **empty password**.
If you want to use different credentials, you can change them in your compose file:

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

### Storage location
To change the storage location, include the following bind mount in your compose file:

```yml
  volumes:
    - /var/win:/storage
```


### Storage size
To expand the default size of **64 GB**, add the `DISK_SIZE` setting to your compose file and set it to your preferred capacity:

```yml
  environment:
    DISK_SIZE: "256G"
```

### Sharing files with the host
Open **File Explorer** and click on the **Network** section, you will see a computer called **host.lan**. Double-click it and it will show a folder called **Data**, which can be bound to any folder on your host via the compose file:

```yml
  volumes:
    - /home/user/example:/data
```
