从头开始:Python程序创建Docker图像并运行容器
浏览:561 次

前面写的字:
我有一个白色的小Docker。因为我需要在不久前用Docker将实习单元的代码打包成图像,然后用于多个用户,所以我从头开始学习Docker。我参考了一些书籍和视频,发现除了解释大家都知道的基本操作之外,我需要重点学习的流程图像制作程序非常简单,比如打印Hello Docker!或者一个简单的烧瓶webapp。然而,我需要打包的程序是那些需要读取文件的程序。我在网上查了很多资料,没有发现类似的,所以我想在这里分享。由于我的技术有限,可能有更简单的方法来完成打包图像的任务。请给我更多的建议。本文中使用的Docker命令非常简单,如果你读一点Docker,你应该会理解它们~
这个博客是关于什么的?
我想打包一个简单的python程序,它读取txt并将其输出为图像,然后使用scp命令将python文件所需的文件从另一个服务器上载到docker容器,并让python图像容器输出结果
我的工作环境:硬件环境:两台Linux服务器都配备了Centos 7,两台服务器可以互相ping。一个有码头工人,另一个有装卸工人,这都无关紧要。如果您只是想尝试,这两个虚拟机也应该可用
1.制作图像
我使用的图像制作方法是Dockerfile+python程序来创建图像。我的python文件名是Docker_test.py
1.1 Python文件代码
这个python文件实现了一个简单的VID-Txt文件读入,然后输出Txt文件的内容。但是,该文件的特点是您需要读取该文件。如果你有一个更复杂、更大的项目,原则是一样的。
导入osdef main():
打开(r'VID.txt',encoding=“utf-8”)作为文件:
#文件类型打印的文件对象(类型(文件))
打印(文件)
#阅读全文并打印出来(file.Read())
#此时再次读取时,如果返回EOFprint(file.read())__name__=='__main__':
main()
1.2 Dockerfile文件
Dockerfile是我使用图像制作方法所必需的。如果您对其参数感到困惑,可以查看文档。链接如下:
#基础图像基于
来自python:3.6#

##维护人员信息
#
#维护员小宝543010129@qq.com
#
##将代码添加到代码文件夹
复制pythontest。Py/code/##将代码文件夹设置为工作目录
#
工作人员/代码
#
##安装支持
#
#
CMD[“python”,“pythontest.py”]
1.3图像创建过程:
使用ssh登录服务器。我使用xshell登录
创建dockertest文件夹并输入
mkdirdocker测试
cd停靠测试
通过vim将上述Python程序和Dockerfile写入docker测试文件夹。如果此处报告了错误,则很可能您尚未安装vim。请参阅此博客:https://www.cnblogs.com/raorao1994/p/8890751.html
vim pythontest.py

vim Dockerfile文件
此时,使用ls命令检查您写入的文件是否在文件夹中。如果显示Dockerfile python测试py没有问题
使用docker build命令创建图像
官方Docker构建文档:https://docs.docker.com/engine/reference/commandline/build/我实际上输入了下面的一个。别忘了最后一点
docker构建-t pythontest
然后显示图像创建成功
2.运行容器
我们已经成功创建了python测试程序的图像。现在,让我们运行图像以查看docker run命令文档:
2.1操作容器
docker运行--名称pythontest-d pythontet
结果如预期。有一个问题。它显示容器已创建,但未返回任何结果。使用Docker ps-a查询,发现容器确实存在并且处于退出状态
在这里,我们创建另一个容器python测试以进行比较_新建,或者基于python的测试程序图像,使用以下命令创建
docker运行--name pythontest_new-d-it pythontest/bin/bash
通过这种方式,我们创建了一个名为python test_new的新容器,检查状态并发现它正在持续运行
3.将文件传输到容器
现在我们将转移VID。python程序向容器所需的txt文件
在另一台服务器上,VID。使用了VIM编写的txt文件。内容是一些随机的字符串
使用Docker exec进入容器Docker xec命令教程:
我们通过scp命令将另一台服务器上的文件传输到前面使用的服务器:scp[optional parameter]file_ source file_如果target不理解,您可以阅读以下博客:
我们可以在另一台服务器上看到VID。txt文件被传输到Docker容器中,然后退出容器。
