赞
踩
以下是一个简单的 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, 现在创建容器,并让这段代码在容器中运行:
# 从 hub.docker.com 上 pull 最新 python image
FROM python
# 容器内的工作目录
WORKDIR /app
# copy 源代码到容器
COPY . /app
CMD ["python", "rng.py"]
docker build .
对于这个程序,直接运行: 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>
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>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。