Docker 常见命令总结
·
Docker 命令是管理容器、镜像、网络和数据卷的核心工具,以下按 镜像管理、容器管理、网络管理、数据卷管理 和 系统信息 五大核心场景分类,整理最常用的命令及说明,兼顾基础操作与实用场景。
一、镜像管理(Image)
镜像是容器的 “模板”,包含运行应用所需的代码、依赖和环境配置。常用命令围绕镜像的拉取、查看、构建、删除展开。
| 命令 | 功能说明 | 示例 |
|---|---|---|
docker pull [镜像名]:[标签] |
从 Docker Hub 拉取镜像(标签默认 latest) | docker pull ubuntu:22.04(拉取 Ubuntu 22.04 镜像) |
docker images |
查看本地所有镜像(含名称、标签、ID、大小) | docker images(列出所有本地镜像) |
docker rmi [镜像ID/镜像名] |
删除本地镜像(需先删除依赖该镜像的容器) | docker rmi ubuntu:22.04(删除指定标签的 Ubuntu 镜像) |
docker build -t [镜像名]:[标签] [Dockerfile路径] |
基于 Dockerfile 构建自定义镜像 | docker build -t my-app:v1 .(当前目录 Dockerfile 构建镜像) |
docker tag [原镜像名]:[原标签] [新镜像名]:[新标签] |
为镜像添加新标签(常用于版本管理或推送到私有仓库) | docker tag my-app:v1 registry.example.com/my-app:v1 |
docker push [镜像名]:[标签] |
将本地镜像推送到远程仓库(如 Docker Hub、私有仓库) | docker push my-app:v1(推送到 Docker Hub 个人仓库) |
docker search [关键词] |
在 Docker Hub 搜索镜像 | docker search nginx(搜索 Nginx 相关镜像) |
二、容器管理(Container)
容器是镜像的 “运行实例”,常用命令覆盖容器的创建、启动、停止、进入、删除等全生命周期操作。
1. 容器基础操作(创建 / 启动 / 停止)
| 命令 | 功能说明 | 示例 |
|---|---|---|
|
|
基于镜像创建并启动容器(核心命令,选项常用) | 见下方 “常用选项示例” |
docker start [容器ID/容器名] |
启动已停止的容器 | docker start my-nginx(启动名为 my-nginx 的容器) |
|
|
优雅停止容器(发送 SIGTERM 信号,默认等待 10s) | docker stop my-nginx |
|
|
强制停止容器(发送 SIGKILL 信号,立即终止) | docker kill my-nginx |
|
|
删除已停止的容器(加 -f 可强制删除运行中容器) |
docker rm my-nginx(删除停止的容器) |
docker run 常用选项说明:
-d:后台运行容器(“守护模式”,不占用当前终端)-p [主机端口]:[容器端口]:端口映射(将主机端口转发到容器端口)-v [主机路径]:[容器路径]:挂载数据卷 / 目录(实现主机与容器文件共享)-name [容器名]:指定容器名称(便于后续管理,默认自动生成)-e [环境变量名]=[值]:设置容器内环境变量-it:交互式运行(-i保持输入流打开,-t分配伪终端,常用于进入容器)
示例:
# 后台运行 Nginx,映射主机 8080 端口到容器 80 端口,命名为 my-nginx
docker run -d -p 8080:80 --name my-nginx nginx:latest
# 交互式进入 Ubuntu 容器(退出后容器停止)
docker run -it --name my-ubuntu ubuntu:22.04 /bin/bash
2. 容器状态与信息查看
| 命令 | 功能说明 | 示例 |
|---|---|---|
docker ps |
查看 运行中 的容器(默认只显示运行中) | docker ps |
docker ps -a |
查看 所有 容器(含运行中、已停止) | docker ps -a |
docker inspect [容器ID/容器名] |
查看容器详细信息(IP、挂载、网络、配置等) | docker inspect my-nginx(查看 Nginx 容器完整配置) |
docker logs [容器ID/容器名] |
查看容器日志(加 -f 可实时跟踪日志,类似 tail -f) |
docker logs -f my-nginx(实时查看 Nginx 访问日志) |
docker top [容器ID/容器名] |
查看容器内运行的进程(类似主机的 top 命令) |
docker top my-nginx(查看 Nginx 容器内进程) |
3. 容器交互与文件操作
| 命令 | 功能说明 | 示例 |
|---|---|---|
docker exec [选项] [容器ID/容器名] [命令] |
在运行中的容器内执行命令(常用 -it 进入交互式终端) |
docker exec -it my-nginx /bin/bash(进入 Nginx 容器终端) |
docker cp [主机路径] [容器ID/容器名]:[容器路径] |
从主机复制文件到容器 | docker cp ./index.html my-nginx:/usr/share/nginx/html/(替换 Nginx 首页) |
docker cp [容器ID/容器名]:[容器路径] [主机路径] |
从容器复制文件到主机 | docker cp my-nginx:/var/log/nginx/access.log ./(复制 Nginx 日志到本地) |
三、网络管理(Network)
Docker 网络用于容器间通信或容器与外部网络交互,默认提供 bridge(桥接)、host(主机模式)、none(无网络)三种网络模式,也支持自定义网络。
| 命令 | 功能说明 | 示例 |
|---|---|---|
docker network ls |
查看本地所有 Docker 网络 | docker network ls |
docker network create [网络名] |
创建自定义网络(默认 bridge 模式,推荐用于容器间通信) | docker network create my-network(创建名为 my-network 的网络) |
docker network connect [网络名] [容器名] |
将容器连接到指定网络(容器可加入多个网络) |
docker network connect my-network my-nginx(将 Nginx 加入自定义网络) |
docker network disconnect [网络名] [容器名] |
将容器从指定网络断开 | docker network disconnect my-network my-nginx |
docker network rm [网络名] |
删除自定义网络(需先断开所有关联容器) | docker network rm my-network |
场景示例:
创建两个容器并加入同一自定义网络,实现容器间通过 “容器名” 通信(无需依赖 IP):
# 1. 创建自定义网络
docker network create app-network
# 2. 启动 Web 容器并加入网络
docker run -d --name web --network app-network nginx
# 3. 启动测试容器并加入网络,在测试容器内 ping Web 容器(用容器名即可)
docker run -it --network app-network ubuntu:22.04 ping web
四、数据卷管理(Volume)
数据卷是 Docker 中用于持久化存储数据的组件,独立于容器生命周期(容器删除后,数据卷数据不丢失),常用于数据库、配置文件等需要持久化的场景。
| 命令 | 功能说明 | 示例 |
|---|---|---|
docker volume ls |
查看所有数据卷 | docker volume ls |
docker volume create [卷名] |
创建自定义数据卷(默认存储在 /var/lib/docker/volumes/ 下) |
docker volume create mysql-data(创建用于 MySQL 的数据卷) |
docker volume inspect [卷名] |
查看数据卷详细信息(存储路径、挂载容器等) | docker volume inspect mysql-data |
docker volume rm [卷名] |
删除指定数据卷(需先断开所有挂载的容器) | docker volume rm mysql-data |
docker volume prune |
删除所有 未使用 的数据卷(清理无用资源) | docker volume prune(执行前会提示确认) |
场景示例:
用数据卷持久化 MySQL 数据(容器删除后,数据库数据仍保存在数据卷中):
# 1. 创建数据卷
docker volume create mysql-data
# 2. 启动 MySQL 容器,挂载数据卷到容器的 /var/lib/mysql(MySQL 数据存储目录)
docker run -d -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name my-mysql mysql:8.0
五、系统信息与资源清理
| 命令 | 功能说明 | 示例 |
|---|---|---|
docker info |
查看 Docker 系统信息(版本、镜像数、容器数、存储驱动等) | docker info |
docker version |
查看 Docker 客户端和服务端版本 | docker version |
docker system df |
查看 Docker 磁盘使用情况(镜像、容器、数据卷占用空间) | docker system df |
docker system prune |
清理所有未使用的资源(停止的容器、未使用的镜像、网络、数据卷) | docker system prune -a(-a 表示同时删除未被任何容器引用的镜像) |
六、常用命令速查表格
| 场景 | 核心命令 |
|---|---|
| 镜像拉取 | docker pull [镜像]:[标签] |
| 容器启动(后台 + 端口映射) | docker run -d -p 主机端口:容器端口 --name 容器名 镜像 |
| 查看运行中容器 | docker ps |
| 进入运行中容器 | docker exec -it 容器名 /bin/bash |
| 查看容器日志 | docker logs -f 容器名 |
| 停止 / 删除容器 | docker stop 容器名 / docker rm 容器名 |
| 清理无用资源 | docker system prune -a |
更多推荐


所有评论(0)