首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何备份/移动LXC容器?

如何备份/移动LXC容器?
EN

Stack Overflow用户
提问于 2014-05-02 11:32:24
回答 4查看 57K关注 0票数 20

我想要lxc集装箱备份。我们有带有12.04 LTS ubuntu server的服务器,我在其中安装了LXC - 1.0.0.alpha2。我想把我们的ubuntu服务器升级到14.04LTS。因此,我想要做的是让LXC容器备份->升级操作系统到14.04 ->还原LXC容器。在早期版本(0.7.5,我猜)中有lxc-备份和lxc-还原,但是对于1.0.0.2,我们没有备份和恢复操作。如何让lxc容器备份。我花了3个多小时在复制容器文件夹(/var/lib/lxc/my_ container /)中,并将其粘贴到另一个12.04 LTS服务器中,但是它无法工作,

代码语言:javascript
复制
#sudo lxc-start -n my_container
lxc-start: invalid sequence number 1, expected 4.
lxc-start: failed to spwan "my_container"

那么,我怎么能期望它将在升级的14.04服务器操作系统中工作。

你想要lxc-集装箱备份吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-10 05:28:41

编辑:2016年3月29日

如果您无意中发现了这篇文章,我的答案实际上是关于在系统之间移动 LXC容器,因为这似乎是要问的问题。

如果您想要备份您的LXC容器,请参阅@Stuart的答案以获得一些很好的选择。

在主机系统之间移动LXC容器

这就是我如何在系统之间迁移LXC容器的方式。我已经成功地将基于ubuntu的12.04容器转移到了14.04主机上,它们工作得很好。

  • 关机容器lxc-停止-n $NAME
  • 存档容器rootfs & configcd /var/lib/lxc/$NAME/ # tar -数字所有者-czvf container_fs.tar.gz ./*标志非常重要!没有它,容器可能无法启动,因为uid/gid在提取的文件系统中损坏。当tar创建存档时,它保留了用户/组的所有权信息。默认情况下,在提取时,tar尝试使用运行tar的系统上的ids解析归档用户/组所有权名称。这是为了确保在新系统上解析用户所有权,以防系统之间的UID数值不同。 这对LXC文件系统是不好的,因为数值uid/gid所有权是为整个文件系统保留的。如果它被解决到一个不同的价值,坏的事情会发生。
  • 将文件复制到新服务器rsync -avh container_fs.tar.gz user@newserver:/var/lib/lxc/
  • 提取rootfs mkdir /var/lib/lxc/$NAME/ # cd /var/lib/lxc/$/# tar -数值所有者-xzvf container_fs.tar.gz。

如果您使用的是一个覆盖支持的容器,那么您还需要迁移这个新容器所基于的容器。最后,您可能会看到一些关于跳过的套接字文件的警告:

tar: /var/lib/lxc/$NAME/rootfs/dev/log: socket ignored

我忽略了这个错误,我管理的任何容器都没有任何问题。如果您有进一步的问题,请将您的错误消息添加到原始帖子中,我将详细说明。

票数 41
EN

Stack Overflow用户

发布于 2014-09-26 22:50:19

编辑:2017年11月

为了将lxc容器快速备份到没有btrfs文件系统的remote主机上,我使用sshfs & cdremote主机将文件系统挂载到挂载中。停止容器&创建容器的tar.xz存档。

编辑:2016年3月

现在,我在一个lxc文件系统上运行我的btrfs容器,以便更简单地获取正在运行的容器的snapshotbtrfs sub snap检测到proc run sys是虚拟文件系统&在快照中不包括它们。

我使用杜普备份LXC容器。与备份普通机器不同,DO希望在备份中包含来自LXC容器的/dev

代码语言:javascript
复制
apt-get install duply
duply mybackup create

~/.duply/mybackup/exclude中,我使用了:

代码语言:javascript
复制
- /cdrom
- /dev
- /lost+found
- /media
- /mnt
- /proc
- /run
- /sys
- /tmp
- /var/backup/restore/*
- /var/backup/tmp/*
- /var/lib/lxc/*/rootfs/lost+found
- /var/lib/lxc/*/rootfs/media/*
- /var/lib/lxc/*/rootfs/mnt/*
- /var/lib/lxc/*/rootfs/proc/*
- /var/lib/lxc/*/rootfs/run/*
- /var/lib/lxc/*/rootfs/sys/*
- /var/lib/lxc/*/rootfs/tmp/*
- /var/lib/lxcfs/*

以上将备份整个机器&所有的LXC容器。

要只备份容器,编辑~/.duply/mybackup/conf &将SOURCE='/'更改为SOURCE='/var/lib/lxc' &从~/.duply/mybackup/exclude中删除非lxc行

使用运行Alpine容器进行测试-也将在Debian上工作。

使用Duply的简单备份 -您还可以对本地文件进行非常简单的未加密备份(在~/.duply/mybackup/conf中设置TARGET='file://[relative|/absolute]/local/path' )。

要签署杜普备份,请参阅自动化环境中的GnuPG (无密码签名密钥,而不是将密码存储在明文中)。

在Duply conf文件中为cron作业设置conf

如果您执行而不是,则在conf中存储任何明文密码,做not,禁用上的GPG_TEST恢复-因此gpg-agent会缓存您的密码。

票数 11
EN

Stack Overflow用户

发布于 2015-08-29 09:24:48

我发现备份容器的最简单的方法是只运行lxc-克隆。

代码语言:javascript
复制
lxc-clone -o NAMEOFCONTAINER -n NAMEOFCONTAINER -P BACKUPDIR

还原它非常简单,只需将备份复制或移动回/var/lib/lxc,您也可以将其解析为节省空间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23427129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档