docker启动centos 并安装kvm 创建虚拟机

发布时间 2023-07-06 16:42:29作者: 一条菜鸡儿
1 创建centos 基础镜像

拉取centos基础镜像

docker pull centos:latest

启动容器:使用 /usr/sbin/init 方式,否则容器中不能运行 systemctl 命令
映射两个端口:用于ssh 连接容器,和远程vnc连接容器中的虚拟机

docker run -itd   --privileged  -p 20022:22 -p 25900:5900 --name myCentos centos /usr/sbin/init

创建完成后:使用以下命令进入容器

docker exec -it myCentos /bin/bash

解决从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL不能准备内部镜像列表

yum install vim 
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                                           
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

执行下列代码

cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
 
yum makecache
yum update -y
yum -y install vim
2 基于KVM的虚拟机创建

验证是否开启虚拟机(有输出带 vmx参数证明已经开启虚拟机 )

grep -E "vmx|svm" /proc/cpuinfo

安装KVM工具包

yum install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install -y
systemctl start libvirtd #启动
systemctl enable libvirtd #开机自启
ip a #查看libvirtd是否创建 virbr0 网络

把当前容器打包成镜像


创建文件夹用于保存镜像文件

mkdir -p /data/iso

拷贝宿主机iso镜像到容器的/data/iso/文件中

docker cp /home/uniontechos-desktop-20-professional-1050-amd64-k510.iso  centos-kvm:/data/iso/

创建磁盘

ls /var//lib/libvirt/images/ #默认保存虚拟机磁盘的路径
#创建一个格式为raw大小为50G的裸磁盘
qemu-img create -f raw /var/lib/libvirt/images/uos-1050.raw 64G
Formatting '/var/lib/libvirt/images/CentOS-7-x86_64.raw', fmt=raw size=53687091200 

#创建一个格式为raw大小为50G的稀疏格式磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/uos-1050.qcow2 64G
Formatting '/var/lib/libvirt/images/CentOS-7-x86_64.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off

创建NAT网络虚拟机

virt-install --virt-type kvm --name uos --ram 2048 --vcpus 2 --cdrom=/data/iso/uniontechos-desktop-20-professional-1050-amd64-k510.iso --disk path=/var/lib/libvirt/images/uos-1050.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

使用 VNC Viewer 连接 (ip+容器对外映射的端口 -p25900:5900 宿主机ip+25900)报错
image
解决方法
进入设置(鼠标放在 VNC Viewer 界面顶部的一条白色的线上,设置界面就会下拉显示),把 General 中的 Picture quality 设置为 High 即可。
image

参考网站
kvm创建虚拟机
https://www.cnblogs.com/eddie1127/p/12002826.html
解决 yum -y install xx 报错
https://blog.csdn.net/qq_43035350/article/details/126290012
解决 Docker容器centos、unbuntu 无法使用 systemctl 命令
https://blog.csdn.net/weixin_40929263/article/details/104553202