|
@@ -118,7 +118,8 @@ class DockerImage:
|
|
|
repo_digest, = re.search(rb'^Digest: (sha\S+:\S+)$', out.getvalue(), re.MULTILINE).groups()
|
|
|
return cls('{}@{}'.format(image, repo_digest.decode()))
|
|
|
|
|
|
- def run(self, args=[], name=None, detach=False, env={}, network=None, publish_ports=[], caps=[]):
|
|
|
+ def run(self, args=[], name=None, detach=False, env={},
|
|
|
+ network=None, publish_ports=[], volumes=[], caps=[]):
|
|
|
params = ['sudo', 'docker', 'run', '--rm']
|
|
|
if name:
|
|
|
params.extend(['--name', name])
|
|
@@ -129,6 +130,7 @@ class DockerImage:
|
|
|
params.extend([a for k, v in env.items() for a in ['--env', '{}={}'.format(k, v)]])
|
|
|
if network:
|
|
|
params.extend(['--network', network])
|
|
|
+ params.extend([a for v in volumes for a in ['--volume', ':'.join(v)]])
|
|
|
params.extend('--publish=' + ':'.join([str(a) for a in p]) for p in publish_ports)
|
|
|
params.extend(['--security-opt=no-new-privileges', '--cap-drop=all'])
|
|
|
params.extend(['--cap-add={}'.format(c) for c in caps])
|