gitlab-container
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseContainer Registry Skill
GitLab容器镜像仓库操作技能
Container registry management for GitLab using raw endpoint calls.
glab api使用原生端点调用管理GitLab容器镜像仓库。
glab apiQuick Reference
快速参考
| Operation | Command Pattern | Risk |
|---|---|---|
| List repositories | | - |
| Get repository | | - |
| Delete repository | | ⚠️⚠️⚠️ |
| List tags | | - |
| Get tag | | - |
| Delete tag | | ⚠️⚠️ |
| Bulk delete tags | | ⚠️⚠️⚠️ |
Risk Legend: - Safe | ⚠️ Caution | ⚠️⚠️ Warning | ⚠️⚠️⚠️ Danger
| 操作 | 命令模板 | 风险级别 |
|---|---|---|
| 列出容器镜像仓库 | | - |
| 获取镜像仓库详情 | | - |
| 删除镜像仓库 | | ⚠️⚠️⚠️ |
| 列出镜像标签 | | - |
| 获取标签详情 | | - |
| 删除单个标签 | | ⚠️⚠️ |
| 批量删除标签 | | ⚠️⚠️⚠️ |
风险级别说明: - 安全 | ⚠️ 注意 | ⚠️⚠️ 警告 | ⚠️⚠️⚠️ 危险
When to Use This Skill
何时使用此技能
ALWAYS use when:
- User mentions "container", "registry", "docker image", "container image"
- User wants to list or delete Docker tags
- User mentions "image cleanup", "registry cleanup"
- User wants to view container repository information
NEVER use when:
- User wants to build/push Docker images (use CI/CD or docker CLI)
- User wants to run containers (use docker CLI or orchestrator)
- User wants package registry (different API)
务必在以下场景使用:
- 用户提及“容器”、“镜像仓库”、“Docker镜像”、“容器镜像”
- 用户需要列出或删除Docker标签
- 用户提及“镜像清理”、“仓库清理”
- 用户需要查看容器镜像仓库信息
切勿在以下场景使用:
- 用户需要构建/推送Docker镜像(请使用CI/CD或Docker CLI)
- 用户需要运行容器(请使用Docker CLI或编排工具)
- 用户需要操作包仓库(使用不同的API)
API Prerequisites
API前置条件
Required Token Scopes: , (for delete operations), or
read_registrywrite_registryapiPermissions:
- Read registry: Reporter+
- Delete images: Developer+ (or Maintainer depending on settings)
Note: Container Registry must be enabled for the project.
所需令牌权限范围: 、(用于删除操作)或
read_registrywrite_registryapi权限要求:
- 读取镜像仓库:Reporter及以上角色
- 删除镜像:Developer及以上角色(或根据设置需要Maintainer角色)
注意: 项目必须已启用容器镜像仓库。
Available Commands
可用命令
List Container Repositories
列出容器镜像仓库
bash
undefinedbash
undefinedList all repositories in project
列出项目中所有镜像仓库
glab api projects/123/registry/repositories --method GET
glab api projects/123/registry/repositories --method GET
With pagination
分页列出
glab api projects/123/registry/repositories --paginate
glab api projects/123/registry/repositories --paginate
Include tags count
包含标签数量
glab api "projects/123/registry/repositories?tags_count=true" --method GET
glab api "projects/123/registry/repositories?tags_count=true" --method GET
Using project path
使用项目路径
glab api "projects/$(echo 'mygroup/myproject' | jq -Rr @uri)/registry/repositories"
undefinedglab api "projects/$(echo 'mygroup/myproject' | jq -Rr @uri)/registry/repositories"
undefinedGet Repository Details
获取镜像仓库详情
bash
undefinedbash
undefinedGet specific repository
获取指定镜像仓库详情
glab api projects/123/registry/repositories/456 --method GET
glab api projects/123/registry/repositories/456 --method GET
With tags count
包含标签数量
glab api "projects/123/registry/repositories/456?tags_count=true" --method GET
undefinedglab api "projects/123/registry/repositories/456?tags_count=true" --method GET
undefinedDelete Repository
删除镜像仓库
Warning: This deletes the repository and ALL its tags!
bash
undefined警告: 此操作会删除整个镜像仓库及其所有标签!
bash
undefinedDelete entire repository
删除整个镜像仓库
glab api projects/123/registry/repositories/456 --method DELETE
undefinedglab api projects/123/registry/repositories/456 --method DELETE
undefinedList Tags in Repository
列出镜像仓库中的标签
bash
undefinedbash
undefinedList all tags
列出所有标签
glab api projects/123/registry/repositories/456/tags --method GET
glab api projects/123/registry/repositories/456/tags --method GET
With pagination
分页列出
glab api projects/123/registry/repositories/456/tags --paginate
undefinedglab api projects/123/registry/repositories/456/tags --paginate
undefinedGet Tag Details
获取标签详情
bash
undefinedbash
undefinedGet specific tag
获取指定标签详情
glab api projects/123/registry/repositories/456/tags/latest --method GET
glab api projects/123/registry/repositories/456/tags/latest --method GET
Get tag with digest info
获取包含摘要信息的标签
glab api projects/123/registry/repositories/456/tags/v1.0.0 --method GET
undefinedglab api projects/123/registry/repositories/456/tags/v1.0.0 --method GET
undefinedDelete Single Tag
删除单个标签
bash
undefinedbash
undefinedDelete specific tag
删除指定标签
glab api projects/123/registry/repositories/456/tags/v1.0.0 --method DELETE
glab api projects/123/registry/repositories/456/tags/v1.0.0 --method DELETE
Delete 'latest' tag
删除'latest'标签
glab api projects/123/registry/repositories/456/tags/latest --method DELETE
undefinedglab api projects/123/registry/repositories/456/tags/latest --method DELETE
undefinedBulk Delete Tags
批量删除标签
bash
undefinedbash
undefinedDelete tags matching regex (keep none)
删除匹配正则的所有标签(不保留任何标签)
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f name_regex_delete=".*"
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f name_regex_delete=".*"
Delete all tags except last 5
删除所有标签,仅保留最新5个
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f keep_n=5
-f name_regex_delete=".*"
-f keep_n=5
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f keep_n=5
-f name_regex_delete=".*"
-f keep_n=5
Delete tags older than 30 days, keep last 10
删除30天前的标签,仅保留最新10个
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f keep_n=10
-f older_than="30d"
-f name_regex_delete=".*"
-f keep_n=10
-f older_than="30d"
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f keep_n=10
-f older_than="30d"
-f name_regex_delete=".*"
-f keep_n=10
-f older_than="30d"
Delete only dev/snapshot tags
仅删除开发/快照标签
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete="^dev-.*"
-f name_regex_delete="^dev-.*"
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete="^dev-.*"
-f name_regex_delete="^dev-.*"
Keep tags matching pattern (exclude from deletion)
保留匹配指定规则的标签(不删除这些标签)
glab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=5
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=5
undefinedglab api projects/123/registry/repositories/456/tags --method DELETE
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=5
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=5
undefinedBulk Delete Options
批量删除选项
| Option | Type | Description |
|---|---|---|
| string | Regex pattern for tags to delete |
| string | Regex pattern for tags to keep (overrides delete) |
| integer | Number of latest tags to keep |
| string | Delete tags older than duration (e.g., |
| 选项 | 类型 | 说明 |
|---|---|---|
| 字符串 | 要删除的标签匹配正则表达式 |
| 字符串 | 要保留的标签匹配正则表达式(优先级高于删除规则) |
| 整数 | 要保留的最新标签数量 |
| 字符串 | 删除早于指定时长的标签(例如: |
Common Workflows
常见工作流
Workflow 1: List All Images and Tags
工作流1:列出所有镜像及标签
bash
project_id=123bash
project_id=123Get all repositories
获取所有镜像仓库
repos=$(glab api projects/$project_id/registry/repositories --paginate)
repos=$(glab api projects/$project_id/registry/repositories --paginate)
For each repository, list tags
遍历每个镜像仓库,列出标签
echo "$repos" | jq -r '.[].id' | while read repo_id; do
repo_name=$(echo "$repos" | jq -r ".[] | select(.id == $repo_id) | .path")
echo "=== $repo_name ==="
glab api projects/$project_id/registry/repositories/$repo_id/tags |
jq -r '.[].name' echo "" done
jq -r '.[].name' echo "" done
undefinedecho "$repos" | jq -r '.[].id' | while read repo_id; do
repo_name=$(echo "$repos" | jq -r ".[] | select(.id == $repo_id) | .path")
echo "=== $repo_name ==="
glab api projects/$project_id/registry/repositories/$repo_id/tags |
jq -r '.[].name' echo "" done
jq -r '.[].name' echo "" done
undefinedWorkflow 2: Find Large Images
工作流2:查找大体积镜像
bash
project_id=123
repo_id=456bash
project_id=123
repo_id=456List tags with sizes
列出包含大小信息的标签
glab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq -r 'sort_by(.total_size) | reverse | .[] | "(.name): (.total_size / 1024 / 1024 | floor) MB"'
jq -r 'sort_by(.total_size) | reverse | .[] | "(.name): (.total_size / 1024 / 1024 | floor) MB"'
undefinedglab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq -r 'sort_by(.total_size) | reverse | .[] | "(.name): (.total_size / 1024 / 1024 | floor) MB"'
jq -r 'sort_by(.total_size) | reverse | .[] | "(.name): (.total_size / 1024 / 1024 | floor) MB"'
undefinedWorkflow 3: Clean Up Old Development Images
工作流3:清理旧开发镜像
bash
project_id=123
repo_id=456bash
project_id=123
repo_id=456Delete dev images older than 7 days, keep last 3
删除7天前的开发镜像,仅保留最新3个
glab api projects/$project_id/registry/repositories/$repo_id/tags --method DELETE
-f name_regex_delete="^dev-.*"
-f older_than="7d"
-f keep_n=3
-f name_regex_delete="^dev-.*"
-f older_than="7d"
-f keep_n=3
undefinedglab api projects/$project_id/registry/repositories/$repo_id/tags --method DELETE
-f name_regex_delete="^dev-.*"
-f older_than="7d"
-f keep_n=3
-f name_regex_delete="^dev-.*"
-f older_than="7d"
-f keep_n=3
undefinedWorkflow 4: Keep Only Release Tags
工作流4:仅保留正式版本标签
bash
project_id=123
repo_id=456bash
project_id=123
repo_id=456Delete everything except semver tags, keep last 10
删除所有标签,仅保留语义化版本标签,且保留最新10个
glab api projects/$project_id/registry/repositories/$repo_id/tags --method DELETE
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=10
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=10
undefinedglab api projects/$project_id/registry/repositories/$repo_id/tags --method DELETE
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=10
-f name_regex_delete=".*"
-f name_regex_keep="^v[0-9]+\.[0-9]+\.[0-9]+$"
-f keep_n=10
undefinedWorkflow 5: Audit Registry Usage
工作流5:审计镜像仓库使用情况
bash
project_id=123bash
project_id=123Get total size per repository
获取每个镜像仓库的总存储大小
glab api "projects/$project_id/registry/repositories?tags_count=true" --paginate |
jq -r '.[] | "(.path): (.tags_count) tags"'
jq -r '.[] | "(.path): (.tags_count) tags"'
glab api "projects/$project_id/registry/repositories?tags_count=true" --paginate |
jq -r '.[] | "(.path): (.tags_count) tags"'
jq -r '.[] | "(.path): (.tags_count) tags"'
Get detailed size info for a repository
获取指定镜像仓库的详细存储信息
repo_id=456
glab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq '[.[] | .total_size] | add / 1024 / 1024 | "Total: (. | floor) MB"'
jq '[.[] | .total_size] | add / 1024 / 1024 | "Total: (. | floor) MB"'
undefinedrepo_id=456
glab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq '[.[] | .total_size] | add / 1024 / 1024 | "Total: (. | floor) MB"'
jq '[.[] | .total_size] | add / 1024 / 1024 | "Total: (. | floor) MB"'
undefinedWorkflow 6: Find and Delete Untagged Images
工作流6:查找并删除无标签镜像
bash
project_id=123
repo_id=456bash
project_id=123
repo_id=456Note: Untagged images are automatically cleaned up by GitLab
注意:无标签镜像会被GitLab自动清理
You can trigger cleanup by deleting all tags and then the repo
可以通过删除所有标签后再删除仓库来触发清理
Or wait for the scheduled cleanup job
或者等待定时清理任务执行
undefinedundefinedWorkflow 7: Export Tag List for Backup
工作流7:导出标签列表用于备份
bash
project_id=123
repo_id=456bash
project_id=123
repo_id=456Export tag names
导出标签名称
glab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq -r '.[].name' > tags_backup.txt
jq -r '.[].name' > tags_backup.txt
glab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq -r '.[].name' > tags_backup.txt
jq -r '.[].name' > tags_backup.txt
Export with details
导出包含详细信息的标签
glab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq -r '.[] | [.name, .created_at, .total_size] | @csv' > tags_details.csv
jq -r '.[] | [.name, .created_at, .total_size] | @csv' > tags_details.csv
undefinedglab api projects/$project_id/registry/repositories/$repo_id/tags --paginate |
jq -r '.[] | [.name, .created_at, .total_size] | @csv' > tags_details.csv
jq -r '.[] | [.name, .created_at, .total_size] | @csv' > tags_details.csv
undefinedRegistry URL Format
镜像仓库URL格式
GitLab Container Registry URLs follow this pattern:
registry.gitlab.com/<namespace>/<project>
registry.gitlab.com/<namespace>/<project>/<image>For example:
registry.gitlab.com/mygroup/myprojectregistry.gitlab.com/mygroup/myproject/appregistry.gitlab.com/mygroup/myproject/api
GitLab容器镜像仓库URL遵循以下格式:
registry.gitlab.com/<namespace>/<project>
registry.gitlab.com/<namespace>/<project>/<image>示例:
registry.gitlab.com/mygroup/myprojectregistry.gitlab.com/mygroup/myproject/appregistry.gitlab.com/mygroup/myproject/api
Troubleshooting
故障排查
| Issue | Cause | Solution |
|---|---|---|
| 403 Forbidden | No registry access | Check token scopes, need |
| 404 Not Found | Registry disabled or repo doesn't exist | Enable registry in project settings |
| Delete fails | Insufficient permissions | Need Developer+ role or |
| Bulk delete no effect | No matching tags | Check regex pattern |
| Old images persist | GitLab cleanup job | Wait for scheduled cleanup or delete manually |
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 403 Forbidden(禁止访问) | 无镜像仓库访问权限 | 检查令牌权限范围,需要 |
| 404 Not Found(未找到) | 镜像仓库未启用或仓库不存在 | 在项目设置中启用镜像仓库 |
| 删除操作失败 | 权限不足 | 需要Developer及以上角色或 |
| 批量删除无效果 | 无匹配标签 | 检查正则表达式规则 |
| 旧镜像仍然存在 | GitLab清理任务未执行 | 等待定时清理任务执行或手动删除 |
Size Limits and Quotas
存储限制与配额
- GitLab.com has storage quotas per namespace
- Self-managed instances may have different limits
- Check namespace storage usage in Settings > Usage Quotas
- GitLab.com每个命名空间有存储配额
- 自托管实例可能有不同的限制
- 在设置 > 使用配额中查看命名空间存储使用情况
Best Practices
最佳实践
- Regular cleanup: Set up scheduled cleanup with and
older_thankeep_n - Tag strategy: Use meaningful tags (semver, commit SHA, branch name)
- Keep release tags: Use to preserve important versions
name_regex_keep - Monitor storage: Check registry size regularly
- Use CI cleanup: Add cleanup job to CI pipeline
- 定期清理:使用和
older_than设置定时清理任务keep_n - 标签策略:使用有意义的标签(语义化版本、提交SHA、分支名称)
- 保留正式版本标签:使用保留重要版本
name_regex_keep - 监控存储:定期检查镜像仓库大小
- 使用CI清理:在CI流水线中添加清理任务
Related Documentation
相关文档
- API Helpers
- Safeguards
- Quick Reference
- GitLab Container Registry API
- API 助手
- 安全防护
- 快速参考
- GitLab容器镜像仓库API