First thing is to install Windows 2016 – I started in a VM, but I’m rapidly thinking i might try it on my notebook – Windows 10 is getting old already 🙂
Then goto https://msdn.microsoft.com/virtualization/windowscontainers/quick_start/inplace_setup . Note that the powershell script will download another 3GB.
And now – you can run docker info
from either cmd.exe, or powershell.
There’s only a limited set of images you can download from Microsoft – docker search
seems to always reply with the same set:
PS C:\Users\Administrator> docker search anything NAME DESCRIPTION STARS OFFICIAL AUTOMATED microsoft/iis Internet Information Services (IIS) instal... 1 [OK] [OK] microsoft/dnx-clr .NET Execution Environment (DNX) installed... 1 [OK] [OK] microsoft/ruby Ruby installed in a Windows Server Contain... 1 [OK] microsoft/rubyonrails Ruby on Rails installed in a Windows Serve... 1 [OK] microsoft/python Python installed in a Windows Server Conta... 1 [OK] microsoft/go Go Programming Language installed in a Win... 1 [OK] microsoft/mongodb MongoDB installed in a Windows Server Cont... 1 [OK] microsoft/redis Redis installed in a Windows Server Contai... 1 [OK] microsoft/sqlite SQLite installed in a Windows Server Conta... 1 [OK]
I downloaded two, and this shows’s they’re re-using the windowsservercore
image as their common base image:
PS C:\Users\Administrator> docker images -a REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE microsoft/go latest 33cac80f92ea 2 days ago 10.09 GB 8daec63ffb52 2 days ago 9.75 GB fbab9eccc1e7 2 days ago 9.697 GB microsoft/dnx-clr latest 156a0b59c5a8 2 days ago 9.712 GB 28473be483a9 2 days ago 9.707 GB 56b7e372f76a 2 days ago 9.697 GB windowsservercore 10.0.10514.0 0d53944cb84d 6 days ago 9.697 GB windowsservercore latest 0d53944cb84d 6 days ago 9.697 GB PS C:\Users\Administrator> docker history microsoft/dnx-clr IMAGE CREATED CREATED BY SIZE COMMENT 156a0b59c5a8 2 days ago cmd /S /C setx PATH "%PATH%;C:\dnx-clr-win-x6 5.558 MB 28473be483a9 2 days ago cmd /S /C REM (nop) ADD dir:729777dc7e07ff03f 9.962 MB 56b7e372f76a 2 days ago cmd /S /C REM (nop) LABEL Description=.NET Ex 41.41 kB 0d53944cb84d 6 days ago 9.697 GB PS C:\Users\Administrator> docker history microsoft/go IMAGE CREATED CREATED BY SIZE COMMENT 33cac80f92ea 2 days ago cmd /S /C C:\build\install.cmd 335 MB 8daec63ffb52 2 days ago cmd /S /C REM (nop) ADD dir:898a4194b45d1cc66 53.7 MB fbab9eccc1e7 2 days ago cmd /S /C REM (nop) LABEL Description=GO Prog 41.41 kB 0d53944cb84d 6 days ago 9.697 GB
And so the fun begins.
PS C:\Users\Administrator> docker run --rm -it windowsservercore cmd
gives you a containerized shell.
Lets try to build an image that has the chocolatey installer:
FROM windowsservercore RUN @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" CMD powershell
and then use that image to install…. vim
FROM chocolatey RUN choco install -y vim
It works!
docker run --rm -it vim cmd
and then run
C:\Program Files (x86)\vim\vim74\vim.exe
Its not currently usable, I suspect because the ANSI terminal driver is really really new code – but BOOM!
I haven’t worked out how to get the Dockerfile
CMD
or
ENTRYPOINT
to work with paths that have spaces – it doesn’t seem to support the array form yet…
I’m going to keep playing, and put the Dockerfiles into https://github.com/SvenDowideit/WindowsDocker
Don’t forget to read the documentation at https://msdn.microsoft.com/en-us/virtualization/windowscontainers/containers_welcome