pve下虚拟机kvm转lxc docker转lxc 正在运行的虚拟机也可以, 以及lxc和docker kvm之间的对比

如果是linux 不需要显示屏显示的话,建议lxc运行。

# 对比

# lxc 和 虚拟机kvm对比

lxc没办法支持 macos win 以及黑群晖 爱快等非常规系统,支持常见linux类服务,支持嵌套docker
lxc 支持热备份
lxc 性能更高,几乎就是原声性能,尤其是是需要硬件的服务,例如 openwrt jellyfin 等差距很大
kvm多了一层转换,性能略低于lxc,部分情况下差距很大! 例如 openwrt

# lxc 和 docker 对比

lxc 和docker 差不多。
lxc 没有分层文件系统,在频繁需要修改东西上。比如数据库,openwrt这种经常修改配置的服务上,更适合。
lxc 可以在创建完成后 修改挂载 甚至不需要中断服务
lxc 在pve上 约等于一个独立的 linux虚拟机,比docker的更完整
pve上的lxc 在网络配置上可以直接使用桥接接入宿主机器物理网络
lxc 可以独立且简单方便的嵌套docker
docker 优势:更多的原始镜像的支持
但是在pve下 因为自带lxc的支持,所以能用lxc跑的 就不要麻烦docker了。 实要用docker 可以 lxc套docker 或者 pve直接装docker 都可以。

lxc 有一个小小的缺点: 无特权容器 外挂目录有权限问题要处理否则只能只读,特权容器跑docker有一点点问题,需要额外处理。你可以在本站找到相关教程。

# pve官网建议

原文

1
If you want to run application containers, for example, Docker images, it is recommended that you run them inside a Proxmox Qemu VM. This will give you all the advantages of application containerization, while also providing the benefits that VMs offer, such as strong isolation from the host and the ability to live-migrate, which otherwise isn’t possible with containers.

大概就是说 vm跑docker 迁移性和强制隔离效果更好。
实际使用中,你会发现 lxc套docker 一个lxc 跑一个alpine 套1-N个更方便。一些家用必须有的服务,比如 ipsec nginx反代

# 关于lxc 导入的格式

就是带权限的压缩包,比如 tar gz zst等格式。所以 无论原始是什么,我们只要最终 打包文件就可以了。

# 虚拟机

虚拟机如果可以关机的话,直接转换原来磁盘文件为img即可,qcow2 也可以直接在pve下挂载,下面以img为例。 其他格式 包括 vmware 和 virtualbox的 都可以转换。

1
2
3
4
5
6
7
cd /var/lib/vz/template/cache
mkdir op
root_partition=$((`fdisk -l op.img | grep .img2 | awk '{print $2}'` * 512))
mount -o loop,offset=$root_partition op.img /var/lib/vz/template/cache/op
cd op && tar zcf /var/lib/vz/template/cache/op.tar.gz * &&cd ..     # 打包至PVE中LXC模板路径
umount op && rm -rf op
#rm -rf 固件名称.img

最终拿到压缩包 op.tar.gz,然后就可以直接在pve 创建ct容器了。

如果是 openwrt等系统,可能还需要另外处理一下。 参考:https://dev.leiyanhui.com/openwrt/pve-lxc-install-op/

# 正在运行的虚拟机

如果是pve的话,直接备份,然后 再导入到虚拟机,然后再处理磁盘即可。

参考:https://dev.leiyanhui.com/openwrt/pve-lxc-install-op/

# docker的话,直接导出

1
2
docker save -o centos. tar centos:latest #将centos:latest 镜像导出 为centos. tar
docker export debian-go-codeserver-git > debian11-for-sshd.tar  # 将正在运行的容器 不保留历史记录 直接导出

部分容器 导出的后的 压缩包不能直接导入到lxc,建议 lxc 嵌套docker

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计