Docker入门实战:用容器部署你的第一个Web应用
Docker入门实战:用容器部署你的第一个Web应用
yutoDocker 解决了什么问题
“在我电脑上能跑啊” —— 这句话是所有开发者的噩梦。Docker 的出现就是为了解决环境不一致的问题。
简单理解:Docker 把你的应用和它需要的所有依赖打包成一个”容器”,在任何装了 Docker 的机器上都能一模一样地运行。
安装 Docker
Ubuntu/Debian
1 | # 一键安装脚本 |
配置镜像加速
国内拉镜像很慢,配置加速器:
1 | sudo mkdir -p /etc/docker |
核心概念
| 概念 | 类比 | 说明 |
|---|---|---|
| 镜像 (Image) | 安装包 | 只读模板,包含运行环境 |
| 容器 (Container) | 运行中的程序 | 镜像的实例,可读写 |
| Dockerfile | 安装脚本 | 描述如何构建镜像 |
| Volume | 外接硬盘 | 持久化数据,容器删了数据还在 |
实战:部署一个 Node.js 应用
1. 写 Dockerfile
1 | FROM node:20-alpine |
2. 构建镜像
1 | docker build -t my-app:v1 . |
3. 运行容器
1 | docker run -d \ |
Docker Compose:管理多个容器
实际项目通常需要多个服务配合(应用 + 数据库 + 缓存)。用 docker-compose 一键管理:
1 | version: '3.8' |
启动:
1 | docker compose up -d |
常用命令速查
1 | # 查看运行中的容器 |
踩坑记录
坑1:容器里的数据重启后丢失
一定要用 Volume 挂载数据目录。数据库、上传文件这些必须持久化。
坑2:容器之间网络不通
同一个 docker-compose 文件里的服务自动在同一网络,用服务名互相访问。跨 compose 文件需要手动创建网络。
坑3:镜像太大
用 alpine 基础镜像,多阶段构建,.dockerignore 排除 node_modules 等大目录。
总结
Docker 的学习曲线不陡,但收益很大。一旦习惯了容器化部署,你就再也不想回到手动装环境的时代了。建议从自己的小项目开始练手,慢慢把所有服务都容器化。
