我正在使用docker-py。我想从docker容器复制一个文件到主机。
来自docker-py文档:
copy
Identical to the docker cp command. Get files/folders from the container.
Params:
container (str): The container to copy from
resource (str): The path within the container
Returns (str): The contents of the file as a string
我可以创建container并启动它,但无法获取从container复制到主机的文件。有人能帮我指出我是否丢失了什么吗?我的docker container中有/mydir/myshell.sh,我试图将其复制到主机。
>>> a = c.copy(container="7eb334c512c57d37e38161ab7aad014ebaf6a622e4b8c868d7a666e1d855d217", resource="/mydir/myshell.sh") >>> a
<requests.packages.urllib3.response.HTTPResponse object at 0x7f2f2aa57050>
>>> type(a)
<class 'requests.packages.urllib3.response.HTTPResponse'>
如果有人能帮我弄清楚它是在复制还是甚至没有复制文件,那将会很有帮助。
3条答案
按热度按时间tkclm6bt1#
copy
在docker中是一个被弃用的方法,首选的方法是使用put_archive
方法。所以基本上我们需要创建一个归档文件,然后将其放入容器中。我知道这听起来很奇怪,但这是API目前支持的。如果你像我一样,认为这可以改进,请随时打开一个问题/功能请求,我会投赞成票。下面是有关如何将文件复制到容器的代码片段:
yizd12fk2#
在我的python脚本中,我添加了一个调用来使用
docker run -it -v artifacts:/artifacts target-build
运行docker,这样我就可以在artifacts文件夹中获取docker运行生成的文件。ttcibm8c3#
此问题的当前首选答案描述了如何从主机复制到容器。
要从容器复制到主机,您可以使用文档中关于get_archive函数的类似方法:www.example.comhttps://docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.Container.get_archive
例如:
这应该会将容器源文件保存到主机上的tar归档文件中。