ProGet Documentation

Docker

A Docker feed in ProGet acts as a private registry for an organization's internal Docker images.

Docker Feed Limitations

Docker feeds are fundamentally different from other ProGet feed types. Docker feeds do not have any concept of packages. Instead, Docker works with repositories and images. A Docker feed contains multiple repositories, and each repository can contain one or more images. Images themselves are identified either by a hash, or a more friendly tag.

Docker feeds also are not intended for use with anything except the Docker client. Images cannot be manually created or uploaded, although they can be deleted, and some metadata can be edited from within ProGet.

Connectors cannot be used with Docker feeds. Since the Docker client uses the server name itself as its mechanism for identifiying when to use a private registry, there is no meaningful way to allow the transparent use of connectors as in other ProGet feed types.

To learn more about Docker feeds, please visit this Knowledge Base article.

Adding a Docker Feed

Starting with ProGet 4.3, you can now add Docker feeds, which are each effectively a private Docker registry.

Note that Docker requires an SSL connection, so you will need to configure ProGet to use IIS rather than its integrated web server, and configure the web site to use SSL (https). See testing an insecure registry in the Docker documentation for some help on configuring Docker to use a self-signed certificate.

Click on the Feeds tab in the navigation bar, and you will see a list of feeds in the system.

Click on the Create New Feed button and select Docker.

Supply a value for the Feed name field. This will be the name of your private Docker registry, and should contain characters that can be easily typed in a URL. For example, you could use DMC.

Click on the Create Feed button, and you should be automatically directed to the newly-created registry.

Setting up Docker

First, you will need to log in to Docker. To do this, use the following command, where proget is the name of your ProGet server:

[~]$ sudo docker login proget

As mentioned previously, Docker needs an SSL connection, so this operation will fail if ProGet is only accessible via http.

Publishing an Image

To publish a Docker image to ProGet, you first need to tag the image using Docker in a special format. For example, if we have an image locally called ubuntu:trusty, we need to retag it as follows:

[~]$ sudo docker tag ubuntu:trusty proget:443/dmc/ubuntu:trusty

Or, more generally, the format is: server/feed/image:tag.

Once tagged, the image can now be pushed to ProGet:

[~]$ sudo docker push proget:443/dmc/ubuntu:trusty

You can then pull the image in the same fashion:

[~]$ sudo docker pull proget:443/dmc/ubuntu:trusty