Docker 常用命令大全

本文整理 Docker 的常用命令,按「基础、镜像、容器、数据卷」分类,并配有示例,适合日常查阅与快速上手。


1. 基础概念

Docker 是一套容器化平台,核心对象包括:

  • 镜像(Image):应用运行所需的只读模板,类似“安装包”或“快照”。
  • 容器(Container):镜像运行后的实例,具备可写层,可启动、停止、删除。
  • 数据卷(Volume):用于持久化数据、实现宿主机与容器之间的数据共享。
  • 仓库(Registry):保存和分发镜像的地方,例如 Docker Hub。

2. Docker 基础命令

2.1 查看版本与信息

docker version

查看 Docker 客户端和服务端版本。

docker info

查看 Docker 的系统级信息,例如容器数量、镜像数量、存储驱动等。

示例:

docker version
docker info

2.2 查看帮助

docker --help
docker <command> --help

示例:

docker container --help

2.3 查看 Docker 资源占用

docker system df

查看镜像、容器、数据卷、构建缓存占用空间。

docker system df -v

显示更详细的资源占用信息。

2.4 清理无用资源

docker system prune

删除停止的容器、未使用的网络、悬空镜像、构建缓存。

docker system prune -a

更彻底地清理未被任何容器使用的镜像。

注意: -a 可能删除你后续还想用的镜像,执行前请确认。

示例:

docker system prune -a

3. 镜像常用命令

3.1 拉取镜像

docker pull <image>:<tag>

从镜像仓库拉取镜像。

示例:

docker pull nginx:latest
docker pull mysql:8.0

3.2 查看本地镜像

docker images

列出本地所有镜像。

常用参数:

docker images -a

显示所有镜像,包括中间层镜像。

docker images --digests

显示镜像摘要信息。

3.3 搜索镜像

docker search <image-name>

在 Docker Hub 中搜索镜像。

示例:

docker search redis

3.4 查看镜像详情

docker inspect <image>

查看镜像的详细元数据。

示例:

docker inspect nginx:latest

3.5 删除镜像

docker rmi <image>

删除本地镜像。

示例:

docker rmi nginx:latest

如果镜像被容器占用,可先删除相关容器,或强制删除:

docker rmi -f <image>

3.6 给镜像打标签

docker tag <source-image> <target-image>

为镜像创建新的标签,常用于重新命名或准备推送。

示例:

docker tag nginx:latest mynginx:v1

3.7 构建镜像

docker build -t <image-name>:<tag> <context-path>

根据 Dockerfile 构建镜像。

示例:

docker build -t myapp:1.0 .

如果想指定 Dockerfile 文件:

docker build -f Dockerfile.prod -t myapp:prod .

3.8 导出与导入镜像

docker save -o <file>.tar <image>

将镜像保存为 tar 包。

docker load -i <file>.tar

从 tar 包导入镜像。

示例:

docker save -o nginx.tar nginx:latest
docker load -i nginx.tar

3.9 镜像仓库登录与推送

docker login

登录镜像仓库。

docker push <image>

推送镜像到仓库。

示例:

docker tag myapp:1.0 yourname/myapp:1.0
docker push yourname/myapp:1.0

4. 容器常用命令

4.1 运行容器

docker run [OPTIONS] <image> [COMMAND] [ARG...]

根据镜像创建并启动容器。

常见参数:

  • -d:后台运行
  • -it:交互式运行
  • --name:指定容器名称
  • -p:端口映射
  • -v:挂载数据卷或目录
  • --rm:容器退出后自动删除

示例:

docker run -d --name mynginx -p 8080:80 nginx:latest

将宿主机 8080 端口映射到容器 80 端口。

docker run -it --name myubuntu ubuntu:22.04 /bin/bash

以交互模式启动 Ubuntu 容器。

docker run --rm alpine echo "hello docker"

运行一次性命令,退出后自动删除容器。

4.2 查看正在运行的容器

docker ps

查看当前运行中的容器。

docker ps -a

查看所有容器,包括已停止的。

4.3 停止、启动、重启容器

docker stop <container>

停止容器。

docker start <container>

启动已停止的容器。

docker restart <container>

重启容器。

示例:

docker stop mynginx
docker start mynginx
docker restart mynginx

4.4 删除容器

docker rm <container>

删除已停止的容器。

docker rm -f <container>

强制删除运行中的容器。

示例:

docker rm myubuntu

4.5 进入容器

docker exec -it <container> /bin/bash

进入正在运行的容器内部。

如果容器中没有 bash,可使用 sh

docker exec -it <container> /bin/sh

示例:

docker exec -it mynginx /bin/bash

4.6 查看容器日志

docker logs <container>

查看容器标准输出与标准错误日志。

常用参数:

docker logs -f <container>

实时跟踪日志。

docker logs --tail 100 <container>

查看最近 100 行日志。

示例:

docker logs -f mynginx

4.7 查看容器详情

