利用Docker 运行 python 简单程序

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录1. 首先写一个 Dockerfile2. build image,使用命令3. 创建并运行容器4. 重启容器

以下是一个简单的 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”]

利用Docker 运行 python 简单程序插图

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:udemyDocker-Maxpython-app-starting-setup> 
免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容