Reputation: 3218
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?
Upvotes: 8
Views: 12351
Reputation: 1733
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'))
Upvotes: 11
Reputation: 1141
The original answer has been deprecated in the api and no longer works. Here is how you would do it by using the create host config commands
import docker
client = docker.from_env()
container = client.create_container(
image='ubuntu',
stdin_open=True,
tty=True,
command='/bin/sh',
volumes=['/mnt/vol1', '/mnt/vol2'],
host_config=client.create_host_config(binds={
'/tmp': {
'bind': '/mnt/vol2',
'mode': 'rw',
},
'/etc': {
'bind': '/mnt/vol1',
'mode': 'ro',
}
})
)
client.start(container)
Upvotes: 6
Reputation: 3218
Starting from docker api version 1.10 volumes-from
is an argument to start()
instead of create()
Available from docker-py release 0.3.2
Pull request which introduced the change: https://github.com/dotcloud/docker-py/pull/200
Upvotes: 2