2026-04-15 17:55
xiashengwang
阅读(9)
评论()
收藏
举报
1,Docker 主要用途和核心概念
主要用途
Docker是一个容器化平台,核心目标是一次构建,到处运行。它解决了开发与生产环境不一致的经典难题,让应用及其依赖环境打包成一个标准的单元,实现快速部署,弹性伸缩和隔离运行。
核心概念
- 镜像: 一个制度的模版,类似于“安装光盘“。它包含了运行某个应用所需的代码、运行时、系统工具、库和设置。你可以把它理解成面向容器的“类”。
- 容器: 镜像的运行实例,类似“安装好的系统”。它是一个轻量级、独立的可执行软件包,拥有自己的文件系统、网络和进程空间。你可以启动、停止、删除它。
- 仓库: 存放镜像的地方,类似“软件市场”。最常用的是 Docker Hub(公共仓库),你也可以搭建私有仓库。
- Dockerfile: 一个文本文件,包含了构建镜像的自动化指令,是 Docker 实现环境即代码的关键。
部署原则
一个容器只运行一个进程,多个容器协同工作
- 单一进程/单一职责: 每个容器只关注一件事。例如:
- Web 应用容器
- 数据库容器
- 缓存容器
- 消息队列容器
- 无状态化: 容器本身应该是“无状态”的。数据(如数据库文件、日志)必须通过 数据卷 挂载到宿主机或使用分布式存储,这样容器删除了,数据不会丢失,也方便升级和替换容器。
- 使用 Docker Compose 定义依赖: 对于大部分普通项目,通过 docker-compose.yml 将多个容器定义在一起,明确网络和依赖关系。
部署思路
- 拆分: 将项目拆解为应用代码、数据库、缓存、前端资源等逻辑单元。
- 基础镜像: 为每个单元选择合适的基础镜像(如 python:3.9-slim、node:18-alpine、nginx:alpine)。Alpine 版本体积很小,非常适合生产环境。
- 分层构建: 在 Dockerfile 中利用缓存,将变化频率低的指令(如 COPY requirements.txt + RUN pip install)放在前面,代码复制放在后面,这样能显著加快构建速度。
- 配置外部化: 不要将配置文件硬编码在镜像里。通过环境变量或挂载配置文件的方式注入(如 -e DB_HOST=xxx 或 docker config)。
- 编排运行: 对于大部分普通项目,使用 docker-compose up -d 就可以一键启动整套环境。如果项目规模更大、需要集群管理,再考虑学习 Kubernetes(k8s)