--label 打标签是什么
docker run --label 给容器附加 key=value 形式的元数据标签。标签不影响容器运行行为,但能被 docker ps --filter label= 筛选,也能在输出模板里读取。多项目共用一台宿主时,统一前缀的标签是管理的基础。
基本信息
| 用途 | 为容器附加元数据标签 |
|---|---|
| 语法 | -l KEY=VALUE 或 --label KEY=VALUE,可重复使用 |
| 筛选 | docker ps --filter label=env=dev |
| 读取 | docker inspect -f '{{.Config.Labels}}' 或 ps 模板 {{.Label "key"}} |
| Compose 自带标签 | com.docker.compose.project、.service、.config-hash |
典型使用场景
- 按环境或团队筛选容器:清理、巡检、统计时先圈定范围
- 标记版本与发布信息,出问题时快速确认实例跑的是哪个版本
- 给清理脚本提供保护条件:--filter label!=keep 跳过需要保留的容器
- 多项目共用宿主时按项目或负责人分组核对资源占用
- 配合监控与资产台账做分组统计,减少手工维护的清单
- 为容器打上对应的工单或变更编号,事后审计时容易追溯
- 给自动化脚本加保护标记,清理与重启时用 keep 之类的标签把关键容器排除在外
示例
示例
docker run -d --name web \
--label env=dev --label owner=ops --label version=1.4.2 \
nginx:1.27-alpine
docker ps --filter label=env=dev --format '{{.Names}}\t{{.Label "owner"}}'
docker inspect -f '{{.Config.Labels}}' web
docker ps -a --filter label!=keep # 清理时把要保留的排除掉常见标签键与用途
| 标签键 | 示例值 | 用途 |
|---|---|---|
| env | dev、staging、prod | 按环境筛选与批量操作 |
| owner | ops、team-a | 责任归属与成本分摊 |
| version | 1.4.2 或提交号 | 确认实例运行的版本 |
| keep | true | 给清理脚本做保护标记 |
| com.docker.compose.* | 由 Compose 自动生成 | 识别受管理的容器 |
标签只是元数据,不参与调度与资源限制,也不构成任何访问控制,别把它当成权限或配额手段。
键值里避免空格与特殊字符:过滤表达式按字面匹配,写错不会报错,只会筛不到结果,巡检脚本里尤其容易踩。
Compose 启动的容器自带 com.docker.compose 系列标签,手工容器用相近的前缀风格能让两边的筛选逻辑统一。
标签在容器创建时就固定下来,运行期改标签要重新创建容器;写在 docker run 上的标签只作用于容器,与镜像自身的标签是两套机制。