The official registry image currently only has Linux images. This repository has Windows variants, tagged as
PR 2209 adds cross compiling to
docker/distribution, so you can build the Windows binary.
PR 42 adds the Windows Dockerfiles to the official library.
Running a Registry Container
The basic usage will run a registry, store the data in the container, and publish port 5000:
docker run -d -p 5000:5000 sixeyed/registry
You'll want to host-mount the
c:\data directory, where the image is configured to store registry data. If you're using the registry from a single host, you can also use a fixed IP address for the container:
mkdir c:\registry-data docker run -d -p 5000:5000 --ip 172.24.202.164 -v c:\registry-data:c:\data sixeyed/registry
Configuring Your Docker Engine
The registry runs untrusted over HTTP, which Docker doesn't allow by default. Ideally, add a line to your
hosts file, to point
registry.local to the IP address for your container, to give you flexibility.
Docker for Windows has a UI to add untrusted registries, so you can dd
Docker on Windows Server 2016 will need configuring. You can edit
daemon.json or add a startup option to allow the untrusted registry address. That means stopping and unregistering the service, and then registering it with new options:
Stop-Service docker cd 'C:\Program Files\docker\' dockerd --unregister-service dockerd --register-service -G docker -H npipe:// -H 0.0.0.0:2375 --insecure-registry registry.local:5000 Start-Service docker
Using the Registry
To use the local registry, just
tag images with the registry address and
pull as usual:
docker pull sixeyed/hello-world:nanoserver docker tag sixeyed/hello-world:nanoserver registry.local:5000/my/hello-world docker push registry.local:5000/my/hello-world
Note. The base Windows images microsoft/nanoserver and microsoft/windowsservercore are considered 'foreign' layers by Docker, so you can't re-tag the base images and add them to your registry, only the custom layers for your images will be saved.