如何在CentOS 7再跑一个轻量的ubuntu

这个奇葩需求的由来时,某人要安装的某软件(TLJH)只支持ubuntu 20及之后版本而且没法走docker,而IT只给了Centos 7的虚机(配置2C4G)及远程ssh权限(有sudo)。解决思路就是,在Centos 7虚机里面再跑一个轻量级的虚拟环境lxc,其中运行ubuntu。稍微踩了一点坑,所以记录一下。对于老鸟就是四句话centos 7自带lxc太古老,ubuntu模板是12.04版本所以通过snapd追上新版本lxd安装lxd缺省模板有点大,可以用Proxmox的小模板节省空间用lxd的端口转发来发布服务下面是正文CentOS 7 通过 snapd/lxd 安装 ubuntu 22.04注:我们将此Centos 7称为宿主机或者宿主操作系统一、预更新centos7禁用selinuxsudo setenforce 0
perl -pi -e “s/SELINUX=enforcing/SELINUX=disabled/” /etc/selinux/config安装epel等sudo yum -y install epel-release 二、安装snapd并通过snap安装lxd安装snapdyum -y install snapd zstd
sudo systemctl enable --now snapd.socket将snap相关binary加入路径 . /etc/profile 等待几分钟 sndpd启动,去上个厕所接水sleep 300万一网络不好如果snapd报各种网络错误,设法启动一个代理设置snap用代理sudo snap set system proxy.http=“http://localhost:7890”
sudo snap set system proxy.https="http://localhost:7890"用snap装新版lxdsudo snap install lxd三、配置新的lxd注意将storage backend的类型选择用dir以保证性能,如果不需要最好关闭ipv6sudo which lxd init
sudo which lxc storage list查看网络,记下新建网络的网段及地址 sudo which lxc network list缺省lxc选择的22.04镜像有443M,展开之后1.1G,叔叔都不能忍。用proxmox的lxc image仅125M,展开之后587M照例还是可能需要网络加速wget -c http://download.proxmox.com/images/system/ubuntu-22.04-standard_22.04-1_amd64.tar.zst导入此镜像为本地可用cat >metadata.yaml <<EOF
architecture: “x86_64”
creation_date: date +%s
properties:
architecture: “x86_64”
description: “ubuntu 22.04 from proxmox”
os: “ubuntu”
release: “22.04”
EOF

tar -cvzf metadata.tar.gz metadata.yaml

sudo /var/lib/snapd/snap/bin/lxc image import metadata.tar.gz ubuntu-22.04-standard_22.04-1_amd64.tar.zst --alias ubuntu22_px以此镜像为基础创建并启动新的lxc取个名字并记住,比如u-tljhsudo /var/lib/snapd/snap/bin/lxc launch ubuntu22_px u-tljh四(a)、配置lxc及主机端口转发(简单版)此方式是使用单独的代理进程转发流量到lxc中,性能不如后面复杂版的nat模式,但是流量不大时要简单很多,建议采用配置u-tljh的网络并测试因为我们是自定义模板,网络没有自动配置,配置成dhcp并获取ip地址。以下通过lxc exec模式都是在宿主系统中运行lxc exec u-tljh – /bin/bash -c “cat >/etc/netplan/01-netcfg.yaml” <<EOF
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true
EOF

lxc exec u-tljh – netplan apply
lxc exec u-tljh – /bin/ip addr配置端口转发下面的取名port22是可以随意取的,仅仅用来记录此转发的名称,下面命令将宿主机的7922端口转发到u-tljh这个lxc的22端口lxc config device add u-tljh port22 proxy listen=tcp:0.0.0.0:7922 connect=tcp:127.0.0.1:22测试执行可通telnet localhost 7922

Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
^]
之后可以通过ssh到7922端口登录进去或者宿主机上执行下面命令进入lxc的ubuntu系统来安装各类专用程序如TLJH等lxc exec u-tljh – /bin/bash四(b)、配置lxc及主机端口转发(复杂版)进入此lxc执行后会进入lxc的root shell,提示变为 root@localhostsudo /var/lib/snapd/snap/bin/lxc exec u-tljh /bin/bash配置此lxc的网络,注意网段10.1.24改为之前记下来的lxc网段cat >/etc/netplan/01-netcfg.yaml <<EOF
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 10.1.24.10/24
nameservers:
addresses: [223.5.5.5]
routes:
- to: default
via: 10.1.24.1
EOF
netplan apply测试网络是否正常ping 223.5.5.5
exit安装完成这个ubuntu除了kernel还是虚机c7自带kernel,其它和独立系统基本没区别。之后就可以在里面正常执行ubuntu相关操作包括apt更新,安装TLJH了对应文件在centos 7里面也能找到目录,不过为了避免权限问题,还是建议通过ssh/scp等方式远程处理。主机到lxc网络端口转发centos 7 本机检查是否有端口限制,如果有也需要放开端口比如转发80/443去lxc记住把 10.105.192.182换成centos的外部地址 10.1.24.10换成lxc的ip以下命令把主机的80,443端口转发到lxc的80,443lxc network forward create lxdbr0 10.105.192.182
lxc network forward port add lxdbr0 10.105.192.182 tcp 80,443 10.1.24.10### 也可以编辑或者删除此转发lxc network forward edit lxdbr0 10.105.192.182
lxc network forward delete lxdbr0 10.105.192.182

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值