容器(docker)使用docker运行Python程序
【摘要】 以下是一个简单的 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)