Docker 快速入门:手把手教你打包 Python 应用
2026-01-26 22:51 AlfredZhao 阅读(0) 评论(0) 收藏 举报在云原生时代,Docker 是每一位开发者的必备技能。它解决了“环境配置难、版本冲突多”的痛点。今天,笔者将带你实战演练:如何将一个 Python Web 应用打包,并运行在自定义的端口上。
01 | 什么是 Docker?为什么它是“集装箱”?
搬家时,散装家具容易磕碰丢件。
Docker 的做法是: 租一个标准集装箱,把你的代码、Python 解释器、第三方库全部装进去。
- 镜像 (Image):封了条的集装箱模板,一旦打包,任何地方运行都一模一样。
- 容器 (Container):集装箱落地开门,真正跑起来的应用实例。
02 | 环境搭建:在线与离线安装
有些系统已经预装好了docker或者podman(后面提到),可以跳过此步骤,如果你的环境两者都没有,可以这样安装:
① 在线一键安装
对于能联网的服务器:
curl -fsSL https://get.docker.com | bash -s docker
sudo systemctl enable --now docker
# 验证:看到 active (running) 说明成功
sudo systemctl status docker
② 离线安装(内网环境)
- 下载 Docker 静态二进制
.tgz包。 - 解压并将
docker/*目录下的所有文件拷贝到/usr/bin/。 - 执行
sudo dockerd &启动后台服务。
③ 彻底删除现有容器环境(特殊情况)
该步骤不是必须,仅当现有容器环境有问题,导致冲突之类,可以尝试彻底卸载现有的容器环境(执行前必须要确定该环境的现有容器环境可删除,谨慎操作):
# 彻底删除docker(仅供参考)
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd# 彻底删除podman(仅供参考)
sudo yum remove -y podman
rm -rf ~/.local/share/containers/
rm -rf ~/.config/containers/
sudo rm -rf /etc/containers/ /var/lib/containers/
④ 为啥我的系统安装了假docker?
在 RHEL 8/9 及其衍生版(如笔者使用的 Oracle Linux)中,因为 Red Hat 默认推行 Podman。所以当只运行 dnf install docker 时,会发现系统实际上安装了一个名为 podman-docker 的软件包。
比如笔者在OEL系统上执行:
$ sudo dnf install docker
实际就是装了podman,但基本上可以 99% 兼容 Docker 命令。
$ docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
可以看到,执行docker命令,会有明确的提示“正在使用 Podman 模拟 Docker 命令行”。不过如果用途只是普通学习或运行标准容器,Podman 几乎能无缝替代 Docker。
03 | 实战打包:WhaleStudy 应用(Python 版)
假设我们要开发一个名为 WhaleStudy 的应用,并在 10090 端口提供服务。
① 准备代码与依赖
在 whalestudy 文件夹下创建两个文件:
文件 1:app.py(Python 源码)
from flask import Flask
app = Flask(__name__)@app.route('/')
def home():return "<h1>WhaleStudy: Python in Docker is Running on 10090!</h1>"if __name__ == '__main__':# 必须监听 0.0.0.0,否则 Docker 外部无法访问app.run(host='0.0.0.0', port=10090)
文件 2:requirements.txt(依赖清单)
flask==3.0.0
② 编写“配方”:Dockerfile
创建名为 Dockerfile 的文件(无后缀):
# 1. 基础镜像:使用轻量版 Python 3.9
FROM python:3.9-slim# 2. 设置工作目录
WORKDIR /app# 3. 拷贝依赖清单并安装(使用清华源加速)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 4. 拷贝源码
COPY app.py .# 5. 声明端口
EXPOSE 10090# 6. 启动指令
CMD ["python", "app.py"]
③ 构建镜像 (Build)
# -t 指定名字和版本,注意末尾有一个“.”代表当前目录
docker build -t whalestudy-py:v1.0 .
④ 运行容器 (Run)
# -d 后台运行,-p 宿主机端口:容器端口
docker run -d -p 10090:10090 --name my_whale_app whalestudy-py:v1.0
04 | 发表与离线分发
① 在线发表(推送到仓库)
docker login
docker tag whalestudy-py:v1.0 yourname/whalestudy-py:v1.0
docker push yourname/whalestudy-py:v1.0
② 离线“背”走镜像(企业内部项目最常用)
# 在开发机导出
docker save -o whalestudy_py_v1.tar whalestudy-py:v1.0# 在客户机导入
docker load -i whalestudy_py_v1.tar# 在客户机查找导入的镜像
docker images# 在客户机运行(实际有很多参数按需可配,这里只做最简示例)
docker run -d -p 10090:10090 --name my_whale_app whalestudy-py:v1.0
③ 确认客户机服务正常
按照上面的例子,正常网页访问10090端口,就可以正常显示测试界面:

另外,可以使用下面常用的docker命令,实现对某个具体容器的日志排查,或直接进入到某个容器内部直接操作:
# 查看某个容器的日志
docker logs -f [容器名]# 进入到某个容器
docker exec -it [容器名] /bin/bash
05 | 笔者结语
使用 Docker 运行 Python,最核心的优势是 “环境锁死”。你再也不用担心服务器上缺少某个库或者 Python 版本不对。端口的映射也确保了你的服务在复杂网络环境中的清晰独立。
转载请注明原文链接:https://www.cnblogs.com/jyzhao/p/19534125/docker-kuai-su-ru-men-shou-ba-shou-jiao-ni-da-bao
👋 感谢阅读,欢迎关注我的公众号 「赵靖宇」
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1221183.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!