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部署
环境一致性 依赖人工配置,易出错 镜像保证环境完全一致
部署速度 配置环境耗时 秒级启动
资源开销 占用大量系统资源 轻量级,共享内核
迁移性 依赖操作系统和依赖库 一次构建,随处运行
隔离性 较弱 进程级隔离
版本回滚 手动恢复 切换镜像即可
相关推荐
IT利刃出鞘1 天前
Docker Compose--解决修改配置后不生效的问题
运维·docker·容器
java_logo1 天前
Docker 部署 CloudBeaver:轻松搭建网页数据库管理平台
数据库·docker·容器·数据库管理·dbeaver·轩辕镜像·cloudbeaver
Lsetea1 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
好用斋1 天前
拾光坞安装网盘聚合LitePan:把Docker命令翻译成图形界面
运维·docker·容器
对象存储与RustFS1 天前
Velero 接 RustFS 实操:K8s 集群备份落到自建对象存储
后端·docker·云原生
70后写java的老码农1 天前
docker-compose 部署 Redis Stack Server 6.2.6-v19
redis·docker
.冰块.1 天前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange
方便面不加香菜2 天前
Docker Container -- 容器命令详解
运维·docker·容器
工业一体机老司机2 天前
Docker部署工控机采集服务 Compose编排与开机自启
运维·docker·容器
miaobinfei2 天前
docker拉取dify镜像,执行docker compose up -d 报错
运维·docker·容器