Docker 运行 Python 程序:从构建镜像到交互式调试完整指南
本文详解如何利用 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 的相关内容,欢迎查阅本站往期文章或继续浏览后续教程,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









