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

如何备份/移动LXC容器?

牟稳
2023-03-14

我想备份lxc容器。我们有一个带有12.04 LTS ubuntu服务器的服务器,我已经安装了LXC-1.0。0.其中包含字母2。我想把我们的ubuntu服务器升级到14.04 LTS。所以我想做的是备份LXC容器-

#sudo lxc-start -n my_container
lxc-start: invalid sequence number 1, expected 4.
lxc-start: failed to spwan "my_container"

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

有没有关于lxc容器备份的想法?


共有3个答案

慕光赫
2023-03-14

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

lxc-clone -o NAMEOFCONTAINER -n NAMEOFCONTAINER -P BACKUPDIR

恢复它只需将备份复制或移动回/var/lib/lxc即可。您还可以对其进行tar以节省空间。

慕鹏
2023-03-14

要将lxc容器快速备份到没有btrfs文件系统的远程主机,我使用sshfs远程主机挂载文件系统

我现在运行我的lxc容器上的btrfs文件系统,使它更简单地采取快照的运行容器

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

apt-get install duply
duply mybackup create

~/。duply/mybackup/exclude我使用了:

- /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/*

上面会备份整个机器

要只是备份容器,请编辑~/. duply/myback/conf

通过运行Alpine Linux LXC容器进行测试-也可以在Debian上运行。

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

要对双重备份进行签名,请参阅自动化环境中的GnuPG(无密码签名密钥,而不是以明文形式存储密码)。

为cron作业在Duplyconf文件中设置GPG\u TEST='disabled'

如果您没有在conf中存储任何明文密码,请不要在恢复时禁用GPG_测试,以便GPG代理缓存您的密码。

禹德水
2023-03-14

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

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

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

>

# lxc-stop -n $NAME

存档容器rootfs

# cd /var/lib/lxc/$NAME/
# tar --numeric-owner -czvf container_fs.tar.gz ./*

--numeric owner标志非常重要!如果没有它,容器可能无法启动,因为uid/GID在提取的文件系统中被损坏。tar创建存档时,会保留用户/组所有权信息。默认情况下,提取时,tar尝试使用运行tar的系统上的id解析存档用户/组所有权名称。这是为了确保在新系统上解决用户所有权问题,以防系统之间的UID数值不同。

这对LXC文件系统来说很糟糕,因为数字uid/gid所有权打算为整个文件系统保留。如果它被解析为不同的值,坏事就会发生。

将文件复制到新服务器

# rsync -avh container_fs.tar.gz user@newserver:/var/lib/lxc/

提取根

# mkdir /var/lib/lxc/$NAME/
# cd /var/lib/lxc/$NAME/
# tar --numeric-owner -xzvf container_fs.tar.gz .

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

tar: /var/lib/lxc/$NAME/rootfs/dev/log:忽略套接字

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

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

  • 导出 Navicat Monitor 设置可用于应用程序服务器迁移或备份目的。导出的 zip 文件包括令牌密钥、实例设置、存储库数据库设置以及还原时所需的所有文件。若要备份 Navicat Monitor 设置,请前往“配置”->“备份、升级或迁移”。 【注意】你只能在相同的主版本和次版本迁移设置。例如,Navicat Monitor v1.1.x 只接受 v1.1.y 的 zip 文件。 备份

  • 我一直在尝试在运行debian wheezy的lxc容器中使用libnfc。在尝试了一些东西和库之后,因此证明了lxc方法的合理性,我最终到达了一个我不知道去哪里寻找的地步。 问题是主机看到的是我的usb设备,而不是容器。 我在容器的lxc配置文件中添加了以下内容: 当我在容器上尝试lsusb时,我得到: 鉴于主机给出: 这就是我要找的设备。 令人惊讶的是,容器可以看到设备: 我已经检查了libu

  • 我使用以下配置将lirc0绑定到容器中。 主机中/dev/lirc0的属性如下所示。 我使用lxc连接进入容器。容器中的属性与主机相同 但是无法打开。错误是“不允许操作”,我是容器中的主管(root)。 如何获得访问容器中的的权限?

  • 我正在ubuntu 14.04上试验lxc。为了管理几个lxc实例,我使用python3lxc。使用pyhthon3 lxc,我确实无法克隆现有容器: 相应地, /var/lib/lxc.vanilla_clone没有根基使用 很好。(python3和lxc克隆,两者都是从sudo开始的。)这是python3_lxc中的一个bug或限制,还是我遗漏了什么? 事后思考:使用lxc。容器create需

  • MinDoc 备份分为数据库备份和文件备份。 mysql 数据库的备份 如果你使用的是mysql数据库,可以有以下集中方式来备份你的数据库: mysqldump备份数据库* 在mysql命令行中执行如下命令来备份数据库: mysqldump --databases mindoc_db > mindoc_db.sql mysqldump 完整的参数是: mysqldump -u USER_NAME