如何使用docker-py(docker SDK)将文件从主机复制到容器 [英] How to copy a file from host to container using docker-py (docker SDK)
问题描述
我知道,有一种方法可以使用docker cp
在主机和docker容器之间双向复制文件,也可以使用docker-py从正在运行的容器中获取文件.但是我无法弄清楚如何(或什至有可能)使用docker-py将文件从主机复制到正在运行的容器.
你们有处理此类问题的经验吗?是否可以做,或者我必须使用python os.system
执行命令.我想避免这种解决方案.
I know, there is possible way how to copy file bidirectionally between host and docker container using docker cp
and also it is possible to obtain file from running container using docker-py. But I am not able to figure out how (or if it is even possible) copy file from host to running container using docker-py.
Do you guys have any experiences with such kind of problem? Is it possible to do or I have to execute command using python os.system
. I would like to avoid this solution.
推荐答案
类似的方法应该起作用:
Something like this should work:
import os
import tarfile
import docker
client = docker.from_env()
def copy_to(src, dst):
name, dst = dst.split(':')
container = client.containers.get(name)
os.chdir(os.path.dirname(src))
srcname = os.path.basename(src)
tar = tarfile.open(src + '.tar', mode='w')
try:
tar.add(srcname)
finally:
tar.close()
data = open(src + '.tar', 'rb').read()
container.put_archive(os.path.dirname(dst), data)
然后像这样使用它:
copy_to('/local/foo.txt', 'my-container:/tmp/foo.txt')
这篇关于如何使用docker-py(docker SDK)将文件从主机复制到容器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!