Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它将应用程序及其依赖项打包到一个标准化的单元中,称为容器,从而实现了一次构建,到处运行的能力。
核心概念
-
容器
- 轻量级、可执行的独立软件包,包含运行应用程序所需的代码、运行时、系统工具、库和配置。
- 与虚拟机的区别:
- 虚拟机模拟整个操作系统(包括内核),较重。
- 容器共享主机操作系统的内核,只打包应用和依赖,更轻量、启动更快。
-
镜像
- 容器的静态模板(只读文件),定义了容器的运行环境。
- 例如:一个镜像可以包含 Ubuntu 操作系统、Nginx 服务器和你的网站文件。
-
Dockerfile
- 文本文件,包含构建镜像的指令(如安装软件、复制文件等)。
-
仓库
- 存储和分享镜像的地方。公共仓库如 Docker Hub,也可搭建私有仓库。
为什么使用 Docker?
-
环境一致性
消除“在我机器上能运行”的问题,确保开发、测试、生产环境一致。 -
快速部署与扩展
秒级启动容器,适合微服务架构和动态扩缩容。 -
资源高效
容器共享主机内核,无需为每个应用分配完整操作系统资源,节省内存和CPU。 -
隔离性
每个容器独立运行,互不干扰,提高安全性。
基本工作流程
# 1. 编写 Dockerfile
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
# 2. 构建镜像
docker build -t my-web-app .
# 3. 运行容器
docker run -d -p 8080:80 my-web-app
# 4. 访问应用
curl http://localhost:8080
典型应用场景
- 微服务架构:每个服务打包为独立容器。
- 持续集成/部署:与 Jenkins、GitLab CI 等工具集成。
- 开发环境标准化:新成员一键搭建环境。
- 混合云部署:跨云平台一致运行。
常用命令
docker build # 构建镜像
docker run # 启动容器
docker ps # 查看运行中的容器
docker images # 查看镜像
docker pull/push # 拉取/推送镜像
docker-compose # 管理多容器应用(定义在 docker-compose.yml)
生态工具
- Docker Compose:编排多容器应用。
- Docker Swarm:原生集群管理(现较少用)。
- Kubernetes:主流容器编排平台,管理大规模容器。
简单比喻
- 镜像 ≈ 软件安装包(如
app.exe)。 - 容器 ≈ 安装后正在运行的软件进程。
- Docker ≈ 应用商店 + 轻量级虚拟机管理器。
总结:Docker 通过容器化技术解决了应用环境依赖和部署一致性的难题,成为现代云计算和微服务的基础设施之一。