确保kvm已经安装成功,见 centos7安装kvm
本文基于docker安装,见 centos7安装docker
假设kvm主机为10.88.36.101
下载镜像
地址:https://hub.docker.com/r/unws/webvirtmgr/
docker pull primiano/docker-webvirtmgr
创建webvirtmgr用户和组
sudo groupadd -g 1010 webvirtmgr
sudo useradd -u 1010 -g webvirtmgr -s /sbin/nologin -d /data/vm webvirtmgr
sudo chown -R webvirtmgr:webvirtmgr /data/vm
其中:
组ID必须是1010,和镜像中组对应
目录/data/vm用于存放镜像中的sqlite数据文件
启动镜像
docker run -d -p 8080:8080 -p 6080:6080 --name webvirtmgr -v /data/vm:/data/vm primiano/docker-webvirtmgr
配置libvirtd
在kvm主机上,对libvirtd进行配置
cat /etc/default/libvirt-bin
start_libvirtd="yes"
libvirtd_opts="-d -l"
cat /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
listen_addr = "0.0.0.0" ## Address of docker0 veth on the host
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none"
auth_tls = "none"
其中:
listen_addr推荐0.0.0.0,监听所有网卡
unix_sock_group为kvm主机的libvirt/libvirtd组,可用cat /etc/group查看
cat /etc/libvirt/qemu.conf
# This is obsolete. Listen addr specified in VM xml.
# vnc_listen = "0.0.0.0"
vnc_tls = 0
# vnc_password = ""
重启libvirtd服务
systemctl restart libvirtd
配置webvirtmgr
使用docker命令登录到webvirtmgr容器中,修改admin用户密码
cd /webvirtmgr
python manage.py changepassword admin
也可以创建新超级用户
cd /webvirtmgr
python manage.py createsuperuser
切换至webvirtmgr用户
su - webvirtmgr -s /bin/bash
在webvirtmgr用户下,创建到kvm主机的免登录
ssh-keygen
touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config
chmod 0600 ~/.ssh/config
然后copy到kvm主机
ssh-copy-id root@10.88.36.101
登录webvirtmgr
打开浏览器,访问http://10.88.36.101:8080
输入用户密码即可
添加connection时,要保证已经配置容器中webvirtmgr用户到目标机用户的ssh免登录
问题
1.如果遇到虚拟机启动时报错:
qemu-kvm: Failed to start VNC server on `172.17.42.1:0': Failed to bind socket: Cannot assign requested addres
请将对应虚拟机XML配置中VNC部分改为:
<graphics type='vnc' port='-1' autoport='yes' listen='
0.0.0.0
'>
<listen type='address' address='0.0.0.0
'/>
</graphics>
2.如果遇到虚拟机启动时报错:
Unable to add port vnet0 to OVS bridge br0
请将对应虚拟机XML配置中网络部分改为:
<interface type='
bridge
'>
<mac address='52:54:00:fc:50:3e'/>
<sourcebridge
='br0
'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
3.如果遇到虚拟机无法根据dhcp获取ip,请检查kvm主机的iptables设置,必要时可以清空iptables规则