docker inspect <container>

查看容器详细信息。

示例:

docker inspect mynginx

4.8 查看容器资源占用

docker stats

实时查看容器 CPU、内存、网络、IO 占用。

docker stats <container>

只看指定容器。

4.9 拷贝文件

docker cp <container>:<src> <dest>

将容器内文件复制到宿主机。

docker cp <src> <container>:<dest>

将宿主机文件复制到容器内。

示例:

docker cp mynginx:/etc/nginx/nginx.conf ./nginx.conf
docker cp ./index.html mynginx:/usr/share/nginx/html/index.html

4.10 更新容器配置

docker update <container>

更新容器资源限制等配置,例如 CPU、内存限制。

示例:

docker update --memory 512m --cpus 1.5 mynginx

5. 数据卷常用命令

5.1 创建数据卷

docker volume create <volume-name>

创建一个命名数据卷。

示例:

docker volume create mydata

5.2 查看数据卷

docker volume ls

列出所有数据卷。

docker volume inspect <volume-name>

查看指定数据卷详情。

示例:

docker volume inspect mydata

5.3 删除数据卷

docker volume rm <volume-name>

删除指定数据卷。

注意: 数据卷被容器使用时不能直接删除。

5.4 清理无用数据卷

docker volume prune

删除未被使用的数据卷。

示例:

docker volume prune

5.5 在容器中使用数据卷

方式一:命名数据卷

docker run -d --name mysql01 -v mydata:/var/lib/mysql mysql:8.0

将命名卷 mydata 挂载到容器内的 MySQL 数据目录。

方式二:绑定挂载宿主机目录

docker run -d --name nginx01 -v /path/on/host:/usr/share/nginx/html nginx:latest

将宿主机目录挂载到容器目录。

Windows 示例:

docker run -d --name nginx01 -v E:\website:/usr/share/nginx/html nginx:latest

5.6 只读挂载

docker run -d --name nginx01 -v E:\website:/usr/share/nginx/html:ro nginx:latest

ro 表示只读挂载,容器内不能修改宿主机文件。


6. 常用组合示例

6.1 运行 Nginx 并映射端口与目录

docker run -d \
  --name web \
  -p 8080:80 \
  -v E:\website:/usr/share/nginx/html \
  nginx:latest

说明:

  • 宿主机 8080 访问容器 80
  • 宿主机 E:\website 挂载到 Nginx 静态资源目录

6.2 运行 MySQL 并持久化数据

docker run -d \
  --name mysql01 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v mysql_data:/var/lib/mysql \
  mysql:8.0

说明:

  • -e 传递环境变量
  • MYSQL_ROOT_PASSWORD 设置 root 密码
  • 数据持久化到数据卷 mysql_data

6.3 查看并进入容器

docker ps
docker exec -it web /bin/sh
docker logs -f web

7. 常见参数速查

7.1 docker run 常用参数

参数 说明 示例
-d 后台运行 docker run -d nginx
-it 交互式终端 docker run -it ubuntu /bin/bash
--name 指定容器名 --name mynginx
-p 端口映射 -p 8080:80
-v 挂载数据卷/目录 -v mydata:/data
--rm 退出后删除容器 docker run --rm alpine
-e 设置环境变量 -e MYSQL_ROOT_PASSWORD=123456
--network 指定网络 --network mynet
--restart 重启策略 --restart always

7.2 常见生命周期命令

命令 说明
docker run 创建并启动容器
docker start 启动容器
docker stop 停止容器
docker restart 重启容器
docker rm 删除容器
docker exec 进入容器执行命令

8. 常见排查命令

8.1 查看容器状态

docker ps -a

8.2 查看日志

docker logs <container>

8.3 查看详细配置

docker inspect <container>

8.4 查看资源占用

docker stats

8.5 检查端口是否映射成功

docker port <container>

示例:

docker port web

9. 实战小结

一个最常见的 Docker 工作流通常是:

  1. docker pull 拉取镜像
  2. docker run 启动容器
  3. docker ps 查看状态
  4. docker logs 排查日志
  5. docker exec 进入容器调试
  6. docker stop / docker rm 清理容器
  7. docker volume 持久化关键数据

10. 命令速查表

分类 常用命令
基础 docker versiondocker infodocker system dfdocker system prune
镜像 docker pulldocker imagesdocker searchdocker builddocker rmidocker tagdocker savedocker load
容器 docker rundocker psdocker stopdocker startdocker restartdocker rmdocker execdocker logsdocker inspectdocker statsdocker cp
数据卷 docker volume createdocker volume lsdocker volume inspectdocker volume rmdocker volume prune

11. 使用建议

  • 学习 Docker 时,建议先掌握 docker rundocker psdocker logsdocker exec
  • 做有状态服务时,尽量使用数据卷保存数据,避免容器删除后数据丢失。
  • 生产环境中慎用 -f--rmprune 等命令,防止误删资源。