Docker命令大全

2026-07-04 11:00:00
1173字
6.5分钟
下面介绍Docker常见的基础命令。

1. 镜像命令

  • 搜索镜像: 从镜像仓库搜索镜像。
docker search nginx
  • 拉取镜像:从镜像仓库拉取镜像
docker pull nginx:latest
  • 列出本地镜像:列出从镜像仓库下载的所有镜像
docker images
  • 列出本地镜像:列出从镜像仓库下载的所有镜像详细信息
docker images -a
  • 列出本地镜像ID:列出从镜像仓库下载的所有镜像ID
docker images -q
  • 显示镜像及占用空间:列出从镜像仓库下载的所有镜像的名称,版本,大小
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
  • 过滤特定镜像:显示特定镜像信息
docker images nginx
  • 显示镜像的‌DIGEST(内容哈希值)‌:精确验证镜像是否被篡改、去重、跨平台拉取时确认一致性
docker images --digests
  • 删除镜像:删除指定镜像,如果有容器使用这个镜像,需先删除依赖的容器
docker rmi nginx:latest
  • 强制删除镜像:强制删除,‌即使有容器在用也会删除,删除后容器异常退出
docker rmi -f nginx:latest
  • 删除所有镜像:Shell脚本组合(先查ID,再逐个删除),“蛮力删除”:把所有镜像ID一股脑塞给rmi命令,遇到正在使用的镜像,,中断整个删除过程,后面的镜像不再处理。
docker rmi $(docker images -q)
  • 删除所有未使用的镜像:Docker 原生清理命令(内置引用计数逻辑),“智能回收”:计算引用计数,只删除没有任何容器(包括停止的)引用的镜像,遇到正在使用的镜像,自动跳过该镜像,不报错,继续删除其他符合条件的镜像。
docker image prune -a --force
  • 判断镜像是否使用:判断镜像是否被容器占用
# 查看某个镜像是否有容器在用
docker ps -a --filter "ancestor=nginx:latest"
  • 查看未被使用的镜像: 查看未被使用的镜像名称
docker ps  -a --format "{{.Image}}" | sort -u
  • 标记镜像:给镜像标记tag
docker tag nginx:latest myrepo/nginx:v1
  • 构建镜像:根据当前目录的 Dockerfile 打包生成自己的镜像
docker build -t my-app .
  • 推送镜像到仓库
docker push myrepo/nginx:v1
  • 保存镜像为文件
docker save -o nginx.tar nginx:latest
  • 从文件加载镜像
docker load -i nginx.tar

2. 容器命令

  • 运行容器:-d:后台运行,--name:指定名称,-p:端口映射,格式 宿主机端口:容器端口
docker run -d --name nginx -p 80:80 nginx:latest
  • 挂载卷:-v /usr/local/nginx.conf:/etc/nginx/nginx.conf:ro 将宿主机/usr/local/nginx.conf文件映射挂载到容器/etc/nginx/nginx/conf,:ro 表示只读挂载,防止容器内意外修改配置。
docker run -d -p 80:80 -v /usr/local/nginx.conf:/etc/nginx/nginx.conf:ro nginx
最佳实践组合(推荐)
如果你需要持久化存储网页和配置,建议创建 Docker 卷来管理数据:
# 1. 创建两个卷(分别存网页和配置)
docker volume create nginx-html
docker volume create nginx-conf

# 2. 运行容器并挂载卷
docker run -d --name my-nginx -p 8080:80 \
  -v nginx-html:/usr/share/nginx/html \
  -v nginx-conf:/etc/nginx/conf.d \
  nginx

# 3. 后续只需将文件放入卷对应目录即可
  • 查看运行中容器
docker ps
  • 查看所有容器:包括未运行的容器
docker ps -a
  • 停止运行中的容器
docker stop nginx
  • 启动停止的容器
docker start nginx
  • 重启容器
docker restart nginx
  • 删除容器:可加-f强制删除运行中的
docker rm nginx
  • 进入容器内部:需容器支持bash
docker exec -it nginx /bin/bash
  • 查看容器日志:可加-f实时跟踪
docker logs nginx
  • 查看容器内进程
docker top nginx
  • 查看容器详细信息
docker inspect nginx

3. 资源限制

  • 限制容器内存
docker run -d --memory=256m nginx
  • 限制CPU份额

🧮 方法一:按权重分配(--cpu-shares), 参数:--cpu-shares(或 -c),默认值为 1024,这种方式不设定硬性上限,而是在多个容器竞争 CPU 时,按比例分配资源。它仅在 CPU 资源紧张时才生效。

docker run -d --cpu-shares 512 --name nginx nginx

🎯 方法二:限制核心数量(--cpus): 直接设置容器能使用的 CPU 核心数上限,这是最常用且直观的方式。参数:--cpus,支持小数,示例:--cpus=1.5 表示容器最多使用 1.5 个 CPU 核心。

docker run -d --cpus=1.5 --name nginx nginx

🎲 方法三:绑定特定核心(--cpuset-cpus): 将容器“绑定”到特定的物理 CPU 核心上运行,适用于需要CPU隔离或对NUMA架构优化的场景。参数:--cpuset-cpus,示例:--cpuset-cpus="0,1" 表示容器只能使用宿主机上的第0和第1个CPU核心。

docker run -d --cpuset-cpus="0,1" --name nginx nginx

⏱️ 方法四:精细时间配额(--cpu-period 与 --cpu-quota): 这是一种更底层的控制方式,通过设定CPU的调度周期和配额来精确限制。参数:--cpu-period(调度周期,默认100ms)和 --cpu-quota(周期内允许使用的CPU时间)。示例:--cpu-period=100000 --cpu-quota=50000 表示在每100ms的周期内,容器最多使用50ms的CPU时间,即限制使用率为50%。

docker run -d --cpu-period=100000 --cpu-quota=50000 --name nginx nginx
  • 修改正在运行的容器:
# 将容器 my-container 的 CPU 份额调整为 512
docker update --cpu-shares 512 my-container

# 将容器 my-container 的 CPU 核心数上限调整为 2
docker update --cpus 2 my-container
  • 查看Docker占用的磁盘空间:查看 Docker 占用了多少磁盘空间,以及哪些可以清理,包括镜像,容器,卷,构建缓存。
docker system df
  • 查看Docker占用的磁盘空间:‌详细模式‌,列出每个镜像/容器的具体信息。
docker system df -v
  • 资源清理:docker system df = ‌Docker 磁盘使用情况报告‌,重点看 ‌RECLAIMABLE 列‌,告诉你能清出多少空间。使用下面命令可以清理磁盘空间。
# 一键清理所有可回收资源
docker system prune

# 清理所有(包括未使用的镜像+卷)
docker system prune -a --volumes
2022-2026 小紫念沁 版权所有