docker 日常命令

docker 日常命令

#查看docker容器的log路径
docker inspect -f'{{.LogPath}}' 容器ID

# 正确写法(一层,清理缓存)
RUN apt update && apt install -y nginx \
    && rm -rf /var/lib/apt/lists/*
    
    
docker compose up -d --build

一、基础实时查看容器资源(默认不排序)

docker stats
# 等价简写
docker container stats

默认每秒刷新,展示所有运行容器:ID、CPU%、内存、网络、磁盘 IO、PIDs,但不自动排序。

二、一次性输出 + 按 CPU 从高到低排序(最常用)

完整命令(显示 ID、容器名、CPU、内存)

docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -k3 -rh

参数拆解

  1. --no-stream:只输出一次快照,不持续刷新,才能管道排序
  2. --format "table xxx":自定义输出字段,制表符分隔
    • .Container:容器短 ID
    • .Name:容器名称
    • .CPUPerc:CPU 使用率(第三列)
    • .MemUsage:内存占用
  3. sort -k3 -rh
    • -k3:按第 3 列(CPU 百分比)排序
    • -h:智能识别百分比数字排序
    • -r:倒序,CPU 最高放最上面

只看 CPU TOP5(取占用最高前 5 个)

docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.CPUPerc}}" | sort -k3 -rh | head -5

极简版(只展示名称 + CPU)

docker stats --no-stream --format "{{.Name}} {{.CPUPerc}}" | sort -k2 -rh

三、字段说明(format 可用占位符)

{{.Container}} 容器ID
{{.Name}}      容器名
{{.CPUPerc}}   CPU使用率
{{.MemUsage}}  内存使用/限制
{{.MemPerc}}   内存百分比
{{.NetIO}}     网络IO
{{.BlockIO}}   磁盘IO
{{.PIDs}}      进程数

四、实时交互式工具 ctop(推荐长期监控,自带排序)

docker stats 原生不支持实时动态排序,安装 ctop 一键按 CPU 排序:

# 安装
wget https://github.com/bcicen/ctop/releases/download/v0.7.6/ctop-0.7.6-linux-amd64 -O /usr/local/bin/ctop
chmod +x /usr/local/bin/ctop

# 运行
ctop

快捷键:

  • c:按 CPU 排序(默认)
  • m:按内存排序
  • q:退出

五、补充:按内存排序备用命令

docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}" | sort -k2 -rh

docker compose相关常用命令

docker compose up 详解 + 全套常用Docker Compose命令

一、docker compose up 核心逻辑(重点回答你的疑问)

1、是不是只执行更新操作?

分两种场景,不能一概而论

  1. 配置/镜像/挂载卷没有任何改动
    docker compose up 只会检查容器状态:
  • 容器已正常运行:直接打印服务日志,不会做任何创建、重启操作;
  • 容器停止了:直接启动原有容器,不重建。
  1. yml配置、镜像、挂载、端口、环境变量有修改
    不带 -d / 带 -d 都会销毁旧容器,基于新配置创建全新容器启动(不会修改原有容器,容器是不可变的)。

容器本身是只读快照,改配置无法原地修改容器,只能重建。

  1. 关键参数:docker compose up -d
    -d = detached 后台守护进程运行,生产必用,前台会占用终端、Ctrl+C直接停止所有容器。

补充关键特性

  • 不会自动删除旧镜像、旧数据卷:只重建容器;
  • 数据卷(volumes)只要没删除,数据会保留(数据库、Prometheus时序数据不会丢);
  • 纯新增服务:会直接拉起新容器,老服务保持不动。

和 docker kill -s SIGHUP 适用区分

  • 改配置文件内容(yml内的scrape、规则):用SIGHUP热重载,不用up;
  • 改端口映射、挂载路径、容器命令、镜像版本:必须docker compose up -d重建容器生效。

二、docker compose up 常用参数

# 后台启动/更新全部服务(最常用)
docker compose up -d

# 只更新、启动指定单个服务(比如只更新prometheus)
docker compose up -d prometheus

# 构建镜像+启动(本地Dockerfile构建场景使用)
docker compose up -d --build

# 强制重建所有容器,即便配置没改
docker compose up -d --force-recreate

# 拉取最新镜像再启动(升级镜像版本)
docker compose pull && docker compose up -d

三、Docker Compose 高频运维命令(分类整理)

🔹 启动/更新类

  1. docker compose up -d
    后台启动/更新全部服务,日常部署、改配置重载容器主力命令
  2. docker compose up -d 服务名
    单独更新某一个容器,例:docker compose up -d grafana

🔹 停止/重启类

  1. docker compose stop
    优雅停止所有容器(容器保留,数据、配置都在),可后续up直接启动
  2. docker compose stop 服务名
    单独停止某个容器
  3. docker compose restart
    重启全部容器(不读取新配置,只是重启旧容器)

⚠️ 改配置不要用restart,它不会加载compose.yml改动

  1. docker compose restart prometheus
    单独重启容器

🔹 彻底销毁(清理环境)

  1. docker compose down
    停止并删除容器、网络,数据卷、镜像保留(最安全的清理)
  2. docker compose down -v
    停止删除容器+网络+数据卷(⚠️ 数据库、监控数据全部清空,测试环境使用,生产禁止)
  3. docker compose down --rmi all
    删除容器+网络+镜像

🔹 日志排查(排错必备)

  1. docker compose logs
    查看全部容器日志
  2. docker compose logs -f
    实时滚动日志(类似tail -f)
  3. docker compose logs -f prometheus
    只看Prometheus实时日志
  4. docker compose logs --tail 200 prometheus
    只看最后200行日志

🔹 状态查看

  1. docker compose ps
    查看所有容器运行状态、端口、健康状态
  2. docker compose top
    查看容器内部进程
  3. docker compose config
    校验docker-compose.yml语法是否正确(改配置后必校验)
docker compose config
# 无报错=yml格式正常,有报错直接提示语法行号

🔹 镜像操作

  1. docker compose pull
    拉取所有服务最新镜像
  2. docker compose build
    基于Dockerfile构建自定义镜像
  3. docker compose images
    查看compose用到的镜像列表

🔹 进入容器内部

# 进入prometheus容器交互式终端
docker compose exec -it prometheus /bin/sh
# 进入grafana
docker compose exec -it grafana bash

exec:在正在运行的容器里新开终端,推荐使用;
run:临时新建容器,不用于日常进入。

🔹 扩容(横向扩展,比如多实例节点)

# 将node-exporter扩容为3个实例
docker compose up -d --scale node-exporter=3

四、生产环境标准操作流程(以你的Prometheus+Grafana监控栈举例)

  1. 修改docker-compose.yml配置
  2. 校验配置语法:docker compose config
  3. 平滑更新容器:docker compose up -d
  4. 查看日志验证启动:docker compose logs -f prometheus
  5. 日常临时停止:docker compose stop
  6. 整机重装清理:docker compose down(保留数据卷)

五、易错避坑点

  1. docker compose restart 不会加载compose.yml新配置,只会重启旧容器;
  2. docker compose down -v 会删掉持久化卷,Prometheus监控数据、Grafana面板配置会全部丢失;
  3. 前台docker compose up不要长期使用,关闭终端容器直接退出,必须加-d后台运行;
  4. Prometheus仅修改yml抓取配置:优先docker kill -s SIGHUP 容器名热重载,无需compose up重建容器。
posted @ 2026-10-14 14:58  阿砖  阅读(4)  评论(0)    收藏  举报