Phala Cloud supports private image pulls during CVM startup. Registry credentials are passed as encrypted environment variables and only used at runtime inside the trusted boot flow.
Use your Docker Hub username and password (or access token). Image paths follow the format username/image:tag or docker.io/username/image:tag.See Docker Hub documentation for account and repository setup.
Variable
Required
Description
DSTACK_DOCKER_USERNAME
Yes
Docker Hub username
DSTACK_DOCKER_PASSWORD
Yes
Docker Hub password or access token
Docker Hub is the default registry β you do not need to set DSTACK_DOCKER_REGISTRY.
Use your GitHub username and a with read:packages scope. Image paths follow the format ghcr.io/OWNER/IMAGE:TAG.With GitHub CLI, check your token scopes, add read:packages if missing, and print the token:
Copy
gh auth status # check current scopesgh auth refresh -s read:packages # add read:packages if missinggh auth token # print token for DSTACK_DOCKER_PASSWORD
Use an IAM access key with ecr:GetAuthorizationToken and ecr:BatchGetImage permissions. Image paths follow the format ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/REPO:TAG.With AWS CLI:
Copy
aws sts get-caller-identity # verify current identityaws ecr describe-repositories --region <region> # list repos to confirm accessaws iam create-access-key --user-name <username> # create a new access key
Each registry enforces pull rate limits. During frequent debugging and redeployment cycles, these limits can block image pulls and cause CVM startup failures.
CVM instances pull images on every startup. If you are iterating quickly on a public Docker Hub image without setting DSTACK_DOCKER_USERNAME / DSTACK_DOCKER_PASSWORD, pulls are unauthenticated and share the 100-pull limit across the host IP. Always configure Docker Hub credentials during active development to get the higher authenticated limit.
GitHub does not publish hard pull rate limits for GHCR. Public image pulls are effectively unlimited. Private image pulls are subject to your GitHub planβs data transfer quota. See GitHub billing for Packages for details.
Private does not impose per-image pull rate limits. API calls (e.g. GetAuthorizationToken) are throttled at ~20 TPS per region per account. See Amazon ECR service quotas for details.