# Docker Hub

Configure Valohai to pull private images from Docker Hub.

> Private registries are restricted to organization projects. Personal projects don't have access to private repositories.

## Create an access token

1. Log in to [hub.docker.com](https://hub.docker.com)
2. Click your username (top-right) → **Account Settings**
3. Select **Security** → **New Access Token**
4. Add a description (e.g., "Valohai access token")
5. Set permissions (Read-only is sufficient for pulling images)
6. Click **Generate**
7. **Copy the token immediately**—Docker Hub won't show it again

Read more: [Docker Hub access tokens](https://docs.docker.com/docker-hub/access-tokens/)

## Add credentials to Valohai

1. Navigate to `Hi, <name>` (top-right menu) → `Manage <organization>`
2. Go to **Registries** under organization controls
3. Click **Add a new entry**
4. Configure:
   * **Match pattern**: `docker.io/<username>/*`
     * Example: `docker.io/mycompany/*`
     * Matches all repositories under your username/organization
   * **Registry type**: Docker (username and password authentication)
   * **Username**: Your Docker Hub username
   * **Password**: The access token you created (not your account password)
5. Save

## Use the private image

Reference your Docker Hub image in `valohai.yaml`:

```yaml
- step:
    name: train
    image: docker.io/mycompany/ml-training:v2.0
    command:
      - python train.py
```

You can also use the short form (Valohai expands it automatically):

```yaml
- step:
    name: train
    image: mycompany/ml-training:v2.0
    command:
      - python train.py
```

Valohai handles authentication automatically.
