下面是一份**「Docker 基础篇」系统入门教程**,适合初学者 / 运维 / 后端 / 毕设环境部署,从概念到实操,一篇就能上手。
Docker 基础篇(从 0 到会用)
一、Docker 是什么?
Docker 是一种容器化技术,可以把应用程序 + 运行环境 + 依赖一次性打包成一个 容器(Container),做到:
一次构建,到处运行
解决了什么问题?
- 环境不一致(“我电脑能跑,你电脑跑不了”)
- 部署复杂、配置繁琐
- 应用迁移成本高
二、Docker 的核心概念
1️⃣ 镜像(Image)
- 相当于 程序安装包
- 只读模板
- 用于创建容器
👉 类比:操作系统 ISO / 软件安装包
2️⃣ 容器(Container)
- 镜像的运行实例
- 轻量级、可启动/停止
- 相互隔离
👉 类比:正在运行的软件
3️⃣ 仓库(Registry)
- 存放镜像的地方
- 常见:
- Docker Hub(官方)
- 阿里云镜像仓库
三、Docker 的工作原理(简化)
Dockerfile → Image → Container
- Dockerfile:构建规则
- Image:构建结果
- Container:运行实例
四、Docker 安装(常见环境)
Linux(CentOS / Ubuntu)
# 安装
curl -fsSL https://get.docker.com | bash
# 启动
systemctl start docker
# 开机自启
systemctl enable docker
# 查看版本
docker -v
Windows / macOS
- 安装 Docker Desktop
- 官方地址:https://www.docker.com/products/docker-desktop
五、Docker 常用命令(必会)
1️⃣ 镜像相关
docker images # 查看镜像
docker pull nginx # 拉取镜像
docker rmi 镜像ID # 删除镜像
2️⃣ 容器相关
docker ps # 查看运行中容器
docker ps -a # 查看所有容器
docker run nginx # 启动容器
docker stop 容器ID # 停止容器
docker rm 容器ID # 删除容器
3️⃣ 常用 run 参数(重点)
docker run -d \
-p 80:80 \
--name mynginx \
nginx
| 参数 | 说明 |
|---|---|
-d | 后台运行 |
-p | 端口映射 |
--name | 容器名称 |
六、数据卷(Volume)
为什么需要数据卷?
容器删除后:
❌ 数据丢失
解决方案:数据持久化
docker run -d \
-v /data/nginx:/usr/share/nginx/html \
nginx
👉 宿主机目录 ↔ 容器目录
七、Dockerfile 基础
示例:构建一个 Java 项目镜像
FROM openjdk:8
COPY app.jar /app.jar
CMD ["java", "-jar", "/app.jar"]
构建并运行
docker build -t myapp .
docker run -d -p 8080:8080 myapp
八、Docker 网络(入门)
- 默认 bridge 网络
- 容器之间可通过 容器名通信
docker network ls
docker network create mynet
docker run --network mynet ...
九、Docker vs 虚拟机
| 对比 | Docker | 虚拟机 |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 资源占用 | 少 | 多 |
| 隔离性 | 进程级 | 系统级 |
| 适合场景 | 微服务 | 完整系统 |
十、Docker 适用场景
✅ 微服务部署
✅ 项目快速搭建环境
✅ CI/CD 持续集成
✅ 毕设 / 实验环境统一
✅ 本地开发环境隔离
十一、新手常见坑
❌ 端口没映射,访问不了
❌ 容器一启动就退出(CMD 写错)
❌ 镜像太大(未清理依赖)
❌ 数据未持久化
十二、学习路线推荐
1️⃣ 会用 docker run
2️⃣ 理解 Image / Container
3️⃣ 掌握 Dockerfile
4️⃣ 学会 Volume / Network
5️⃣ 入门 Docker Compose(进阶)
如果你需要👇
- Docker 命令速查表(PDF)
- Docker + Spring Boot / Python / Node 示例
- Docker Compose 入门篇
- 毕设 / 项目部署完整流程
直接告诉我你的使用场景,我可以按你需求给你定制教程 🚀