我第一次听到 Docker,觉得它在故意难为我
"镜像""容器""编排""卷挂载"——每个词都像是在说:你不配。
但现在我的博客就是从 Docker 上跑的。不吹不黑,Docker 是我学的最值的技能。
我的30天学习路径
第1-7天:理解基本概念
我花了一周只看,不动手。看了10个视频、读了3篇博客,终于搞明白了两个概念:
- 镜像(Image):一份"食谱",描述你的应用需要什么环境
- 容器(Container):照着食谱做出来的"菜",跑在服务器上的实例
第8-14天:第一个 Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
15行代码,把我之前调试了两天的环境问题一次性解决。
第15-21天:docker-compose
多个容器一起跑的时候,docker-compose 是救命稻草:
version: '3'
services:
app:
build: .
ports: ["3000:3000"]
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
nginx:
image: nginx:alpine
ports: ["80:80"]
一条命令 docker-compose up -d,三个服务全部起来。
第22-30天:生产环境
学习卷挂载保证数据不丢、学习环境变量管理敏感信息、学习健康检查自动重启故障容器。
为什么说 Docker 适合独立开发者
| 场景 | 裸服务器 | Docker |
|---|---|---|
| 环境配置 | 手动装Node、Nginx、PostgreSQL | 一行 docker-compose.yml |
| 换服务器 | 重新配三天 | 复制文件,重新 up |
| 出故障 | 一个个排查 | 重启容器或重建 |
| 多项目 | 端口冲突、冲突、冲突 | 隔离运行,互不影响 |
写在最后
以前我对 Docker 的恐惧,来自于看不懂那些术语。但当我自己写了第一个 Dockerfile、第一个 docker-compose.yml,发现它其实很简单——就是把"安装手册"变成了代码。
对于独立开发者来说,Docker 就是你的运维团队——一个人维护50个平台,靠的不只是代码,更是把运维自动化。
如果让我重新开始,我会第一天就学 Docker。省下来的时间,够多写好几个平台。