这是一个完整的 Docker 学习示例,包含 Spring Boot 应用的容器化实践。
docker-java-demo/
├── src/ # Java 源代码
│ └── main/
│ ├── java/
│ │ └── com/example/demo/
│ │ ├── DemoApplication.java # 主应用类
│ │ └── HelloController.java # REST 控制器
│ └── resources/
│ └── application.properties # 应用配置
├── Dockerfile # Docker 镜像构建文件
├── Dockerfile.best-practices # 最佳实践示例
├── .dockerignore # Docker 忽略文件
├── docker-compose.yml # 多容器编排配置
├── init.sql # 数据库初始化脚本
├── pom.xml # Maven 配置
├── LEARNING_PATH.md # 学习路线图
└── README.md # 本文件
docker build -t docker-java-demo:1.0 .docker run -d -p 8080:8080 --name my-java-app docker-java-demo:1.0# 访问首页
curl http://localhost:8080/
# 测试 hello 接口
curl http://localhost:8080/hello/World
# 健康检查
curl http://localhost:8080/health# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down| 端点 | 方法 | 描述 | 示例 |
|---|---|---|---|
/ |
GET | 首页信息 | curl http://localhost:8080/ |
/hello/{name} |
GET | 问候接口 | curl http://localhost:8080/hello/Docker |
/health |
GET | 健康检查 | curl http://localhost:8080/health |
# 构建镜像
docker build -t <镜像名>:<标签> .
# 查看镜像
docker images
# 删除镜像
docker rmi <镜像ID>
# 导出镜像
docker save -o app.tar docker-java-demo:1.0
# 导入镜像
docker load -i app.tar# 运行容器
docker run -d -p 8080:8080 --name my-app docker-java-demo:1.0
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 停止容器
docker stop my-app
# 启动容器
docker start my-app
# 重启容器
docker restart my-app
# 删除容器
docker rm my-app
# 强制删除运行中的容器
docker rm -f my-app# 查看日志
docker logs my-app
# 实时查看日志
docker logs -f my-app
# 查看最近 100 行日志
docker logs --tail 100 my-app
# 进入容器
docker exec -it my-app /bin/bash
# 在容器中执行命令
docker exec my-app ps aux
# 查看容器详细信息
docker inspect my-app
# 查看容器资源使用
docker stats my-app# 创建数据卷
docker volume create my-data
# 列出数据卷
docker volume ls
# 查看数据卷详情
docker volume inspect my-data
# 删除数据卷
docker volume rm my-data
# 使用数据卷运行容器
docker run -v my-data:/app/data my-app# 创建网络
docker network create my-network
# 列出网络
docker network ls
# 查看网络详情
docker network inspect my-network
# 容器连接到网络
docker network connect my-network my-app
# 删除网络
docker network rm my-network# 删除所有停止的容器
docker container prune
# 删除所有未使用的镜像
docker image prune -a
# 删除所有未使用的数据卷
docker volume prune
# 删除所有未使用的网络
docker network prune
# 清理所有未使用的资源
docker system prune -a --volumes
# 查看磁盘使用
docker system df- Java: 17
- Spring Boot: 3.2.0
- 构建工具: Maven 3.9
- 基础镜像: eclipse-temurin:17-jre
- 数据库: MySQL 8.0 (Docker Compose 示例)
- 多阶段构建
- 镜像分层和缓存
- 健康检查
- 环境变量
- 多容器编排
- 服务依赖
- 网络配置
- 数据卷管理
- 使用 .dockerignore
- 非 root 用户运行
- 镜像优化
- 安全配置
# 查看端口占用
lsof -i :8080
# 使用其他端口
docker run -p 8081:8080 docker-java-demo:1.0# 查看日志
docker logs <容器ID>
# 交互式运行(调试模式)
docker run -it docker-java-demo:1.0 /bin/bash# 查看构建日志
docker build --no-cache -t docker-java-demo:1.0 .
# 使用 BuildKit 获取详细信息
DOCKER_BUILDKIT=1 docker build -t docker-java-demo:1.0 .- 阅读
LEARNING_PATH.md了解完整学习路线 - 尝试修改应用代码并重新构建镜像
- 使用 Docker Compose 添加更多服务(Redis、Nginx)
- 学习 Kubernetes 进行容器编排
- 集成 CI/CD 流程
Docker Java 示例项目 - 用于学习 Docker 容器化技术
MIT License