Docker 容器化技术入门
什么是 Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。容器完全使用沙箱机制,相互之间不会有任何接口。
"Build, Ship, and Run Any App, Anywhere" — Docker 的核心理念
核心概念
1. 镜像(Image)
镜像是一个只读模板,用于创建 Docker 容器。可以理解为操作系统 + 应用程序 + 依赖的完整快照。
2. 容器(Container)
容器是镜像的运行实例,可以被启动、停止、删除。每个容器都是相互隔离的。
3. Dockerfile
Dockerfile 是一个文本文件,包含用于构建镜像的指令。以下是一个简单的示例:
# 使用 Node.js 官方镜像作为基础
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 复制 package.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动命令
CMD ["npm", "start"]
常用命令
| 命令 | 说明 |
|---|---|
docker pull <image> |
下载镜像 |
docker build -t <name> . |
构建镜像 |
docker run -d -p 8080:80 <image> |
运行容器 |
docker ps |
查看运行中的容器 |
docker exec -it <container> bash |
进入容器 |
实际应用场景
- 开发环境一致性:避免"在我机器上能运行"的问题
- 持续集成/持续部署(CI/CD):自动化构建和部署流程
- 微服务架构:每个服务独立容器化,便于扩展和管理
- 快速环境搭建:一键启动数据库、缓存等依赖服务
Docker Compose 示例
对于多容器应用,可以使用 Docker Compose 来管理:
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
总结
Docker 极大地简化了应用的打包、分发和部署流程。掌握 Docker 是现代开发者必备的技能之一。建议从简单的容器开始实践,逐步深入理解容器化技术。