Docker 常用命令大全
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 工作流通常是:
docker pull拉取镜像docker run启动容器docker ps查看状态docker logs排查日志docker exec进入容器调试docker stop/docker rm清理容器docker volume持久化关键数据
10. 命令速查表
| 分类 | 常用命令 |
|---|---|
| 基础 | docker version、docker info、docker system df、docker system prune |
| 镜像 | docker pull、docker images、docker search、docker build、docker rmi、docker tag、docker save、docker load |
| 容器 | docker run、docker ps、docker stop、docker start、docker restart、docker rm、docker exec、docker logs、docker inspect、docker stats、docker cp |
| 数据卷 | docker volume create、docker volume ls、docker volume inspect、docker volume rm、docker volume prune |
11. 使用建议
- 学习 Docker 时,建议先掌握
docker run、docker ps、docker logs、docker exec。 - 做有状态服务时,尽量使用数据卷保存数据,避免容器删除后数据丢失。
- 生产环境中慎用
-f、--rm、prune等命令,防止误删资源。








