Docker 核心命令速查手册
本文档整理 Docker 日常使用中最常用的核心命令,方便快速查找与复制。
一、容器操作
查看运行中的容器
bash
docker ps查看所有容器(包含停止的)
bash
docker ps -a查看容器日志
高频简洁用法:
bash
# 简写(推荐,最常用)
docker logs -f -n 100 容器名
# 也可以合并简写(参数顺序不影响)
docker logs -fn 100 容器名查看日志
bash
docker logs 容器名实时查看日志
bash
docker logs -f 容器名
docker logs --follow 容器名查看最后 100 行(只显示最后100行)
bash
docker logs --tail 100 容器名
docker logs -n 100 容器名修改已有容器配置
docker update 的作用是:动态修改已存在容器的运行配置,而不需要重新创建容器。
bash
# 设置自动重启(最常用)
docker update --restart=always rabbitmq
# 限制容器内存
docker update --memory 512m redis
# 限制 CPU 核心:
docker update --cpus 1 nginx
# 限制 CPU 权重:
docker update --cpu-shares 512 nginx
# 同时修改多个参数
docker update \
--memory 512m \
--cpus 1 \
--restart=always \
rabbitmqWARNING
docker update 无法修改端口映射(-p)和数据卷挂载(-v)。
原因是:
- 端口映射和数据卷属于容器的“创建时配置”,容器创建后就固定了,docker update 只能修改“运行时资源限制”。
进入容器
bash
docker exec -it 容器名 bash如果 bash 不存在:
bash
docker exec -it 容器名 sh重启容器
bash
docker restart 容器名删除容器
bash
docker rm 容器名强制删除
bash
docker rm -f 容器名注意
生产环境不要随意使用 docker rm -f
二、文件操作
容器 → 宿主机(常用)
bash
docker cp 容器名:/容器路径 宿主机路径
# 复制容器中的文件,到宿主机中,这个经常用于想要容器里面的某个文件时,非常好用!
docker cp <container_id>:/path/in/container /path/on/host示例:
bash
docker cp mysql:/etc/mysql/my.cnf ./宿主机 → 容器
bash
docker cp 宿主机路径 容器名:/容器路径示例:
bash
docker cp my.cnf mysql:/etc/mysql/三、镜像操作
打标签(Tag)
用于创建镜像别名或版本
bash
docker tag 源镜像:版本 新镜像:版本
# 为已有的 Docker 镜像打上新的标签(Tag)。标签是镜像的一个标识,可以用来管理和区分不同版本的镜像。通过 docker tag,你可以为同一个镜像创建多个不同的标签或名字,从而让你更灵活地管理镜像。
docker tag <source-image> <target-image>示例:
bash
docker tag node:14 node:latest常见用途:
- 创建版本别名
- 推送私有仓库
- 版本管理
查看镜像
bash
docker images删除镜像
bash
docker rmi 镜像名强制删除
bash
docker rmi -f 镜像名四、网络操作(推荐)
定义网络,可以通过容器名直接通信(推荐)
创建网络
bash
docker network create xupengboo_network连接容器到网络
使 mysql 容器就「加入」了 xupengboo_network 这个 「自定义网络」中(可以立即为一个专属局域网)。
bash
docker network connect xupengboo_network mysql断开网络
bash
docker network disconnect xupengboo_network mysql查看网络
bash
docker network ls查看网络详情
bash
docker network inspect xupengboo_network推荐方式(创建容器时直接指定网络)
bash
docker run --network xupengboo_network nginx优点:
- 容器之间可直接通过容器名访问
- 不需要 IP
- 自动 DNS 解析
示例:
bash
mysql:3306
redis:6379
nginx:80五、Docker 磁盘占用排查与清理
用于排查 Docker 导致的磁盘空间占用问题,以及安全清理构建缓存。
查看 Docker 磁盘占用情况
查看 Docker 占用空间情况,适合排查因 Docker 导致的磁盘占用问题。
bash
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 1 1.328GB 1.312GB (98%)
Containers 1 0 1.093kB 1.093kB (100%)
Local Volumes 9 0 2.908GB 2.908GB (100%)
Build Cache 242 0 28.34GB 28.34GB| 类型 | 说明 |
|---|---|
| Images | 镜像占用空间 |
| Containers | 容器占用空间 |
| Local Volumes | 数据卷占用空间(常见磁盘占用来源) |
| Build Cache | 构建缓存占用空间(最常见磁盘爆满原因) |
| 字段 | 含义 |
|---|---|
| TOTAL | 总数量 |
| ACTIVE | 使用中的数量 |
| SIZE | 占用空间 |
| RECLAIMABLE | 可回收空间 |
注意:
如果 Build Cache 或 Local Volumes 占用很大,通常就是磁盘占满的主要原因。
清理构建缓存(推荐,安全)
bash
docker builder prune
# 加 -a 参数会额外清理「无归属的虚悬镜像」,但依然不影响有标签 / 被引用的镜像;
docker builder prune -a作用:
- 清理构建镜像时产生的缓存
- 不会删除镜像
- 不会删除容器
- 不会删除数据卷
- 不会影响运行中的服务
执行后,要验证资源是否保留:
bash
docker system df # 查看空间
docker images # 所有镜像都还在
docker ps -a # 所有容器(运行/停止)都还在
docker volume ls # 所有数据卷都还在TIP
推荐定期清理(防止磁盘爆满),可加入定时任务(cron)定期执行。
bash
docker builder prune -f # -f 可以跳过交互式确认提示Docker 资源清理(慎用)
bash
docker container prune
# 作用:删除所有 已停止的容器, 不会删除正在运行的容器
docker image prune
# 作用:删除 悬空镜像(dangling images),不删除正在使用的镜像以下命令非常危险(慎用)
bash
docker system prune -a作用,清理以下资源:
- 已停止容器
- 未使用镜像
- 未使用网络
- 构建缓存
不会删除:
- 正在运行的容器
- 正在使用的镜像
- volume(默认不会删除)