我正在使用docker-py从容器中读取文件和文件夹。当我使用该方法get_archive()
时,我想将其保存到焦油文件中,因为它返回了原始焦油数据流的元组以及统计信息:
>>> import docker
>>> cli = docker.Client()
>>> ctnr = cli.create_container('busybox', 'true')
>>> stream, stat = cli.get_archive(ctnr, '/bin/sh')
>>> print(stat)
{u'linkTarget': u'', u'mode': 493, u'mtime': u'2015-09-16T12:34:23-07:00', u'name': u'sh', u'size': 962860}
stream
对象是requests.packages.urllib3.response.HTTPResponse
。我想阅读流上的内容并将其写入焦油文件。我该怎么做?我尝试了很多事情,但它只能与文件一起使用,但与目录无关。
流是原始焦油数据,因此,首先,您需要将其写入文件:
ctnr = cli.create_container('busybox', 'true')
with tempfile.NamedTemporaryFile() as tmp:
(data, _) = ctnr.get_archive('/bin/sh')
for chunck in data.stream():
tmp.write(chunck)
然后,将此文件作为焦油存档打开并提取。
tmp.seek(0)
with tarfile.open(mode='r', fileobj=tmp) as tar:
tar.extractall()
tar.close()
请注意,我使用了高级API。