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 installpip 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部署
环境一致性 依赖人工配置,易出错 镜像保证环境完全一致
部署速度 配置环境耗时 秒级启动
资源开销 占用大量系统资源 轻量级,共享内核
迁移性 依赖操作系统和依赖库 一次构建,随处运行
隔离性 较弱 进程级隔离
版本回滚 手动恢复 切换镜像即可
相关推荐
狼与自由1 小时前
docker 安装milvus
docker·milvus
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 制作 Docker 镜像 阅读笔记 43
spring boot·笔记·docker
MrSYJ1 小时前
Network Namespace 到底是个啥,别人再问你告诉他
docker·云原生·kubernetes
程序员老赵1 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·后端·docker
彬冷的心4 小时前
K8s 部署若依项目 + Harbor 私有仓库(双节点版)
云原生·容器·kubernetes
想要成为老金高手4 小时前
Kubernetes Service 深度实践:从 ClusterIP 到 Ingress 七层代理
云原生·容器·kubernetes
码力斜杠哥4 小时前
Docker Compose快速入门笔记
笔记·docker·eureka
IT大白鼠5 小时前
Kubernetes 持久化存储:PV、PVC、StorageClass 存储体系
云原生·容器·kubernetes
青禾8375 小时前
Docker 从入门到实践:镜像、容器、数据卷与 Docker Compose
运维·docker·容器