Public Repository

Last pushed: 10 days ago
Short Description
Internet Information Services (IIS) installed in a Windows Server Core based container
Full Description

IIS Docker Image

Supported tags and respective Dockerfile links

This image is built from the microsoft/iis-docker GitHub repo.

What is IIS?

Internet Information Services (IIS) for Windows® Server is a flexible, secure and manageable Web server for hosting anything on the Web.

How to use this image?

Create a Dockerfile with your website

FROM microsoft/iis

RUN mkdir C:\site

RUN powershell -NoProfile -Command \
    Import-module IISAdministration; \
    New-IISSite -Name "Site" -PhysicalPath C:\site -BindingInformation "*:8000:"

EXPOSE 8000

ADD content/ /site

You can then build and run the Docker image:

$ docker build -t iis-site .
$ docker run -d -p 8000:8000 --name my-running-site iis-site

There is no need to specify an ENTRYPOINT in your Dockerfile since the microsoft/iis base image already includes an entrypoint application that monitors the status of the IIS World Wide Web Publishing Service (W3SVC).

Verify in the browser

With the current release, you can't use http://localhost to browse your site from the container host. This is because of a known behavior in WinNAT, and will be resolved in future. Until that is addressed, you need to use the IP address of the container.

Once the container starts, you'll need to finds its IP address so that you can connect to your running container from a browser. You use the docker inspect command to do that:

docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" my-running-site

You will see an output similar to this:

172.28.103.186

You can connect the running container using the IP address and configured port, http://172.28.103.186:8000 in the example shown.

In addition to static content, IIS can run other workloads including, but limited to ASP.NET, ASP.NET Core, NodeJS, PHP, and Apache Tomcat.

For a comprehensive tutorial on running an ASP.NET app in a container, check out the tutorial on the docs site.

Supported Docker Versions

This image has been tested on Docker Versions 1.12.1-beta26 or higher.

License

MICROSOFT SOFTWARE SUPPLEMENTAL LICENSE TERMS

CONTAINER OS IMAGE

Microsoft Corporation (or based on where you live, one of its affiliates) (referenced as “us,” “we,” or “Microsoft”) licenses this Container OS Image supplement to you (“Supplement”). You are licensed to use this Supplement in conjunction with the underlying host operating system software (“Host Software”) solely to assist running the containers feature in the Host Software. The Host Software license terms apply to your use of the Supplement. You may not use it if you do not have a license for the Host Software. You may use this Supplement with each validly licensed copy of the Host Software.

User Feedback

If you have any issues or concerns, reach out to us through a GitHub issue.

Docker Pull Command
Owner
microsoft

Comments (30)
matzub4mediapark
19 hours ago

How do you add an iissite on a nanoserver based image?
becaude I get:
"New-IISSite : The term 'New-IISSite' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again."

xpdevops
5 days ago

PS C:\Users\lpeverton\Documents\windowservercore> docker build -t xpdevops/windowservercore .
Sending build context to Docker daemon 2.048 kB
Step 1/4 : FROM windowsservercore
repository windowsservercore not found: does not exist or no pull access
PS C:\Users\lpeverton\Documents\windowservercore> docker build -t xpdevops/windowservercore .
Sending build context to Docker daemon 2.048 kB
Step 1/4 : FROM microsoft/iis
latest: Pulling from microsoft/iis
3889bb8d808b: Downloading
503d87f3196a: Downloading
ea440dc770db: Download complete
46f765ced05f: Download complete
640f08987e57: Download complete
a81c4ca315a9: Download complete
unknown blob
PS C:\Users\lpeverton\Documents\windowservercore>

geekays
8 days ago

As written here:

With the current release, you can't use http://localhost to browse your site from the container host. This is because of a known behavior in WinNAT, and will be resolved in future. Until that is addressed, you need to use the IP address of the container.

Then how shall an end user be able to browse the application?

bjornadalno
21 days ago

Im trying to find any information on how to load balance windows containers after they have been scaled. Anyone that can point me in the right direction?

tuannguyennvg
2 months ago

I run above command and get error:
Sending build context to Docker daemon 22.64 MB
Step 1 : FROM microsoft/iis
latest: Pulling from microsoft/iis

c480435b7cba: Pull complete
2acd7c473906: Extracting [==================================================>] 922.1 MB/922.1 MB
a837699b27ea: Download complete
e4e8167eafc5: Download complete
0344b06e0e62: Download complete
failed to register layer: Error processing tar file(exit status 1): link /Files/Windows/System32/drivers/hvservice.sys /Files/Windows/WinSxS/amd64_microsoft-hyper-v-drivers-hypervisor_31bf3856ad364e35_10.0.14393.576_none_6a09e6b203871d0e/hvservice.sys: no such file or directory
Please help me.
Many thanks

riqitang
3 months ago

Some people commented on issues:

  1. the "unknown blob" issue is caused when your Docker service is set to run Linux containers instead of Windows containers. To fix this, find the docker whale icon in the bottom bar, right-click it, then choose "Switch to Windows containers", then when that's done run the docker build command.
  2. "GetFileAttributesEx content\: The system cannot find the file specified." -- this is because the folder where you put the docker file needs a content directory, just create the directory and add a dummy index.html file that can be a simple as saying "hello world"
husseinsonmez
3 months ago

For the ones getting unknown blob error this post might be helpful:
https://forums.docker.com/t/unknown-blob-when-pulling-microsoft-nanoserver/20291/5

navyateja
3 months ago

Hi,

I am unable to build Image with the help of following Dockerfile.

FROM microsoft/iis
RUN mkdir C:\site
RUN powershell -NoProfile -Command \
Import-module IISAdministration; \
New-IISSite -Name "Site" -PhysicalPath "C:\site" -BindingInformation "*:8000:"
EXPOSE 8000
ADD content/ /site

It is thowing a error as following.
GetFileAttributesEx content\: The system cannot find the file specified.

Can anyone please help me out?

labdocker
3 months ago

Can we use this image to run PHP (FastCGI) on IIS ?

gauravdhamija83
4 months ago

I am also looking for guidance on remotely connecting to IIS running in a docker container....Is there any information on this?