链接:https://hub.docker.com/r/unws/webvirtmgr/
Webvirtmgr Dockerfile
拉起镜像并创建webvirtmgr用户和组(注意uid和guid必须为1010和容器内保持一致)
docker pull primiano/docker-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
运行容器
docker run -d -p 8080:8080 -p 6080:6080 --name webvirtmgr -v /data/vm:/data/vm primiano/docker-webvirtmgr
安装完成后,需要进入容器,执行:
sed -i 's/172.17.42.1/0.0.0.0/g' /webvirtmgr/vrtManager/create.py
修改后才能用noVNC连接。
在被管理的宿主机上做如下配置
libvirtd configuration on the host
1、不存在则手动创建
cat /etc/default/libvirt-bin start_libvirtd="yes" libvirtd_opts="-d -l"
2、其中:
listen_addr推荐0.0.0.0,监听所有网卡
unix_sock_group为kvm主机的libvirt/libvirtd组,可用cat /etc/group查看,默认管理用户为root,如宿主机使用非root用户,可以修改unix_sock_group = "对应用户组"
cat /etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 listen_addr = "172.17.42.1" ## Address of docker0 veth on the host unix_sock_group = "libvirtd" unix_sock_ro_perms = "0777" unix_sock_rw_perms = "0770" auth_unix_ro = "none" auth_unix_rw = "none" auth_tcp = "none" auth_tls = "none"
3、#号代表需要注释的地方
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 = ""
4、重启libvirtd服务
systemctl restart libvirtd
5、
配置webvirtmgr
使用docker命令登录到webvirtmgr容器中,修改admin用户密码,初始密码为:admin/1234
cd /webvirtmgr python manage.py changepassword admin
6、切换至webvirtmgr用户
su - webvirtmgr -s /bin/bash
7、在webvirtmgr用户下,创建到kvm主机的免登录
ssh-keygen touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null" >> ~/.ssh/config chmod 0600 ~/.ssh/config
8、然后copy到kvm主机
ssh-copy-id root@192.168.122.100
登录webvirtmgr
打开浏览器,访问http://192.168.122.100:8080
输入用户密码即可
添加connection时,要保证已经配置容器中webvirtmgr用户到目标机用户的ssh免登录
注意:防火墙需要开放8080和6080,如开放端口后通过novnc连接kvm虚拟机提示连接超时,可尝试先关闭防火墙后重启容器再测试下是否可以正常通过novnc连接
参考:https://www.jianshu.com/p/8be6b46843e5
https://blog.csdn.net/rariki/article/details/85156633