如何更新Debian或Ubuntu Linux容器(lxc)VM

时间:2020-01-09 10:39:47  来源:igfitidea点击:

在使用LXC(Linux容器)在Ubuntu LTS上运行的虚拟化系统时,
如何从主机操作系统更新所有基于Ubuntu或Debian Linux的来宾容器VM?
容器不是新技术。
大量类似Unix的系统已经开发了基于容器的强大虚拟化解决方案,例如FreeBSD jails,OpenVZ,Solaris Zones等。

LXC是非常快速高效的虚拟化。

OS内核(主机)为不同的运行进程提供了不同的系统视图。
这也称为CPU和其他资源的沙箱或隔离。
这对于提高服务器和应用程序的安全性和效率很有用。

安全性建议:使Linux内核和软件保持最新

应用安全补丁是维护Linux服务器的重要组成部分。

Linux提供了所有必要的工具来保持您的系统更新,并且还允许在版本之间轻松升级。
您可以使用RPM软件包管理器(例如yum命令和/或apt-get命令)来应用所有安全更新:

[www-container]# yum update

或者

[www-container]# apt-get update && apt-get upgrade

列出系统上现有的容器

在主机上执行以下命令:

# lxc-ls -1
# lxc-ls

输出示例:

dnsvm     wwwvm    mysqlvm        memcache

使用lxc-attach命令将更新从主机应用到Linux容器

基于Debian/Ubuntu的LXC来宾vm的语法如下:

[hostOS]# lxc-attach -n VM-NAME-HERE apt-get update
[hostOS]# lxc-attach -n VM-NAME-HERE apt-get -y upgrade

要在mysqlvm上运行命令,请执行:

[hostOS]# lxc-attach -n mysqlvm apt-get update
[hostOS]# lxc-attach -n mysqlvm apt-get -y upgrade

基于CentOS/RHEL/Fedora Linux的LXC来宾vm的语法如下:

[hostOS]# lxc-attach -n VM-NAME-HERE yum update -y

要在wwwvm vm上运行命令,请运行:

[hostOS]# lxc-attach -n wwwvm yum update -y

用于更新所有Debian/Ubuntu LXC虚拟机的示例Shell脚本

#!/bin/bash
# Purpose: Update all lxc vms
# Note: Tested on Ubuntu LTS only
# Author:  <www.theitroad.local>, under GPL v2+
# ------------------------------------------------------
 
# Get the vm list
vms="$(lxc-ls --active)"
 
# Update each vm
update_vm(){
        local vm=""
        echo "*** [VM: $vm [$(hostname) @ $(date)] ] ***"
        /usr/bin/lxc-attach -n "$vm" apt-get -- -qq update
        /usr/bin/lxc-attach -n "$vm" apt-get -- -qq -y upgrade
        /usr/bin/lxc-attach -n "$vm" apt-get -- -qq -y clean
        /usr/bin/lxc-attach -n "$vm" apt-get -- -qq -y autoclean 
        # Note for RHEL/CentOS/Fedora Linux comment above two line and uncomment the following line #
        # lxc-attach -n "$vm" yum -y update 
        echo "-----------------------------------------------------------------"
}
 
# Do it
for v in $vms
do
   update_vm "$v"
done

如下运行:

# ~/bin/lxc-update-vm.sh