Docker 运行 python
小公鸡卡哇伊呀~ 人气:1以下是一个简单的 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>
加载全部内容