Docker 运行 Python 程序:从构建镜像到交互式调试完整指南

阿橙
阿橙
发布时间:2026-10-12| 6人浏览过
原创

本文详解如何利用 Docker 运行简单的 Python 随机数程序。涵盖从编写 Dockerfile 构建镜像,到解决直接运行报错的问题,深入解析 -it 参数在交互式输入中的作用,并演示如何通过 docker start 命令高效重启已存在的容器,实现代码的复用与调试。

首先展示一个基础的 Python 脚本,该脚本的功能是接收用户输入的最小值和最大值,随后在指定范围内生成并输出一个随机数。

from random import randint

min_number = int(input('Please enter the min number: '))
max_number = int(input('Please enter the max number: '))

if (max_number < min_number): 
  print('Invalid input - shutting down...')
else:
  rnd_number = randint(min_number, max_number)
  print(rnd_number)

由于本地环境未安装 Python 解释器,我们将采用容器化方案,创建 Docker 容器来执行这段代码。

第一步,编写 Dockerfile 文件以定义运行环境。

# 从 hub.docker.com 上 pull 最新 python image
FROM python

# 容器内的工作目录
WORKDIR /app

# copy 源代码到容器
COPY . /app

CMD ["python", "rng.py"]

第二步,执行构建镜像的命令。

docker build .

第三步,基于构建好的镜像创建并启动容器。

若直接执行 docker run he_generated_id_of_the_image 命令,程序将会报错,无法正常运行。

docker run the_generated_id_of_the_image // ERROR !

正确的做法是在运行命令中追加 -it 参数。

  • -it 实际上是 -i 和 -t 两个参数的组合缩写。
  • -i 代表 interactive(交互模式),允许与容器进行数据交互。
  • -t 代表 tty(伪终端),用于分配一个终端接口,从而创建可视化的命令行环境。
docker run -it the_generated_id_of_the_image

通过上述配置,用户即可在容器内部输入数据,并实时获取程序的运行输出。

PS D:\python-app-starting-setup> docker run -it 7e318e98ef5c
Please enter the min number: 12
Please enter the max number: 24
22
PS D:\python-app-starting-setup> 

第四步,处理容器的重启与状态管理。

使用 docker run 命令会生成一个新的容器实例,默认采用 attached(附加)模式。在此模式下,容器在前台运行,虽然可以监听其输出,但当前终端会被阻塞,无法继续输入其他命令。

相比之下,docker start 命令用于重启现有的容器,默认采用 detached(分离)模式,容器将在后台静默运行。

如果应用程序代码、依赖项及源代码均未发生更改,即基础镜像保持不变,则无需反复创建新容器。直接使用 docker start 命令重启现有容器即可,这能显著节省资源。

可以通过执行 docker ps -a 或 docker container ls -a 命令来查看所有正在运行以及已停止的容器列表。

CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS                         PORTS     NAMES
4082f25c47bb   7e318e98ef5c   "python rng.py"          4 minutes ago       Exited (0) 4 minutes ago                 jovial_pasteur
ce7598ddbebb   7e318e98ef5c   "python rng.py"          About an hour ago   Exited (1) About an hour ago             nostalgic_cohen
df76886dc1a4   7e318e98ef5c   "python rng.py"          About an hour ago   Exited (0) About an hour ago             clever_hertz
71b61835bfb3   python         "python3"                2 hours ago         Exited (0) 2 hours ago                   hardcore_payne
89211c5ce6cd   834a8f2178cf   "docker-entrypoint.s…"   3 hours ago         Exited (137) 2 hours ago                 goofy_sinoussi

接下来,我们尝试重启之前的容器并重新执行 Python 程序,具体命令如下。

 docker start -a -i 4082f25c47bb

此时无需再使用 -t 参数,因为容器的配置信息已被记忆保留,直接运行即可看到结果。

PS D:\python-app-starting-setup> docker start -a -i 4082f25c47bb Please enter the min number: 1 Please enter the max number: 100 44 PS D:\udemy\Docker-Max\python-app-starting-setup>

至此,关于利用 Docker 运行 Python 简单程序的教程已介绍完毕。如需了解更多 Docker 运行 Python 的相关内容,欢迎查阅本站往期文章或继续浏览后续教程,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。