命名与自动清理
两个参数解决日常使用的两个痛点:给容器取一个稳定可读的名字,后续操作不必再记随机的标识;让一次性容器退出后自动删除,避免机器上堆满已经停止的实例。名字是全局资源,自动清理则与自动重启相互冲突。
基本信息
| 命名参数 | 给容器指定名称,便于后续按名字操作 |
|---|---|
| 清理参数 | 容器退出后自动删除,包括元数据与可写层 |
| 名称规则 | 同一个引擎内全局唯一,已停止的容器同样占着名字 |
| 冲突处理 | 名称被占用时需要先删除旧容器才能复用 |
| 不指定时 | 由引擎生成随机名称,可读性差但不易冲突 |
典型使用场景
- 生产部署固定命名:按服务与角色命名,脚本与监控都能稳定引用
- 调试容器随用随删:加自动清理避免留下大量停止实例
- 批量临时任务:每个任务用不同名字,跑完自动清理
- 灰度发布:旧版本容器保持名字不变,新版本用另一个名字起好后再切换
- 重复执行脚本:脚本里先清理同名容器再启动,保证幂等
常用示例
常用示例
docker run -d --name api-prod app/api:v1.2 # 固定命名
docker rm -f api-prod 2>/dev/null || true # 脚本里先清理同名容器
docker run -d --name api-prod app/api:v1.3 # 再用同名启动新版本
docker run --rm -it alpine:3.20 sh # 退出即删的调试容器
docker ps -a --filter name=api-prod # 确认名称占用情况三个参数能否同用
| 组合 | 是否可行 | 说明 |
|---|---|---|
| 命名加后台运行 | 可行 | 最常用的部署组合 |
| 命名加自动清理 | 可行 | 一次性容器用固定名字,退出后名字也一起释放 |
| 自动清理加重启策略 | 不可行 | 直接报冲突参数错误 |
| 后台运行加重启策略 | 可行 | 常驻服务的推荐组合 |
| 自动清理加交互调试 | 可行 | 调试容器退出后现场一并消失,排障时慎用 |
命名建议
- 用服务名加角色或环境的组合,避免纯数字与随机串
- 名字里不放特殊字符,减少脚本与编排里的转义问题
- 同一台机器上多个实例用序号区分,便于批量操作
- 命名规则写进部署文档,交接时不必逐个查看容器内容
- 名字变更要同步更新脚本与监控,否则旧引用会报找不到对象
同名容器还在时(哪怕已经停止)必须删除后才能复用名字。脚本里的常见写法是先尝试删除再启动,配合忽略错误保证重复执行不会中断。
自动清理会带走容器的日志与退出状态。事故排查期间宁可先不加这个参数,保住现场比省一点清理工作重要得多。