Skip to main content

Docker Hub Integration

Morten Christoffersen avatar
Written by Morten Christoffersen
Updated over 3 weeks ago

Connect your Docker Hub organization to Viio to track team members, monitor container registry activity, and optimize your Docker Hub subscriptions.

Capabilities

✅ Users

Syncs all organization members with their usernames, email addresses, roles, and account status to track who has access to your container repositories

Usage

Tracks user activity through audit logs including image pushes, pulls, authentications, and repository modifications

Prerequisites

  • Docker Hub Organization - An active Docker Hub organization (personal accounts are not supported)

  • Admin/Owner Access - Administrative permissions to create access tokens

  • Access Token - Personal Access Token (PAT) or Organization Access Token (OAT)

  • Team or Business Plan - Required for usage tracking via audit logs (user sync works on all plans)

Setup

Important: If your organization has SSO enforced, you must use a personal access token (PAT) instead of a password.

1. Create Access Token

Option A: Personal Access Token (PAT) - Recommended

  • Log in to Docker Hub

  • Click your username → Account SettingsSecurity

  • Click New Access Token

  • Add description (e.g., "Viio Integration")

  • Set permissions: Read access (minimum) or Read/Write/Delete

  • Copy the token immediately (it won't be shown again)

Option B: Organization Access Token (OAT)

  • Navigate to Organizations → Select your organization

  • Go to SettingsSecurityNew Access Token

  • Configure with read permissions for members and audit logs

  • Copy the token

2. Gather Required Information

You'll need:

  • Username: Your Docker Hub username (or organization name if using OAT)

  • Access Token: The PAT or OAT you just created

  • Organization Name: Your organization name (visible in URL: hub.docker.com/orgs/{org_name})

3. Configure the Integration in Viio

  1. Open Viio → Integrations and choose Docker Hub → Connect

  2. Enter your Username

  3. Enter your Access Token

  4. Enter your Organization Name

  5. Click Continue, Add a Name & Save

4. Initial Sync

Viio will immediately begin syncing your Docker Hub data:

  • Organization members with roles and status

  • Activity data from audit logs (if on Team/Business plan)

The initial sync typically completes within a few minutes, depending on your organization size.

Troubleshooting & FAQ

Q: Why am I getting an "Unauthorized" error?

A: The token is incorrect, expired, or doesn't have sufficient permissions. Generate a new access token with read permissions for organization members and audit logs.

Q: I get "Organization not found" error

A: Verify your organization name is spelled correctly. Check the exact name from your Docker Hub URL: hub.docker.com/orgs/{org_name}

Q: No usage data is appearing

A: Audit logs are only available on Docker Hub Team and Business plans. If you're on a Free or Basic plan, upgrade to enable usage tracking. User sync will still work on all plans.

Q: My organization has SSO enabled. Can I still connect?

A: Yes, but you must use a Personal Access Token (PAT) instead of a password. Password authentication won't work with SSO-enforced organizations.

Q: What's the difference between PAT and OAT?

A: Personal Access Tokens (PAT) are created by individual users and use the username as the identifier. Organization Access Tokens (OAT) are created at the organization level and use the organization name as the identifier. Both work with Viio.

Q: Does Viio modify anything in Docker Hub?

A: No. Viio only reads data from Docker Hub. The integration does not create, modify, or delete users, repositories, or any other Docker Hub resources.

Q: Can I connect multiple Docker Hub organizations?

A: Yes, you can configure separate integrations for each organization you want to track.

Technical Details

Authentication: Uses /v2/auth/token endpoint to exchange credentials for a short-lived JWT token (~5 minutes). Tokens are automatically refreshed.

Credentials Format:

  • identifier: Username (for PAT) or organization name (for OAT)

  • secret: Password (if SSO not enforced), PAT, or OAT

API Endpoints:

  • Users: GET /v2/orgs/{orgName}/members (paginated, 100 per page)

  • Usage: GET /v2/auditlog (paginated, supports date range filtering)

Common Audit Log Actions: repo.push, repo.pull, auth.login, team.member.add, team.member.remove, repo.create, repo.delete

Did this answer your question?