以下是一个简单的 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>
到此这篇关于利用Docker 运行 python 简单程序的文章就介绍到这了,更多相关 Docker 运行 python内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!