如何使用docker-compose查看扩缩容后指定服务实例的日志?
报错原因
docker-compose 子命令默认仅识别 docker-compose.yml 中显式定义的服务名称,你通过扩容生成的 app_4 是容器名称的后缀,不属于独立服务,因此直接传入 app_4 会触发找不到服务的报错。
解决方案
方案一:适配当前 1.27.4 版本的通用方案(无需升级)
直接通过原生 docker 命令操作扩容生成的实例即可:
- 先查询
app_4对应的容器ID或完整容器名
docker ps --filter name=app_4
返回结果第一列为容器ID,最后一列为完整容器名,任选其一即可。
2. 查看指定实例日志,参数和 docker-compose logs 完全兼容,比如要实时跟踪日志、显示时间戳、仅看最后100行:
docker logs -f -t --tail 100 <替换为上一步查到的容器ID/容器名>
- 停止指定实例同理:
docker stop <替换为容器ID/容器名>
方案二:升级 docker-compose 到 1.28.0 及以上版本,使用官方专属参数
1.28.0 版本开始 docker-compose 新增了 --index 参数,专门用于指定扩容实例的序号,操作更便捷:
- 查看
app服务第4个实例的日志:
docker-compose logs -f -t --tail 100 --index 4 app
- 停止
app服务第4个实例:
docker-compose stop --index 4 app
- 其他操作如重启、进入容器执行命令等也支持该参数,比如进入第4个实例执行bash:
docker-compose exec --index 4 app bash
内容的提问来源于stack exchange,提问作者swiss_knight
相关产品推荐
相关产品推荐

