当前位置: 首页 > 知识库问答 >
问题:

使用python3-lxc克隆lxc容器

陈野
2023-03-14

我正在ubuntu 14.04上试验lxc。为了管理几个lxc实例,我使用python3lxc。使用pyhthon3 lxc,我确实无法克隆现有容器:

>>> import lxc
>>> c = lxc.Container('vanilla')
>>> c.defined
True
>>> c2 = c.clone('vanilla_clone')
>>> c2.defined
False

相应地, /var/lib/lxc.vanilla_clone没有根基使用

$ lxc-clone vanilla vanilla_clone

很好。(python3和lxc克隆,两者都是从sudo开始的。)这是python3_lxc中的一个bug或限制,还是我遗漏了什么?

事后思考:使用lxc。容器create需要一个从现有对象克隆时不需要的模板。

共有1个答案

王辉
2023-03-14

我也有同样的问题,我发现当一个同名的容器已经存在或者它认为它已经存在时,就会发生这种情况!因此,在开始克隆之前,您只需检查它。我是这样做的:

>>> import lxc
>>> c = lxc.Container('vanilla')
>>> c2 = lxc.Container('vanilla_clone')
>>> if not c2.defined:
...     c2 = c.clone('vanilla_clone')
>>> c.defined
True
>>> c2.defined
True

我真的不知道为什么,但即使是圣菲·格雷勃在这里也会做同样的事情。看看这部分:

# Create a base container (if missing) using an Ubuntu 14.04 image
base = lxc.Container("base")
if not base.defined:
    base.create("download", lxc.LXC_CREATE_QUIET, {"dist": "ubuntu",
                                                   "release": "precise",
                                                   "arch": "i386"})

    # Customize it a bit
    base.start()
    base.get_ips(timeout=30)
    base.attach_wait(lxc.attach_run_command, ["apt-get", "update"])
    base.attach_wait(lxc.attach_run_command, ["apt-get", "dist-upgrade", "-y"])

    if not base.shutdown(30):
        base.stop()

# Clone it as web (if not already existing)
web = lxc.Container("web")
if not web.defined:
    # Clone base using an overlayfs overlay
    web = base.clone("web", bdevtype="overlayfs",
                     flags=lxc.LXC_CLONE_SNAPSHOT)

    # Install apache
    web.start()
    web.get_ips(timeout=30)
    web.attach_wait(lxc.attach_run_command, ["apt-get", "update"])
    web.attach_wait(lxc.attach_run_command, ["apt-get", "install",
                                             "apache2", "-y"])

    if not web.shutdown(30):
        web.stop()
 类似资料:
  • 我尝试在克隆时更改rootfs dir,如下所示: 但我有一个错误: 然后我尝试使用"-B"选项和"lvm"值在LV中设置rootfs: 我得到了这个错误: 为什么我不能将“-vgname”或“-dir”与“lxc克隆”一起使用<我做错了什么?克隆容器时是否可以更改rootfs dir? PS:我使用Ubuntu14.04和LXC1.0。5.

  • LXC

    LXC 项目由一个 Linux 内核补丁和一些 userspace 工具组成。这些 userspace 工具使用由补丁增加的内核新特性,提供一套简化的工具来维护容器。 容器可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。本文循序渐进地介绍容器工具 Linux Containers(LXC)。 容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更

  • 我一直在尝试Linux容器(lxc)。安装后,我尝试创建一个容器。我正在用lxc-1.1开发Ubuntu14.04。1.当我尝试创建新容器时,系统会提示我此错误: lxc create:加载共享库时出错:liblxc。所以1:无法打开共享对象文件:没有此类文件或目录。我们非常感谢您对克服此问题的任何帮助。

  • 我一直在研究LXC容器,我想知道是否可以像普通VPS一样使用LXC容器? 我的意思是; 如何将外部IP地址分配给LXC容器 如何直接ssh到LXC容器中 我是LXC容器的新手,所以请告诉我是否还有其他需要注意的差异。

  • 我通过C API使用LXC,并简单地复制和粘贴了示例代码(如链接所示,但用我自己的函数名替换了)。然后从程序中的另一个代码块中调用它,我无法使容器正常启动。 调用只会返回false。如果我将第二个参数更改为start为0(意味着应该使用而不是/sbin/init),则start“成功”,但容器状态立即设置为,因此我无法连接到容器。 正在尝试通过设置获取日志: 只生成空文件。 想到这可能与我看到的另

  • 我可以更改初始化和保存lxc容器的目录吗?现在它们是在/var/cache/lxc下创建的,我希望它们位于另一个目录中,在另一个分区中,我有更多的空间。Changint分区的安装点不是一个选项,因为它已经用于其他用途。