Docker 项目部署

一、基本介绍

项目 说明
定义 将应用程序及其依赖环境打包到轻量级、可移植的容器中
优势 开销小、启动快、环境一致
本质 操作系统层虚拟化,共享宿主机内核

二、核心概念

概念 说明
镜像(Image) 类、模板,包含程序+环境
容器(Container) 实例,运行中的程序
仓库(Repository) 存放镜像,支持拉取和推送(Docker Hub)
数据卷(Volume) 同步镜像数据与宿主机数据,持久化存储
Dockerfile 自动化构建自定义Docker镜像的脚本

三、镜像操作

命令 说明
docker images 查看所有镜像
docker pull 镜像名:标签 下载镜像(标签默认latest)
docker rmi 镜像名:标签 删除镜像(可用ID前四位)
docker search 镜像名 在Docker Hub搜索镜像
字段 说明
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部署
环境一致性 依赖人工配置,易出错 镜像保证环境完全一致
部署速度 配置环境耗时 秒级启动
资源开销 占用大量系统资源 轻量级,共享内核
迁移性 依赖操作系统和依赖库 一次构建,随处运行
隔离性 较弱 进程级隔离
版本回滚 手动恢复 切换镜像即可
相关推荐
AscendKing3 小时前
Docker Compose 一键部署 SkyWalking 10.2.0 + Elasticsearch8.11,分布式链路追踪完整实战
elasticsearch·docker·skywalking·链路追踪·微服务监控
励志师code3 小时前
Kubernetes 集群节点生命周期管理实战:从扩容、调度管控到证书续期
运维·docker·容器·kubernetes·gpu算力·kubelet
闲云自留地4 小时前
Kubernetes 安装保姆级:关 swap、装 containerd、init 集群、calico 一篇通
容器·贪心算法·kubernetes
木雷坞4 小时前
Docker Compose部署Metabase:应用库隔离与日期筛选看板
运维·docker·容器
怒放的生命19914 小时前
前端项目 Docker 打包实操指南
前端·docker·容器
tedcloud1234 小时前
Docker Compose 部署 Immich:手机照片自动备份与常见故障排查
运维·前端·docker·容器·智能手机·开源·流程图
古城小栈4 小时前
Docker Compose 云原生的底座
docker·云原生·容器
卜锦元5 小时前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
easy_coder6 小时前
Kubernetes 三大探针:Startup、Liveness 与 Readiness
云原生·容器·kubernetes
xrlfreedom6 小时前
MCP 面试高频考点:把知识库 RAG 检索封装为 Tool,Docker 与结构化输出怎么配合不踩坑
docker·结构化输出·mcp