Skip to content

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 \
rabbitmq

WARNING

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(默认不会删除)