How to bind volumes in docker-py?

docker, dockerpy, python

Solution

Below is the current working way to do volume bindings:

volumes= ['/host_location']
volume_bindings = {
                    '/host_location': {
                        'bind': '/container_location',
                        'mode': 'rw',
                    },
}

host_config = client.create_host_config(
                    binds=volume_bindings
)

container = client.create_container(
                    image='josepainumkal/vwadaptor:jose_toolUI',
                    name=container_name,
                    volumes=volumes,
                    host_config=host_config,
) 
response = client.start(container=container.get('Id'))

Problem

I think this used to work up to a few months ago. The regular commandline docker: ``` >> docker run --name 'mycontainer' -d -v '/new' ubuntu /bin/bash -c 'touch /new/hello.txt' >> docker run --volumes-from mycontainer ubuntu /bin/bash -c 'ls new' >> hello.txt ``` works as expected but I cannot get this to work in docker-py: ``` from docker import Client #docker-py import time docker = Client(base_url='unix://var/run/docker.sock') response1 = docker.create_container('ubuntu', detach=True, volumes=['/new'], command="/bin/bash -c 'touch /new/hello.txt'", name='mycontainer2') docker.start(response1['Id']) time.sleep(1) response = docker.create_container('ubuntu', command="/bin/bash -c 'ls new'", volumes_from='mycontainer2') docker.start(response['Id']) time.sleep(1) print(docker.logs(response['Id'])) ``` ..always tells me that new doesn't exist. How is `volumes-from` supposed to be done with docker-py?

Original source