Docker入门指南:用容器化部署你的第一个Python应用
前言:为什么需要容器化?
你是否遇到过这些场景?
- “这个程序在我本地能跑,为什么到服务器就报错?”
- “Python版本升级后项目依赖全乱了…”
- “新同事配置开发环境花了整整两天”
Docker通过容器化技术将应用及其运行环境打包成标准化的单元,实现”一次构建,处处运行”。本文将以一个Flask应用为例,带你完成从零到一的容器化实践。
一、环境准备
1.1 安装Docker
1 | # Ubuntu示例(其他系统见官方文档) |
1.2 创建Python应用
app.py:
1 | from flask import Flask |
requirements.txt:
1 | flask==2.0.3 |
二、编写Dockerfile
1 | # 第一阶段:构建环境 |
🔍 关键解析:
- 多阶段构建:减小最终镜像体积(从约1GB缩减到约130MB)
- 权限控制:创建非root用户提升安全性
- 路径配置:确保能找到用户级安装的包
三、构建与运行
3.1 构建镜像
1 | docker build -t my-python-app . |
3.2 启动容器
1 | docker run -d -p 5000:5000 --name myapp my-python-app |
验证访问:
1 | curl http://localhost:5000 |
3.3 常用命令速查
| 命令 | 说明 |
|---|---|
docker ps -a |
查看所有容器状态 |
docker logs myapp |
查看实时日志 |
docker exec -it myapp bash |
进入容器shell |
docker stop myapp |
停止容器 |
四、进阶:使用docker-compose
当需要关联数据库等服务时,推荐使用服务编排:
docker-compose.yml:
1 | version: '3' |
启动命令:
1 | docker-compose up -d |
五、常见问题排查
5.1 容器内时间不对?
1 | # 在Dockerfile中加入 |
5.2 如何清理无用资源?
1 | docker system prune -a --volumes |
5.3 查看镜像层级结构
1 | docker image history my-python-app |
结语
通过本文你已掌握了:
- ✅ Docker镜像构建的核心方法
- ✅ 多阶段构建的优化技巧
- ✅ 容器化部署的完整流程
- ✅ 常见问题的解决方案
下一步学习建议:
- 研究Docker网络配置
- 探索Kubernetes容器编排
- 了解CI/CD中的容器化实践
💬 讨论话题:你在容器化过程中遇到过哪些”坑”?欢迎在评论区分享你的经历!
延伸阅读:
本文示例代码已上传至GitHub仓库:https://github.com/example/docker-python-demo
原创文章,转载请注明出处
如需PDF版本或完整示例项目,可通过下方邮箱联系我📮
Tips:
- 实际部署时建议添加
--restart=always参数实现自动重启 - 生产环境务必配置适当的日志轮转策略
- 可使用
docker scan命令进行安全漏洞扫描
希望这篇指南能成为你容器化之旅的良好开端!🚀
