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部署
环境一致性 依赖人工配置,易出错 镜像保证环境完全一致
部署速度 配置环境耗时 秒级启动
资源开销 占用大量系统资源 轻量级,共享内核
迁移性 依赖操作系统和依赖库 一次构建,随处运行
隔离性 较弱 进程级隔离
版本回滚 手动恢复 切换镜像即可
相关推荐
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS4 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心4 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing4 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)4 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang4 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特4 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe4 天前
docker常见命令
docker
正经教主4 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿4 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器