小知识:利用Docker 运行 python 简单程序

以下是一个简单的 python 程序,用户输入一个最小值和最大值,输出二者之间的随机数:

?
1
2
3
4
5
6
7
8
9
10
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, 现在创建容器,并让这段代码在容器中运行。

1. 首先写一个 Dockerfile

?
1
2
3
4
5
6
7
8
9
10
# 从 hub.docker.com 上 pull 最新 python image
FROM python
# 容器内的工作目录
WORKDIR /app
# copy 源代码到容器
COPY . /app
CMD [“python”, “rng.py”]

%小知识:利用Docker 运行 python 简单程序-猿站网-插图

2. build image,使用命令

?
1
docker build .

3. 创建并运行容器

对于这个程序,直接运行: docker run he_generated_id_of_the_image 会出错:

?
1
docker run the_generated_id_of_the_image // ERROR !

而是要在命令中加 -it :

-it 是 -i 与 -t 的合并。 -i: interactive 与容器交互 -t: tty 分配一个伪 TTY, 即创建一个终端。
?
1
docker run -it the_generated_id_of_the_image

用户可以在容器内输入数据,并获得输出:

?
1
2
3
4
5
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> 

4. 重启容器

docker run 重新生成新的容器,默认模式为 attached 即附加模式,使用附加模式时,容器在前台运行,可以监听该容器的输出,同时终端被阻塞,无法响应用户的新的输入命令。

docker start 则重启运行现有的容器, 默认模式为 detached 即分离模式,容器在后台运行。

如果应用程序,依赖项,以及源代码等等都没有改变,也就是 image 没有变,那么没有必要创建全新的容器,而是直接用 docker start 重新启动现有的容器就可以。

使用docker ps -a 或者 docker container ls -a 列出全部正在运行以及已经停止的容器:

?
1
2
3
4
5
6
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 程序,使用命令:

?
1
docker start -a -i 4082f25c47bb

-t 不需要,因为已经被 memorized,运行结果:

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内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/ftell/article/details/124366209

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker中 container 和 image 的命名

2023-3-7 13:16:00

建站知识

小知识:Apache Hive 通用调优featch抓取机制 mr本地模式

2023-3-7 13:30:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索