Docker中的Python:如何在主机上保存一个简单的Python文件

我上周开始与Docker合作。 我使用http.client和http.server在Python 3.6.2中编写了http客户机和服务器程序。 服务器端运行在Ubuntu 16.04下的云中的Docker容器中; 客户端在本地运行。

作为testing的一部分,我将一个文件从本地机器发送到云中的服务器,在到达服务器时获取文件内容,将文件内容写入服务器上的文件,并显示文件内容在PuTTYterminal中逐行显示,以确认文件在服务器上正确接收(这个简单的练习只是一个testing)。

虽然文件内容正确显示,并且没有收到任何错误消息,但新文件( \home\pythonwebapp\HTTP_File_Received )不会显示在主机上的工作目录\home\pythonwebapp\ ,而且我无法在任何其他可能的位置。

这是相关的代码:

 class HTTPServTest_RequestHandler(BaseHTTPRequestHandler): # POST def do_POST(self): # Send response status code self.send_response(200) # Send headers self.send_header('Content-type','text/html') self.end_headers() varLen = int(self.headers['Content-Length']) data_received = self.rfile.read(varLen) # WRITE POST DATA TO FILE fname = r'\home\pythonwebapp\HTTP_File_Received' fi = open(fname, "w") for line in data_received: fi.write(str(line)) print(line) print(" ") fi.close() # Send message back to client message = "I got your message!" # Write content as utf-8 data self.wfile.write(bytes(message, "utf8")) return 

接下来,我试图通过将sudo docker run -i -t -v /home/pythonwebapp:/pwavol -p 8080:8080 pythonweb运行命令添加-vstring来与Docker运行卷装载: sudo docker run -i -t -v /home/pythonwebapp:/pwavol -p 8080:8080 pythonweb 。 挂载卷,但数据文件仍然不会出现在/home/pythonwebapp目录中。 在新卷上运行docker docker volume inspect显示pwavol,但没有数据文件。

接下来,我将其包含在Dockerfile:VOLUME [“/ home / pythonwebapp /”]中。 现在docker卷检查ee787 …我看到“挂载点”:“/var/lib/docker/volumes/ee787…/_data”,但该文件夹中没有文件。

我已经研究了几个小时,但没有任何解决这个问题。 我仍然不知道文件在哪里。 在http://container-solutions.com/understanding-volumes-docker/上有一篇很好的文章,我已经使用了这篇文章的一些想法,但是主机上还没有数据文件。

任何关于新的简单的Python文件“HTTP_File_Received”所在位置的想法将是非常值得赞赏的。 它在Docker容器中,我如何坚持它在主机上?

根据下面的jwodder的build议编辑更改:

早些时候,我使用了正斜杠,但没有前置斜杠。 这一次,根据你的build议,我用前置斜杠。 现在我的数据文件出现在:/ var / lib / docker / volumes / b69250 … / _ data接下来,我将介绍如何将该数据文件移动到主机以进行持久化。 当我发现我将如何发表我的研究成果。 现在我的问题可以被细化为“如何将数据文件从docker容器移动到主机”。