- Docker 命令表由纯名称列表改为「命令 / 作用 / 实际执行」三列, 覆盖全部 33 条;补充顶部示例与选项解析的例外说明 - 新增 pkg.refreshindex 独立小节 - 按命令分组拆出 README.docker/net/disk/diagnose/proc/pkg.md, 主 README 保留简介、用法速览与「命令一览」导航表 - 新增「文档要写在哪」小节,约定后续新增命令的文档归属
10 KiB
10 KiB
Docker 命令(kopsc docker <子命令>)
返回 README.md
Docker 容器与镜像管理:查看、启停、日志、清理、导出/导入、Compose。
所有命令在三个平台都调用 docker(macOS / Windows 上即 Docker Desktop),
参数按平台无关的意图解析,不要求你记住 docker 的细节。
kopsc docker ps # 列出运行中的容器
kopsc docker ps --filter name=web # 过滤:只看名字含 web 的容器
kopsc docker images # 列出本地镜像(不知道有什么镜像时先看这个)
kopsc docker logs -f web # 查看日志(容器名必填,选项可透传)
kopsc docker exec web sh # 进入容器(默认就是交互模式,无需 -it)
kopsc docker clearsafe # 日常清理:停掉的容器、未用网络、悬空镜像(推荐)
kopsc docker clearsafe --dry-run # 只打印将执行的命令与判定依据
kopsc docker clearsafe -- --filter until=24h # -- 之后的参数原样透传给 docker
只读(查看信息,不修改任何东西)
| 命令 | 作用 | 实际执行 / 说明 |
|---|---|---|
kopsc docker ps |
列出运行中的容器 | docker ps;--filter、--format 可透传 |
kopsc docker psall |
列出全部容器(含已停止) | docker ps -a |
kopsc docker images |
列出本地镜像(名称、标签、ID、大小) | docker images;不知道有什么镜像时先看这个 |
kopsc docker stats |
一次性看容器 CPU / 内存 / IO 占用 | 单次快照(--no-stream);不给容器名时统计全部运行中的容器 |
kopsc docker df |
看镜像 / 容器 / 卷 / 构建缓存各占多少空间 | 按占用大小排序,并给出可回收空间(配合 clearsafe 清理) |
kopsc docker info |
查看 Docker 守护进程与主机环境信息 | docker info;排查「Docker 没起来」时先看这个 |
kopsc docker version |
查看 Docker 客户端与服务端版本 | docker version。注意:kopsc version 是 kopsc 自己的版本 |
kopsc docker logs <容器> |
查看容器日志 | 支持 --since / --grep / --save,见日志一节 |
kopsc docker inspect <对象> |
查看容器 / 镜像 / 网络 / 卷的完整配置(JSON) | docker inspect;想取某个字段可用 --format 透传 |
kopsc docker networks |
列出 Docker 网络 | docker network ls |
kopsc docker volumes |
列出数据卷 | docker volume ls;查看卷占空间用 kopsc docker df |
生命周期(启停、删除、搬运)
| 命令 | 作用 | 实际执行 / 说明 |
|---|---|---|
kopsc docker start <容器> |
启动已存在但已停止的容器 | docker start;不会创建新容器 |
kopsc docker stop <容器> |
停止运行中的容器 | 先发 SIGTERM,超时后强制结束;-t/--time 可透传 |
kopsc docker restart <容器> |
重启容器 | 等价先 stop 再 start,期间容器不可用 |
kopsc docker rm <容器> |
删除已停止的容器 | 按名称 / ID / 唯一前缀定位;运行中的会提示先 stop;需 --yes |
kopsc docker rmi <镜像> |
删除本地镜像 | 按名称 / ID / 唯一前缀定位;被容器引用的会删除失败;需 --yes |
kopsc docker exec <容器> <命令> |
在运行中的容器里执行命令 / 进入容器 | 默认交互(自带 -it),无需手写;例:kopsc docker exec web sh |
kopsc docker pull <镜像> |
从仓库拉取镜像 | docker pull;私有仓库需先 docker login |
kopsc docker tag <源镜像> <新名:标签> |
给镜像打新标签 | docker tag;导出前常用来定一个可读的名字 |
kopsc docker save <镜像> |
把镜像导出为 <镜像名>.tar |
按镜像名自动命名,传 ID 会先解析出名称 |
kopsc docker load <归档.tar> |
从 .tar 归档导入镜像 |
归档文件直接作为参数,不必再写 < 重定向 |
kopsc docker cp <源> <目标> |
在容器与主机之间复制文件 | 任一方向:web:/etc/nginx nginx.bak 或反过来 |
清理(全部不可恢复,执行前请确认范围)
| 命令 | 作用 | 实际执行 / 影响 |
|---|---|---|
kopsc docker clearsafe |
推荐的日常清理:停掉的容器、没用到的网络、悬空镜像、构建缓存 | docker system prune -f;不删镜像标签、不删卷 |
kopsc docker pruneimages |
只清理悬空镜像(没有标签的中间层) | docker image prune -f |
kopsc docker prunecontainers |
只清理已停止的容器 | docker container prune -f |
kopsc docker prunenets |
只清理没被容器使用的网络 | docker network prune -f |
kopsc docker prunebuilder |
只清理构建缓存 | docker builder prune -f;下次构建会变慢 |
kopsc docker prunevolumes |
清理没被使用的数据卷 | docker volume prune -f;卷内数据不可恢复,需 --yes |
kopsc docker clearall |
深度清理:所有未被引用的镜像(含已打标签的)与上述资源 | docker system prune -a -f;需 --yes,误删后需重新拉取镜像 |
Compose(docker-compose.yml 所在目录下执行)
| 命令 | 作用 | 实际执行 / 说明 |
|---|---|---|
kopsc docker compose up |
后台启动 Compose 里定义的全部服务 | docker compose up -d;指定服务可透传服务名,如 kopsc docker compose up web |
kopsc docker compose down |
停止并移除服务与网络 | docker compose down;默认保留卷,要删卷需自行透传 -v |
kopsc docker compose ps |
查看 Compose 服务状态 | docker compose ps |
kopsc docker compose logs |
查看 Compose 服务日志 | docker compose logs;-f 实时跟随,末尾加服务名只看某个服务 |
通用规则
logs、inspect、start、stop、restart、rm、rmi、exec、pull、tag、save、load、cp需要位置参数,缺失时直接报错并给出用法。- 破坏性命令是
rm、rmi、clearall(system prune -a -f)与prunevolumes(volume prune -f): 未带--yes时先列出将删除的对象、再打印将执行的命令,并以退出码 2 结束。 docker compose对应 Compose v2。docker clearsafe的安全契约:只加-f以便无人值守执行,不加-a(不清理全部未使用镜像), 不加--volumes(不删除卷),仅清理停止的容器、未使用的网络与悬空镜像。- 想确认某条命令在本平台实际会执行什么、为什么这样选:
kopsc explain docker.clearsafe; 想看某条命令自身的说明与选项:kopsc docker clearsafe -h。
镜像导出与导入(save / load)
kopsc docker save <镜像名|镜像ID> 等价于 docker save <镜像> -o <镜像名>.tar,归档文件自动命名:
kopsc docker save alpine:3.20 # → alpine_3.20.tar
kopsc docker save 9c6f07244728 # 按 ID 查到 alpine:3.20,同样保存为 alpine_3.20.tar
kopsc docker save sha256:9c6f07244728 --platform linux/arm64
kopsc docker load alpine_3.20.tar # 等价 docker load < alpine_3.20.tar
kopsc docker load a.tar b.tar # 一次导入多个
- 文件名取自镜像的仓库名 + 标签:标签前的冒号、路径分隔符
/等无法用于文件名的字符改写为下划线, 例如registry.example.com:5000/team/app:1.0→registry.example.com_5000_team_app_1.0.tar; 未打标签的镜像没有名称可依据,直接报错并提示先docker tag。 - 传入镜像 ID(可省略
sha256:前缀,也可用唯一前缀)时,先向 docker 查询它对应的镜像名称,再据此命名。 同一 ID 有多个名称时要求直接指定名称,避免文件名含糊。 --platform等 docker 选项原样透传。docker load的归档文件是位置参数(对应原来的docker load < xxx.tar),可一次给出多个;-i/--input仍然可用,传-仍表示从标准输入读取。
目标解析(exec / rm / rmi / stop / restart)
这几条命令按 kopsc 的意图做了解析,不再要求手写 docker 的细节:
kopsc docker exec web sh # 等价 docker exec -it web -- sh(-it 已是默认)
kopsc docker exec -u 0 web id # 容器名之前的 -u/-w/-e 照常透传给 docker
kopsc docker stop 3f2a1b # 按 ID 前缀找到容器并停止
kopsc docker rm db # 删除已停止的容器;运行中的会提示先 stop
kopsc docker rmi sha256:5ca7b1d5e2fc # 按 ID 或唯一前缀删除镜像
- 容器可按名称、ID 或唯一 ID 前缀定位;镜像可按名称、ID、
sha256:ID或唯一前缀定位。 目标不存在或前缀有歧义时,kopsc 直接报错,不会调用 docker。 exec默认交互,命令之后的参数一律作为容器内命令,因此命令自己的-i、-p不会被当成 docker 选项; 显式传-i/-t/-it会报错提示「已默认交互」。rm/rmi属于破坏性命令:不带--yes时先列出将删除的对象(容器显示 ID/名称/镜像/状态, 镜像显示 镜像/ID/创建/大小)再以退出码 2 结束;不再接受-f,强删请用--yes。rm遇到运行中的容器会提示先kopsc docker stop <名称>,不会替你强删。
日志、占用与实时状态
kopsc docker logs web --since 2h # 只看最近 2 小时
kopsc docker logs --grep ERROR web # 只看匹配行(kopsc 选项写在容器名之前)
kopsc docker logs --save /var/log/web.log web -f # 同时落盘,-f 仍交给 docker
kopsc docker df # 按占用大小排序的类型排行
kopsc docker stats # 单次快照,默认统计全部运行中容器
kopsc docker stats web --format '{{.CPUPerc}}'
--since/--grep/--save是 kopsc 私有选项,必须写在容器名之前;容器名之后的参数原样交给 docker。df输出「类型 / 项 / 可清理 / 大小 / 可回收」,末尾附总计与可回收提示。stats总是单次快照(--no-stream),不会再刷屏;给容器名时只统计这些,且要求容器正在运行。