Docker 项目部署
·
一、基本介绍
| 项目 | 说明 |
|---|---|
| 定义 | 将应用程序及其依赖环境打包到轻量级、可移植的容器中 |
| 优势 | 开销小、启动快、环境一致 |
| 本质 | 操作系统层虚拟化,共享宿主机内核 |
二、核心概念
| 概念 | 说明 |
|---|---|
| 镜像(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部署 |
|---|---|---|
| 环境一致性 | 依赖人工配置,易出错 | 镜像保证环境完全一致 |
| 部署速度 | 配置环境耗时 | 秒级启动 |
| 资源开销 | 占用大量系统资源 | 轻量级,共享内核 |
| 迁移性 | 依赖操作系统和依赖库 | 一次构建,随处运行 |
| 隔离性 | 较弱 | 进程级隔离 |
| 版本回滚 | 手动恢复 | 切换镜像即可 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)