:raises RuntimeError: If creating the container fails.
"""
if self.container.mnt:
+ # LXC fix for tmpfs
+ # https://github.com/lxc/lxc/issues/434
+ ret, _, _ = self.container.ssh.exec_command_sudo(
+ "sh -c 'echo \"{e}\" >> /var/lib/lxc/{c.name}/config'".
+ format(e="lxc.mount.entry = tmpfs run tmpfs defaults",
+ c=self.container))
+ if int(ret) != 0:
+ raise RuntimeError('Failed to write {c.name} config.'.
+ format(c=self.container))
+
for mount in self.container.mnt:
host_dir, guest_dir = mount.split(':')
options = 'bind,create=dir' \
if guest_dir.endswith('/') else 'bind,create=file'
- entry = 'lxc.mount.entry = {host_dir} '\
- '/var/lib/lxc/{c.name}/rootfs{guest_dir} none ' \
- '{options} 0 0'.format(c=self.container,
- host_dir=host_dir,
- guest_dir=guest_dir,
- options=options)
+ entry = 'lxc.mount.entry = {host_dir} {guest_dir} none ' \
+ '{options} 0 0'.format(
+ host_dir=host_dir, guest_dir=guest_dir[1:],
+ options=options)
ret, _, _ = self.container.ssh.exec_command_sudo(
"sh -c 'echo \"{e}\" >> /var/lib/lxc/{c.name}/config'".
format(e=entry, c=self.container))
if self.container.cpuset_cpus else ''
ret, _, _ = self.container.ssh.exec_command_sudo(
- 'lxc-start --name {c.name} --daemon'.
- format(c=self.container))
+ 'lxc-start --name {c.name} --daemon'.format(c=self.container))
if int(ret) != 0:
raise RuntimeError('Failed to start container {c.name}.'.
format(c=self.container))