一套系统、实战、不啰嗦的 Docker 完整介绍,从概念到微服务场景全覆盖。
一、Docker 是什么(一句话抓核心)
Docker 是一个容器化引擎 ,用来把应用 + 依赖 + 环境 打包成一个可移植、可重复运行的标准镜像,在任何装了 Docker 的机器上一键运行。
对比:
- 虚拟机:虚拟一整套操作系统,重、慢、占资源
- 容器:共享宿主机内核,轻量、秒启、资源隔离
对微服务意义:服务独立打包、独立部署、环境一致、扩缩容极快。
二、核心三大概念(必须吃透)
1. Dockerfile(构建文件)
文本文件,定义:
- 基础镜像(如
openjdk,node,python) - 拷贝代码
- 暴露端口
- 启动命令
示例(Java 微服务):
dockerfile
FROM openjdk:17-jdk-slim
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
2. Image(镜像)
- 只读模板
- 分层存储
- 一次构建,到处运行
- 微服务:每个服务一个镜像
3. Container(容器)
- 镜像运行后的实例
- 独立进程、独立网络、独立文件系统
- 可启动、停止、删除、迁移
三、Docker 核心工作流(微服务开发必用)
- 写代码
- 写 Dockerfile
docker build构建镜像docker push推到镜像仓库(Harbor、Docker Hub、阿里云)- 任何机器
docker run直接运行 - 配合 Docker Compose / K8s 编排多服务
四、微服务开发最常用命令
基础
docker info:查看信息docker images:查看镜像docker ps:查看运行容器docker ps -a:查看所有容器
构建与运行
docker build -t 服务名:版本 .docker run -d -p 宿主机端口:容器端口 --name 容器名 镜像名
维护
docker logs 容器名:看日志(微服务排错必备)docker exec -it 容器名 /bin/bash:进入容器docker rm/rmi:删除容器 / 镜像
五、Docker Compose(微服务本地开发神器)
一个 docker-compose.yml 就能一键启动整套微服务依赖:
- MySQL
- Redis
- Nacos/Eureka
- RabbitMQ/Kafka
- 你的多个微服务
示例结构:
yaml
version: '3'
services:
mysql:
image: mysql:8
ports:
- "3306:3306"
redis:
image: redis
user-service:
build: ./user-service
ports:
- "8080:8080"
启动:
plaintext
docker-compose up -d
本地开发微服务联调最爽工具。
六、Docker 在微服务架构中的价值
-
环境一致性开发 / 测试 / 生产完全一样,解决 "我本地能跑"。
-
服务隔离每个微服务一个容器,互不干扰。
-
快速扩缩容秒级启动容器,适合流量波动。
-
标准化交付镜像 = 交付物,运维极其简单。
-
适配云原生Docker 是 K8s 的基础,是云原生微服务的基石。
七、微服务开发常见 Docker 场景
- Spring Cloud / Spring Boot 服务容器化
- 多服务本地快速启动(Compose)
- 测试环境一键部署
- CI/CD 流水线:Git 提交 → 自动构建镜像 → 自动部署
- 与 K8s 结合做生产级编排
八、简单学习路线(你照着走就能上手)
- 安装 Docker
- 学会基础命令
- 给你的微服务写 Dockerfile
- 使用 Compose 启动整套依赖
- 学习镜像仓库、CI/CD
- 进阶:K8s