一、Docker核心原理:像租房装修一样理解容器
1.1 容器 vs 虚拟机:合租 vs 买别墅
- 虚拟机就像买别墅:每个别墅(虚拟机)自带独立地基(操作系统)、水电系统(系统资源),启动慢(分钟级)、资源占用大(GB级)[1][10]
- 容器就像合租:大家共享小区基础设施(宿主机内核),但每个房间(容器)有自己的家具摆放(应用和依赖)。轻量(MB级)、秒级启动,还能随时搬走(迁移)[9]
1.2 镜像分层:乐高积木式打包
镜像就像装修设计图,由多层叠加而成:
- 基础层:相当于毛坯房(如Ubuntu系统镜像)
- 中间层:安装的软件(如Nginx、MySQL)
- 可写层:入住后的个性化布置(如配置文件)
每次修改只改动最上层,底层保持不变,节省存储空间且方便复用[3][6]
1.3 容器运行机制:隔离与资源管控
- 命名空间:给每个容器发独立身份证(隔离进程、网络、文件系统)
- 控制组(cgroups):物业管家(限制CPU/内存使用,防止邻居抢资源)
- 联合文件系统:用透明玻璃隔断房间,看似独立实则共享基础层[1][10]
二、常用命令大全:开发者的瑞士军刀
2.1 镜像操作(装修材料管理)
docker pull nginx:1.21 # 去建材市场买材料(拉取镜像)
docker images # 查看仓库库存(本地镜像列表)
docker rmi old-image # 扔掉过期材料(删除镜像)[[4]()][[7]()]
2.2 容器管理(房间使用指南)
docker run -d -p 80:80 --name my_web nginx # 按图纸装修入住(启动容器)
docker ps -a # 查看所有房间状态(容器列表)
docker exec -it my_web bash # 进屋调试(进入运行中容器)[[5]()][[7]()]
2.3 数据持久化(重要物品寄存)
docker run -v /宿主机路径:/容器路径 mysql # 租个保险柜(挂载数据卷)
docker volume ls # 查看所有寄存柜(数据卷列表)[[9]()]
三、开发实战:从零搭建容器化项目
3.1 Dockerfile:装修说明书
FROM node:16 # 基础户型(基础镜像)
WORKDIR /app # 指定工作区域
COPY package*.json ./ # 搬家具(拷贝依赖文件)
RUN npm install # 安装家电(构建命令)
EXPOSE 3000 # 开放阳台(暴露端口)
CMD ["npm", "start"] # 入住后的日常流程(启动命令)[[9]()]
3.2 Docker Compose:小区规划图
version: '3'
services:
web:
build: .
ports: ["5000:5000"]
redis:
image: "redis:alpine" # 一键部署整套服务(多容器编排)[[7]()]
3.3 开发调试技巧
四、进阶场景:容器化开发的正确姿势
4.1 CI/CD流水线
4.2 微服务架构
- 每个服务独立容器(如用户服务、订单服务)
- 通过Docker网络互联(相当于小区内部电话)
- 用Kubernetes管理大规模容器集群(物业总公司)[8]
4.3 常见坑点排查
五、为什么选择Docker?
附送命令行小抄:
查看容器资源占用:docker stats
导出容器快照:docker export > backup.tar
批量停止容器:docker stop $(docker ps -aq)
[4][5]
通过这个指南,你已经掌握了Docker从原理到实战的核心知识。就像租房装修一样,多实践几次就能成为容器化老司机!遇到问题记得善用docker --help
和社区文档,祝你在云原生世界里玩得愉快~