容器(docker)使用docker运行Python程序

举报
Gere 发表于 2022/08/07 19:32:20 2022/08/07
【摘要】 以下是一个简单的 python 程序,用户输入一个最小值和最大值,输出二者之间的随机数:from random import randintmin_number = int(input('Please enter the min number: '))max_number = int(input('Please enter the max number: '))if (max_number ...

以下是一个简单的 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, 现在创建容器,并让这段代码在容器中运行:

1. 首先写一个 Dockerfile:

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

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

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

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

在这里插入图片描述

2. build image,使用命令:

docker build .

3. 创建并运行容器:

对于这个程序,直接运行: 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 分配一个伪 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> 

4. 重启容器,

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

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

如果应用程序,依赖项,以及源代码等等都没有改变,也就是 image 没有变,那么没有必要创建全新的容器,而是直接用 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 不需要,因为已经被 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> 
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。