in container_agent/docker_client.py [0:0]
def run(self,
image=None,
command=None,
ports=None,
name=None,
volumes=None,
env=None):
"""Start a new container.
Args:
image: container image to run
command: command to run
ports: ports to expose. list of (internal, external, proto) tuples.
external and proto is optional.
Returns:
"docker run -d" stdout output
Example:
run(image='busybox',
command=['nc', '-p', '4711', '-lle', 'cat'],
ports=[(7, 4711, tcp),
('1.2.3.4', 7, 4711, tcp)],
name='netcat-echo')
"""
log.debug('run_daemon %s', image)
assert image
ports = ports or []
command = command or []
args = []
if ports:
args.extend(self.__port_arg(*port) for port in ports)
if name:
args.append('--name=%s' % (name, ))
if volumes:
args.extend('--volume=%s' % (volume, ) for volume in volumes)
if env:
args.extend('--env=%s' % (env, ) for env in env)
args.append(image)
args.extend(command)
return self.cli_check('run', '-d', *args).strip()