将 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
Kubernetes 可以在没有 LXD 守护进程的情况下管理 LXC 容器吗?