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.
First, set the path in your localhost to where the file is stored. Next set the path in your docker container to where you want to store the file inside your docker container. Then copy the file which you want to store in your docker container with the help of CP command.
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)
And then use it like:
copy_to('/local/foo.txt', 'my-container:/tmp/foo.txt')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With