dockerfiles-windows
Various Dockerfiles for Windows. Most of these can be run as Windows Containers on Windows 10, Windows Server 2016, Windows Server 1803 and Windows Server 2019.
Most of these Dockerfiles are automatically built on AppVeyor and pushed to Docker Hub. See the badges in each sub folder's README files.
Getting started
Windows 10
- Physical Machine / Virtual Machine
- Install Docker Community Edition for Windows on your Windows 10 Pro/Enterprise machine.
- Get a Windows 10 Virtual Machine
- Packer and Vagrant
- Use Packer with this packer-windows templates to build the
windows_10
Vagrant box. - Use Vagrant and this docker-windows-edge Vagrantfile to have Docker for Windows and lots of Docker Tools installed.
- Use Packer with this packer-windows templates to build the
- Packer and Vagrant
- Clone this repo and create some Docker images.
Windows Server 2016
- Register to evaluate Windows Server 2016.
- Get a Windows Server 2016 Virtual Machine
- Packer and Vagrant
- Use Packer with this packer-windows templates to build the
windows_2016_docker
Vagrant box. - Use Vagrant and this windows-docker-machine Vagrantfile to have Docker and lots of Docker Tools installed. Run
vagrant up 2016
.
- Use Packer with this packer-windows templates to build the
- Azure
- Deploy a Windows Server 2016 VM to Azure with
docker-windows-azure
template
- Deploy a Windows Server 2016 VM to Azure with
- Packer and Vagrant
- Clone this repo and create some Docker images
Windows Server 1803
- Get a Windows Server 1803 Virtual Machine
- Packer and Vagrant
- Use Packer with this packer-windows templates to build the
windows_server_1803_docker
Vagrant box]. You need the ISO file from your MSDN subscription. - Use Vagrant and this windows-docker-machine Vagrantfile to have Docker and lots of Docker Tools installed. Run
vagrant up 1803
. - Clone this repo and create some Docker images. Look for the
Dockerfile.1803
files. - It is recommended to use the smaller base images
mcr.microsoft.com/windows/nanoserver:1803
andmcr.microsoft.com/windows/servercore:1803
.
- Use Packer with this packer-windows templates to build the
- Packer and Vagrant
Windows Server 2019
- Get a Windows Server 2019 Virtual Machine
- Packer and Vagrant
- Use Packer with this packer-windows templates to build the
windows_2019_docker
Vagrant box]. You need the ISO file from your MSDN subscription. - Use Vagrant and this windows-docker-machine Vagrantfile to have Docker and lots of Docker Tools installed. Run
vagrant up 2019
. - Clone this repo and create some Docker images. Look for the
Dockerfile.1809
files. - It is recommended to use the smaller base images
mcr.microsoft.com/windows/nanoserver:1809
andmcr.microsoft.com/windows/servercore:1809
.
- Use Packer with this packer-windows templates to build the
- Packer and Vagrant
Further reading
- Network start-up and performance improvements in Windows 10 April 2018 Update and Windows Server, version 1803, 2018-04-27
- Modernizing existing .NET applications with Windows Containers and Azure cloud, 2017-09-28
- Windows Containers Internals, 2016-10-24
- Performance Tuning Guidelines for Windows Server 2016
- Read the Quick Start: Windows Server Containers and Docker to get started with a first tutorial.
- Read my blog post Create a Node.js Container image for Windows for my first test drive with Docker on Windows.
- Image what will happen when Kitematic meets Windows Containers.
- More Dockerfiles for Windows: Buc Rogers: Dockerfiles-for-Windows
- Windows Server Containers Examples: https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-container-samples/windowsservercore
- Networking
- Windows NAT (WinNAT) — Capabilities and limitations, 2016-05-25
- Windows Container Networking, 2016-08-22
- Docker Compose and Networking blog post, 2016-10-18
- Published Ports On Windows Containers Don't Do Loopback, 2016-10-20
PowerShell tricks
Porting Dockerfiles from Linux to Windows I found it useful to use PowerShell at some points. Here are some PowerShell tricks that were useful for me.
Feedback and Pull Requests are welcome
If you have some improvements, bug fixes, some new Dockerfiles or more PowerShell tricks, just send me a PR. If you have questions or problems, open an issue for discussion.
Troubleshooting
If you have trouble running Windows Containers you should have a look at https://docs.microsoft.com/virtualization/windowscontainers/troubleshooting
Invoke-WebRequest https://aka.ms/Debug-ContainerHost.ps1 -UseBasicParsing | Invoke-Expression
License
MIT - for more details see the LICENSE file.