2014-06-01 16:48:04 -04:00
|
|
|
page_title: Working with Docker Hub
|
2014-06-20 20:10:20 -04:00
|
|
|
page_description: Learn how to use the Docker Hub to manage Docker images and work flow
|
2014-06-01 16:48:04 -04:00
|
|
|
page_keywords: repo, Docker Hub, Docker Hub, registry, index, repositories, usage, pull image, push image, image, documentation
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
# Working with Docker Hub
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
So far you've learned how to use the command line to run Docker on your local host.
|
|
|
|
You've learned how to [pull down images](/userguide/usingdocker/) to build containers
|
|
|
|
from existing images and you've learned how to [create your own images](/userguide/dockerimages).
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
Next, you're going to learn how to use the [Docker Hub](https://hub.docker.com) to
|
|
|
|
simplify and enhance your Docker workflows.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
The [Docker Hub](https://hub.docker.com) is a public registry maintained by Docker,
|
|
|
|
Inc. It contains over 15,000 images you can download and use to build containers. It also
|
|
|
|
provides authentication, work group structure, workflow tools like webhooks and build
|
|
|
|
triggers, and privacy tools like private repositories for storing images you don't want
|
|
|
|
to share publicly.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
## Docker commands and Docker Hub
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
Docker itself provides access to Docker Hub services via the `docker search`,
|
|
|
|
`pull`, `login`, and `push` commands. This page will show you how these commands work.
|
|
|
|
|
|
|
|
### Account creation and login
|
|
|
|
Typically, you'll want to start by creating an account on Docker Hub (if you haven't
|
|
|
|
already) and logging in. You can create your account directly on
|
|
|
|
[Docker Hub](https://hub.docker.com/account/signup/), or by running:
|
|
|
|
|
|
|
|
$ sudo docker login
|
|
|
|
|
|
|
|
This will prompt you for a user name, which will become the public namespace for your
|
|
|
|
public repositories.
|
|
|
|
If your user name is available, Docker will prompt you to enter a password and your
|
|
|
|
e-mail address. It will then automatically log you in. You can now commit and
|
|
|
|
push your own images up to your repos on Docker Hub.
|
|
|
|
|
|
|
|
> **Note:**
|
|
|
|
> Your authentication credentials will be stored in the [`.dockercfg`
|
|
|
|
> authentication file](#authentication-file) in your home directory.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
## Searching for images
|
|
|
|
|
2014-06-20 20:52:30 -04:00
|
|
|
You can search the [Docker Hub](https://hub.docker.com) registry via its search
|
2014-06-20 20:10:20 -04:00
|
|
|
interface or by using the command line interface. Searching can find images by image
|
|
|
|
name, user name, or description:
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
$ sudo docker search centos
|
|
|
|
NAME DESCRIPTION STARS OFFICIAL TRUSTED
|
|
|
|
centos Official CentOS 6 Image as of 12 April 2014 88
|
|
|
|
tianon/centos CentOS 5 and 6, created using rinse instea... 21
|
|
|
|
...
|
|
|
|
|
|
|
|
There you can see two example results: `centos` and
|
|
|
|
`tianon/centos`. The second result shows that it comes from
|
2014-06-20 20:10:20 -04:00
|
|
|
the public repository of a user, named `tianon/`, while the first result,
|
|
|
|
`centos`, doesn't explicitly list a repository which means that it comes from the
|
2014-05-21 17:05:19 -04:00
|
|
|
trusted top-level namespace. The `/` character separates a user's
|
2014-06-20 20:10:20 -04:00
|
|
|
repository from the image name.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
Once you've found the image you want, you can download it with `docker pull <imagename>`:
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
$ sudo docker pull centos
|
|
|
|
Pulling repository centos
|
|
|
|
0b443ba03958: Download complete
|
|
|
|
539c0211cd76: Download complete
|
|
|
|
511136ea3c5a: Download complete
|
|
|
|
7064731afe90: Download complete
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
You now have an image from which you can run containers.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
## Contributing to Docker Hub
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
Anyone can pull public images from the [Docker Hub](https://hub.docker.com)
|
2014-05-21 17:05:19 -04:00
|
|
|
registry, but if you would like to share your own images, then you must
|
2014-06-20 20:10:20 -04:00
|
|
|
register first, as we saw in the [first section of the Docker User
|
2014-06-01 16:48:04 -04:00
|
|
|
Guide](/userguide/dockerhub/).
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
## Pushing a repository to Docker Hub
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
In order to push a repository to its registry, you need to have named an image
|
2014-05-21 17:05:19 -04:00
|
|
|
or committed your container to a named image as we saw
|
|
|
|
[here](/userguide/dockerimages).
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
Now you can push this repository to the registry designated by its name or tag.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
$ sudo docker push yourname/newimage
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
The image will then be uploaded and available for use by your team-mates and/or the
|
|
|
|
community.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
## Features of Docker Hub
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
Let's take a closer look at some of the features of Docker Hub. You can find more
|
|
|
|
information [here](http://docs.docker.com/docker-hub/).
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
* Private repositories
|
|
|
|
* Organizations and teams
|
|
|
|
* Automated Builds
|
|
|
|
* Webhooks
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
### Private Repositories
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
Sometimes you have images you don't want to make public and share with
|
2014-06-01 16:48:04 -04:00
|
|
|
everyone. So Docker Hub allows you to have private repositories. You can
|
|
|
|
sign up for a plan [here](https://registry.hub.docker.com/plans/).
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
### Organizations and teams
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
One of the useful aspects of private repositories is that you can share
|
2014-06-01 16:48:04 -04:00
|
|
|
them only with members of your organization or team. Docker Hub lets you
|
2014-05-21 17:05:19 -04:00
|
|
|
create organizations where you can collaborate with your colleagues and
|
2014-06-20 20:10:20 -04:00
|
|
|
manage private repositories. You can learn how to create and manage an organization
|
2014-06-01 16:48:04 -04:00
|
|
|
[here](https://registry.hub.docker.com/account/organizations/).
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
### Automated Builds
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
Automated Builds automate the building and updating of images from
|
|
|
|
[GitHub](https://www.github.com) or [BitBucket](http://bitbucket.com), directly on Docker
|
|
|
|
Hub. It works by adding a commit hook to your selected GitHub or BitBucket repository,
|
|
|
|
triggering a build and update when you push a commit.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
#### To setup an Automated Build
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
1. Create a [Docker Hub account](https://hub.docker.com/) and login.
|
2014-06-20 20:10:20 -04:00
|
|
|
2. Link your GitHub or BitBucket account through the ["Link Accounts"](https://registry.hub.docker.com/account/accounts/) menu.
|
2014-09-10 15:08:05 -04:00
|
|
|
3. [Configure an Automated Build](https://registry.hub.docker.com/builds/add/).
|
2014-05-21 17:05:19 -04:00
|
|
|
4. Pick a GitHub or BitBucket project that has a `Dockerfile` that you want to build.
|
|
|
|
5. Pick the branch you want to build (the default is the `master` branch).
|
|
|
|
6. Give the Automated Build a name.
|
|
|
|
7. Assign an optional Docker tag to the Build.
|
|
|
|
8. Specify where the `Dockerfile` is located. The default is `/`.
|
|
|
|
|
|
|
|
Once the Automated Build is configured it will automatically trigger a
|
2014-06-20 20:10:20 -04:00
|
|
|
build and, in a few minutes, you should see your new Automated Build on the [Docker Hub](https://hub.docker.com)
|
|
|
|
Registry. It will stay in sync with your GitHub and BitBucket repository until you
|
2014-05-21 17:05:19 -04:00
|
|
|
deactivate the Automated Build.
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
If you want to see the status of your Automated Builds, you can go to your
|
2014-06-17 03:24:56 -04:00
|
|
|
[Automated Builds page](https://registry.hub.docker.com/builds/) on the Docker Hub,
|
2014-06-20 20:10:20 -04:00
|
|
|
and it will show you the status of your builds and their build history.
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
Once you've created an Automated Build you can deactivate or delete it. You
|
2014-06-20 20:10:20 -04:00
|
|
|
cannot, however, push to an Automated Build with the `docker push` command.
|
2014-05-21 17:05:19 -04:00
|
|
|
You can only manage it by committing code to your GitHub or BitBucket
|
|
|
|
repository.
|
|
|
|
|
|
|
|
You can create multiple Automated Builds per repository and configure them
|
|
|
|
to point to specific `Dockerfile`'s or Git branches.
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
#### Build Triggers
|
2014-05-21 17:05:19 -04:00
|
|
|
|
2014-06-01 16:48:04 -04:00
|
|
|
Automated Builds can also be triggered via a URL on Docker Hub. This
|
2014-05-21 17:05:19 -04:00
|
|
|
allows you to rebuild an Automated build image on demand.
|
|
|
|
|
2014-06-20 20:10:20 -04:00
|
|
|
### Webhooks
|
2014-05-21 17:05:19 -04:00
|
|
|
|
|
|
|
Webhooks are attached to your repositories and allow you to trigger an
|
|
|
|
event when an image or updated image is pushed to the repository. With
|
2014-06-20 20:10:20 -04:00
|
|
|
a webhook you can specify a target URL and a JSON payload that will be
|
2014-05-21 17:05:19 -04:00
|
|
|
delivered when the image is pushed.
|
|
|
|
|
|
|
|
## Next steps
|
|
|
|
|
|
|
|
Go and use Docker!
|
|
|
|
|