I am running the below docker command :
docker run -d -v /Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo:/quantum-demo/ -it demo python3 /quantum-demo/circuit.py --res './'
I am trying to run the above command in python and I have the code as follows:
container = client.create_container(
image='demo',
stdin_open=True,
tty=False,
command="python3 /quantum-demo/circuit.py --res='./'",
volumes=['/Users/gowthamkrishnaaddluri/Documents/dfki_sse/demo', '/quantum-demo/'],
detach=True,
)
client.start(container=container.get('Id'))
I am not able to see the files which get generated when the python file(circuit.py) is run. The files get generated when I just run the docker command , when I use the container api the file is not seen in the directory. Am I doing something wrong on using the volumes in the client create container? Thanks!
How can I rectify the above problem so that I can map the volume properly? Or please let me know how can I use docker volumes so that the file generated in the docker folder can be copied to the local directory( such as saved neural network model after training)
Thanks!
Hi 👋🏻 Hope you are doing well!
So instead of the list
, you should use dict
and also you should use another method. An example is below:
import docker
client = docker.from_env()
client.containers.run(
image="python",
auto_remove=True,
detach=True,
tty=False,
stdin_open=True,
volumes={
# path on your machine/host
"/Users/volodymyr/Development/sandbox/stackoverflow/file.py": {
"bind": "/mnt/file.py", # path inside the container
"mode": "rw",
}
},
command=["python", "/mnt/file.py", "-w", "world!"],
)
# file.py
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-w", "--word")
args = parser.parse_args()
print(f"Hello {args.word!s}.")
I tested this code on my machine and it works. (docker
sdk version is 6.0.1)
Docs: https://docker-py.readthedocs.io/en/stable/containers.html