Docker 化 Python 应用:让部署不再困难

Docker 化 Python 应用:让部署不再困难

本文是《Python工程化实践》专栏第十六章,讲解如何用 Docker 容器化 Python 应用,实现一键部署。


1. 为什么用 Docker

1.1 环境一致性问题

“在我的机器上能跑” —— 开发者最常说的谎言

没有 Docker 之前

  • 开发环境:Python 3.11、Ubuntu 22.04
  • 生产环境:Python 3.9、CentOS 7
  • 依赖版本冲突,项目迁移困难

有了 Docker 之后

  • 开发、测试、生产使用同一个镜像
  • “Build Once, Run Anywhere”

1.2 依赖隔离

Docker 容器有独立的文件系统、依赖、网络:

# 容器 A:numpy 1.24# 容器 B:numpy 1.26# 互不干扰

1.3 快速部署

# 拉取镜像,一键启动dockerrun-d-p8000:8000 myapp:latest

2. Docker 基础

2.1 核心概念

概念说明
镜像(Image)只读模板
容器(Container)镜像的运行实例
Dockerfile构建镜像的脚本
┌─────────────┐ docker build ┌─────────────┐ docker run ┌─────────────┐ │ Dockerfile │ ───────────────► │ Image │ ───────────────► │ Container │ └─────────────┘ └─────────────┘ └─────────────┘

2.2 常用命令

# 构建镜像dockerbuild-tmyapp:latest.# 查看镜像dockerimages# 运行容器dockerrun myapp:latest# 查看运行中的容器dockerps# 查看所有容器dockerps-a# 停止容器dockerstop myapp