On Mon, 2015-08-10 at 17:19 +0100, Daniel P. Berrange wrote:
On Mon, Aug 10, 2015 at 05:16:19PM +0100, Daniel P. Berrange wrote:
> On Tue, Aug 04, 2015 at 08:11:17PM +0000, Eren Yagdiran wrote:
> > Run an already-built template
> > If there is no execution command specified by user, source.get_command will
> > find the command to invoke
> > ---
> > virt-sandbox-image/virt-sandbox-image.py | 24 ++++++++++++++++++++++++
> > 1 file changed, 24 insertions(+)
> >
> > diff --git a/virt-sandbox-image/virt-sandbox-image.py
b/virt-sandbox-image/virt-sandbox-image.py
> > index 4c19fa8..e20ce22 100755
> > --- a/virt-sandbox-image/virt-sandbox-image.py
> > +++ b/virt-sandbox-image/virt-sandbox-image.py
> > @@ -101,6 +101,30 @@ def check_connect(connectstr):
> > raise ValueError("%s is not supported by Virt-sandbox"
%connectstr)
> > return True
> >
> > +def run(args):
> > + try:
> > + if args.connect is not None:
> > + check_connect(args.connect)
> > + source = dynamic_source_loader(args.source)
> > + diskfile,configfile =
source.get_disk(name=args.name,path=args.imagepath)
> > +
> > + format = "qcow2"
> > + commandToRun = args.igniter
> > + if commandToRun is None:
> > + commandToRun = source.get_command(configfile)
> > + cmd = ['virt-sandbox']
> > + if args.connect is not None:
> > + cmd.append("-c")
> > + cmd.append(args.connect)
> > + params = ['-m','host-image:/=%s,format=%s'
%(diskfile,format),
> > + '--',
> > + commandToRun]
> > + cmd = cmd + params
> > + subprocess.call(cmd)
> > +
> > + except Exception,e:
> > + print "Run Error %s" % str(e)
>
> This code actually ends up launching a sandbox using the template file as
> the root disk image. This is not good, because we need to be able to run
> multiple instances of the sandbox, all using the same template file. As
> such we need to be able to create a new temporary disk image for each
> sandbox instance, that is an overlay on the main template, an then
> delete this temporary disk at shutdown.
Or if we make sure / is read-only that would avoid the problem I
mention here. With normal docker toolchain is / read-only by
default, or do they make it writable with a throw-away snapshot ?
They have a layer for the container instance, but it isn't thrown-away
when the container stops as users can commit the changes in that
container's layer to the image template. I think we need to go the
separate temporary layer as you mentioned, and have either an
automatically computed container name or one defined by the user: with
that we should have clean separation for all instances.
--
Cedric