一、基本介绍
| 项目 | 说明 |
|---|---|
| 定义 | 将应用程序及其依赖环境打包到轻量级、可移植的容器中 |
| 优势 | 开销小、启动快、环境一致 |
| 本质 | 操作系统层虚拟化,共享宿主机内核 |
二、核心概念
| 概念 | 说明 |
|---|---|
| 镜像(Image) | 类、模板,包含程序+环境 |
| 容器(Container) | 实例,运行中的程序 |
| 仓库(Repository) | 存放镜像,支持拉取和推送(Docker Hub) |
| 数据卷(Volume) | 同步镜像数据与宿主机数据,持久化存储 |
| Dockerfile | 自动化构建自定义Docker镜像的脚本 |
三、镜像操作
| 命令 | 说明 |
|---|---|
docker images |
查看所有镜像 |
docker pull 镜像名:标签 |
下载镜像(标签默认latest) |
docker rmi 镜像名:标签 |
删除镜像(可用ID前四位) |
docker search 镜像名 |
在Docker Hub搜索镜像 |




docker search 结果说明
| 字段 | 说明 |
|---|---|
| OFFICIAL | 官方镜像 |
| STARS | 星数(受欢迎程度) |
四、容器操作
| 命令 | 说明 |
|---|---|
docker run --name 新容器名 镜像名:标签名 |
创建并运行容器 |


docker run 常用参数
| 参数 | 说明 | 示例 |
|---|---|---|
-d |
后台运行 | docker run -d nginx |
-p |
端口映射(宿主机:容器) | -p 8080:80 |
-e |
设置环境变量 | -e MYSQL_ROOT_PASSWORD=123456 |
-v |
挂载数据卷 | -v 数据卷名:容器目录 |
| 命令 | 说明 |
|---|---|
docker exec -it 容器名 bash |
进入正在运行的容器 |
docker ps |
查看运行中的容器 |
docker ps -a |
查看所有容器(含停止的) |
docker rm 容器名/id |
删除容器 |
docker start 容器id |
启动容器 |
docker stop 容器id |
停止容器 |
docker restart 容器id |
重启容器 |




五、数据卷操作
| 命令 | 说明 |
|---|---|
docker volume ls |
显示所有数据卷 |
docker volume create 名字 |
创建数据卷 |
docker volume rm 名字 |
删除数据卷 |


六、仓库操作
| 命令 | 说明 |
|---|---|
docker build -t 镜像名:标签名 . |
构建镜像(路径为当前目录) |
docker tag 镜像名:标签名 用户/镜像名:标签名 |
给镜像打标签 |
docker login -u 用户名 |
登录Docker Hub |
docker push 用户/镜像名:标签名 |
推送镜像到仓库 |
七、Dockerfile
| 概念 | 说明 |
|---|---|
| 定义 | 自动化构建自定义Docker镜像的配置文件 |
| 作用 | 通过指令描述镜像构建过程 |
Dockerfile 配置核心表
| 分类 | 指令/内容 | 说明 |
|---|---|---|
| 基础 | FROM 镜像:标签 |
必选,指定基础镜像 |
| 环境 | WORKDIR /路径 |
设置容器工作目录 |
| 复制 | COPY 本地 容器内 |
复制文件/目录进镜像 |
| 执行 | RUN 命令 |
构建时执行的命令(如安装依赖) |
| 端口 | EXPOSE 端口号 |
声明容器监听的端口 |
| 变量 | ENV 键=值 |
设置环境变量 |
| 启动 | CMD ["命令","参数"] |
容器启动时执行(可被覆盖) |
| 固定启动 | ENTRYPOINT ["命令"] |
容器启动时执行(不可被覆盖) |
| 忽略 | .dockerignore 文件 |
排除无关文件,加速构建 |
| 构建 | docker build -t 名称:标签 . |
构建镜像命令 |
极简示例
text
FROM nginx:alpine
COPY ./html /usr/share/nginx/html
EXPOSE 80
构建:
docker build -t mynginx:v1 .运行:
docker run -d -p 8080:80 mynginx:v1
项目部署必要文件清单
| 文件 | 用途 | 是否必须 | 说明 |
|---|---|---|---|
| .dockerignore | 排除不需要打包进镜像的文件 | ✅ 强烈建议 | 类似 .gitignore,避免把 node_modules、.env、.git 等无用文件复制进镜像,加速构建 、减小体积 |
| docker-compose.yml | 编排多容器服务(如 Web + Redis + MySQL) | ❌ 按需 | 当项目依赖数据库、缓存等多个服务时使用,实现一键启动 |
| .env | 存储环境变量(密钥、端口、数据库连接等) | ❌ 按需 | 配合 docker-compose.yml 使用,分离配置与代码,不提交到 Git |
| requirements.txt / package.json / pom.xml 等 | 项目依赖清单 | ✅ 必须 | Dockerfile 中的 RUN 命令依赖这些文件安装依赖(如 npm install、pip install) |
| 应用源码 | 项目代码文件 | ✅ 必须 | 最终要复制进镜像运行的程序代码 |
补充说明
| 场景 | 推荐文件组合 |
|---|---|
| 单容器简单应用 | Dockerfile + .dockerignore + 依赖文件 + 源码 |
| 多容器复杂项目 | 上述全部 + docker-compose.yml + .env |
| 生产环境部署 | 还需包含 CI/CD 配置(如 .github/workflows)或 K8s 编排文件 |
八、其他操作
| 命令 | 说明 |
|---|---|
docker cp 本地路径 容器:目录 |
从本地拷贝文件到容器 |
docker cp 容器:目录 本地路径 |
从容器拷贝文件到本地 |
九、Docker Compose
| 操作 | 命令 | 说明 |
|---|---|---|
| 启动所有服务 | docker compose up -d |
后台启动配置中的所有服务 |
| 停止服务 | docker compose down |
停止并移除服务 |
| 配置文件 | docker-compose.yml |
默认配置文件名称 |
十、常用命令速查
| 分类 | 命令 | 说明 |
|---|---|---|
| 镜像 | docker images |
查看镜像列表 |
| 镜像 | docker pull nginx:latest |
下载nginx镜像 |
| 镜像 | docker rmi 镜像ID |
删除镜像 |
| 容器 | docker run -d -p 8080:80 nginx |
后台运行nginx并映射端口 |
| 容器 | docker ps -a |
查看所有容器 |
| 容器 | docker stop 容器ID |
停止容器 |
| 容器 | docker rm 容器ID |
删除容器 |
| 容器 | docker exec -it 容器ID bash |
进入容器内部 |
| 数据卷 | docker volume create mydata |
创建数据卷 |
| 仓库 | docker push zzy0371/myapp:v1 |
推送镜像到仓库 |
| Compose | docker compose up -d |
启动所有服务 |
十一、Docker vs 传统部署
| 对比项 | 传统部署 | Docker部署 |
|---|---|---|
| 环境一致性 | 依赖人工配置,易出错 | 镜像保证环境完全一致 |
| 部署速度 | 配置环境耗时 | 秒级启动 |
| 资源开销 | 占用大量系统资源 | 轻量级,共享内核 |
| 迁移性 | 依赖操作系统和依赖库 | 一次构建,随处运行 |
| 隔离性 | 较弱 | 进程级隔离 |
| 版本回滚 | 手动恢复 | 切换镜像即可 |