将 lxc 迁移到 lxd

Posted

技术标签:

【中文标题】将 lxc 迁移到 lxd【英文标题】:migrating lxc to lxd 【发布时间】:2016-01-27 10:49:39 【问题描述】:

我已经看遍了,但看不到有没有办法。我有几个在 Ubuntu 14.04 主机上运行 Ubuntu 14.04 的 LXC 容器。它们对我来说变得非常重要,所以如果主机的硬件出现故障,我希望能够轻松地将 LXC 容器备份/迁移到另一台服务器。

我现在使用 LXD 构建了一个新的 Ubuntu 15.1 服务器,并已注销并重新登录并查看新组。为了进行测试,我使用 14.04 主机上的 --numeric-owner 开关对我现有的 LXC 容器之一进行了 tar 处理:

tar --numeric-owner -czvf ContToBeMoved.tgz /var/lib/lxc/my_container

---然后在新服务器上---

tar --numeric-owner -xzvf ContToBeMoved.tgz -C /var/lib/lxc/

...并已成功在新服务器 15.1 服务器上恢复 LXC 容器。

当我运行 LXD 命令时,LXD 看不到容器。我尝试将容器移动到 /var/lib/lxd/containers 目录,但 LXD 仍然看不到它。有没有办法编辑/克隆/迁移 LXC 容器,以便我们可以继续使用 LXD?

提前致谢。

【问题讨论】:

【参考方案1】:

LXD 使用 sqlite 数据库进行容器配置,因此仅将容器的 rootfs 转储到位是不够的。

最简单的方法是使用 LXD 创建一个新容器,然后从 /var/lib/lxd/containers/NAME/rootfs 中删除其 rootfs 并替换原始主机中的那个。

请注意,LXD 默认运行非特权容器,如果您的源容器具有特权(/var/lib/lxc/NAME/rootfs 由 root:root 拥有,而不是 100000:100000),那么您需要运行以下也是:

lxc config set NAME security.privileged true

【讨论】:

非常感谢您的反馈,您的信息非常有意义。我会尽快试一试。现在已经配置了一个备份 LXC 服务器,但是使用 LXD 进行实时迁移实在是太令人印象深刻了! =) 干杯。 非常感谢您提供这个有用的答案,但是,这似乎没有考虑到 IPv4 网络配置,可能正是因为只复制了 rootfs 内容。我只是偶然发现了@987654321 @ 脚本,但这似乎也不喜欢 lxc.network.ipv4 配置键?

以上是关于将 lxc 迁移到 lxd的主要内容,如果未能解决你的问题,请参考以下文章

markdown 通过LXC / LXD运行Minikube

sh 如何在LXC / LXD容器中设置*可写*共享目录

Ubuntu下LXC/LXD常用配置

Kubernetes 可以在没有 LXD 守护进程的情况下管理 LXC 容器吗?

sh 在LXD上设置带有LXC容器的Hadoop 3节点群集(自动安装)

LXD 2.0 系列:安装与配置