本文阐述的镜像制作方法, 简称本方法。主要是针对国产化操作系统的镜像制作,制作出来的镜像供国产化云平台使用,也可以在其他云平台使用。镜像制作过程大致包含以下几个步骤:
1. 获取操作系统文件
2. 使用国产操作系统创建虚拟机
3. 系统安装
4. 网络配置
5. 云平台所需软件包安装
6. 镜像压缩及保存
系统不同,设置默认用户、系统分区、网络配置的顺序略有不同,以实际操作为准。本文以统信UOS 20 sp1版本为例,讲述国产云平台虚拟机的镜像制作方法。
1. 获取操作系统文件
获取操作系统文件需注意根据系统cpu架构选择对应架构的操作系统。目前国产化支持的架构有ARM、X86、MIPS、Alpha, 其中ARM/MIPS/Power/ALPHA均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构。本文所述的国产化云平台采用的是寄居架构的虚拟化技术,即在操作系统之上安装和运行虚拟化程序,这样虚拟机的系统依赖于物理机的操作系统虚拟机的操作系统需与物理机兼容,如果架构不一致,无法正常运行。
2. 使用国产操作系统创建虚拟机
加载操作系统的安装CD或者DVD ISO文件。如下图所示,安装方式选择本地镜像源。
选中所需要的ISO文件为启动镜像,需设置系统版本。
设置内存、CPU和虚拟机根磁盘的大小。内存建议1024 即1G, cpu建议1, 根磁盘建议20G, 磁盘类型设置为VirtIO。 这里设置的内存、cpu和根磁盘大小就是云平台虚拟机支持的最小配置,所以不建议太大。不然会造成诸多资源的浪费。
对虚拟机进行自定义配置。未其配置输入(键盘、鼠标和tablet),vnc以及video 、设置启动顺序,如下图
设置虚拟机的启动顺序为从虚拟光驱引导启动:
设置完毕后点击“Begin Installation”后开始安装。
3. 系统安装
以统信uos系统制作为例:
Uos系统设置主要是指系统语言设置、安装环境选择、安装位置选择等。出现引导界面,选择安装uos
等待加载文件,可能需要1分钟左右,稍作等待。
选择安装语言,建议选择简体中文(银河麒麟由于编解码问题建议选择英文):
根据需要选择安装基本环境。云平台虚拟机建议选择最小安装或图形化服务器。 最小 化 安装 就是, 安装 最基本的程序,使之可以运行,但有些扩展模块不 安装 。图形化服务器预装了图形化界面gui以及服务器需要的必要软件。桌面服务器供终端使用,预制了gui界面。
到安装位置处,选择手动安装。添加分区。选择盘,点击右侧加号开始设置分区。
选择分区属性。文件系统、挂载点以及大小。大小可以手动输入。设置完毕后点击新建。
最终设置分区如下图所示。Vda1类型 为ext4,挂载点为/boot, 建议大小300MB。 Vda2类型 为efi, 建议大小300MB。 Vda3类型 为交换空间,
, 建议大小2048MB 。 Vda4类型 为ext4, 挂载/ 。交换空间可以不要,根分区必须在最后,方便云平台的虚拟机创建后自动进行根目录扩容。分区类型建议不要选择lvm, 选择lvm后需要手动进行磁盘扩容,适合少量的虚拟机。国产系统多采用UEFI引导系统需要增加分区/boot/efi分区。
安装位置确定后选择开始安装。
等待安装完成。
安装完成,点击立即体验, 系统开始重启。
关闭虚机。修改启动方式为从磁盘启动,再启动虚机
选择时区
设置登录用户名和密码。
等待优化系统配置
之后使用设置的用户名密码登录。
登录系统后需进行系统配置,检查防火墙和selinux是否关闭,如果没有关闭需关闭。关闭命令:
sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
为保障虚拟机可通过密码访问,需修改ssh配置文件。允许密码访问和允许root管理员登录。修改/etc/ssh/sshd_config 修改以下参数后重启sshd服务。
PermitRootLogin yes
PasswordAuthentication yes
4. 网络配置
为下一步安装软件的需要,虚机需要联通网络,所以需要配置网络,主要包括配置 ip地址、网关、掩码和dns服务器。UOS启动后自动获取了地址和DNS服务器。如下图。如果虚机不能上网, 可以跳过本步骤。配置成功的网络如下图:
Ping 是否通
5. 安装云平台软件
云平台需要的软件有cloud-init,cloud-guest-utils 和qemu-guest-agent
(1)镜像源设置
#统信uos镜像源地址:
#修改/etc/apt/sources.list文件,
deb [by-hash=force] http://uos.packages.chinauos.com/uos eagle main contrib non-free
#执行update命令
apt update
(2)安装磁盘扩容服务
cloud-guest-utils包含了虚拟机启动阶段自动根分区的软件'growpart',该软件可被cloud-init调用完成虚拟机根分区的自动扩展。centos/rhel系统安装 cloud-utils-growpart;debian/ubuntu系统安装cloud-guest-utils。
安装命令:
apt install -y cloud-guest-utils
(3)安装cloud-init
cloud-init是linux的一个工具,当系统启动时,cloud-init可从nova metadata服务或者config drive中获取元数据,完成包括但不限于下面的定制化工作:
1. 设置默认语言环境
2. 设置主机名
3. 添加ssh键到.ssh /authorized_keys
4. 设置用户密码
5. 配置网络
6. 安装软件包
安装命令:
apt install cloud-init -y
#cloud-init配置(修改/etc/cloud/cloud.cfg):
disable_root: true
ssh_pwauth: 1
注: cloud-init版本至少为0.7.9, 否则在云平台无法自动进行网络配置等。
(4)安装qemu-guest-agent
QEMU Guest Agent是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),用它来辅助Hypervisor实现对Guest的管理。QEMU为宿主机和虚拟机提供了一个数据通道(channel),这个通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix
socket文件。宿主机与虚拟机内的qga通讯就扩展了对虚拟机的控制能力,例如在宿主机上获取虚拟机的ip地址等。
安装命令:
apt install qemu-guest-agent -y
软件安装完毕后。需清理虚拟机的网卡信息,否则使用该镜像创建虚拟机时cloud-init检测到网络已创建,无法调用相关软件分配ip地址等。虚拟机上执行以下命令。
#删除网卡相关信息:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
#删除网卡配置的静态IP的信息以及/etc/reslov.conf内的信息
6. 压缩镜像
qcow2的镜像具有更高的压缩率。通过压缩可使镜像更小,节约存储空间,方便传输和存储。
虚机关闭后执行以下命令:
#执行sysprep,清理虚拟机临时及缓存文件
virt-sysprep -d 虚机名
其中虚机名可通过virsh list –all查看
#压缩镜像
virt-sparsify --compress before.qcow2 after.qcow2
压缩后的镜像的保存使用。
从零开始带您一步步搭建自己的基于java和tomcat的web服务器。总体步骤如下:?1、拉取ubuntu操作系统;
?2、在ubuntu上安装和配置java的jdk,用的1.8版本,商业免费的哦
?3、在ubuntu上安装和配置tomcat,用的9版
?4、测试服务器是否正常,并把自己的web应用拷贝的容器中
?5、把配置好的web服务器和自己的web应用打包成镜像
?6、把镜像复制到其它机器上运行
?
步骤1:为我们的容器创建第一个镜像# 以 centos 镜像作为基础镜像,我们启动自己的容器并在其中执行/bin/bash命令
# 注:-t -i 参数用于创建一个虚拟的命令行。
sudo docker run -t -i centos /bin/bash
现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:
yum -y update # 更新软件包
yum install which # 安装which命令
yum install git # 安装Git
安装完成后,按 Ctrl + d 来退出容器的命令行。
# 执行sudo docker ps -a,可以看到被我们终止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我们所做的改变提交到一个新的容器:
# 这里我们创建一个自己的基础容器,容器中安装好了文章中所需的常用工具。读者的容器 id 可能与文章中的有所不同,以上一步 docker ps -a 的结果为准。
sudo docker commit da90 custom/base
容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,再来创建一个新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步骤2:创建新的容器,并安装 apache
# 以 custom/base 容器为基础,运行一个新的容器。
sudo docker run -t -i custom/base /bin/bash
# 安装 httpd
yum install httpd
步骤3:再次提交新的容器
按 Ctrl + d 来退出容器的命令行,然后执行命令:
# 这个命令会把步骤2中我们安装 httpd 带来的改变提交到新的名为 custom/httpd 的容器镜像中。你的容器 id 可能会和文章中有所不同,以 sudo docker ps -a 命令的结果为准。
sudo docker commit aa6e2fc0b94c custom/httpd
你应该已经发现了,我们创建了一个带有 http 服务器并可以复用的容器镜像。你可以根据这种思想,为自己所需的每个组件都创建一个容器,然后把这些容器复用于开发环境或者生产环境。
步骤7:运行 http 服务器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 参数把主机共享给虚拟机的一个卷挂载到容器中
# -p forward VM port 80 to container port 80VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 启动 Apache
apachectl -k start
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)