On Mon, Aug 17, 2015 at 11:28:37AM +0200, Cedric Bosdonnat wrote: > 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. Thanks for investigating that - I agree we should use a layer per container and support the --name argument, or auto-generate a name if it is not provided Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list