kvm虚拟化&docker容器

一、在两台服务器上安装kvm虚拟化,把其中一台的虚拟机迁移到另一台。

环境:二台Ubuntu20.04

1.安装:

apt update 
apt -y install qemu-kvm virt-manager libvirt-daemon-system

Ubuntu 上管理工具 virt-manager

root@ubuntu20:~# export DISPLAY=192.168.1.120:0.0  #192.168.1.120地址为windows地址
root@ubuntu20:~# virt-manager

虚拟机配置文件路径:/etc/libvirt/qemu/

镜像路径:/var/lib/libvirt/images/

2.迁移:

显示虚拟机信息

root@kvm:/var/lib/libvirt/images# virsh  dominfo rocky8-2 
Id:             3
Name:           rocky8-2
UUID:           89efb151-9d12-47d2-87fa-0b78107c7706
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       71.2s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      enable
Managed save:   no
Security model: apparmor
Security DOI:   0
Security label: libvirt-89efb151-9d12-47d2-87fa-0b78107c7706 (enforcing)

查看rocky8-2的磁盘文件路径

root@kvm:/var/lib/libvirt/images# virsh  dumpxml rocky8-2 |grep "source file"
      <source file='/var/lib/libvirt/images/rocky8.qcow2' index='1'/>
 

 停止虚拟机

root@kvm:/var/lib/libvirt/images# virsh  shutdown  rocky8-2 
Domain rocky8-2 is being shutdown

拷贝配置文件和镜像文件到目标主机

root@kvm:~# scp /etc/libvirt/qemu/rocky8-2.xml  192.168.1.152:/etc/libvirt/qemu/

root@kvm:~# scp /var/lib/libvirt/images/rocky8-2.qcow2   192.168.1.152:/var/lib/libvirt/images/
 


目标主机重启 libvirtd服务

root@kvm02:/var/lib/libvirt/images# systemctl restart libvirtd.service 
root@kvm02:/var/lib/libvirt/images# virt-manager

启动 提示磁盘文件不存再,因为rocky8-2是克隆的,把rocky8的镜像文件拷贝到目标主机,重启服务后可以启动系统,迁移成功

root@kvm:~# scp /var/lib/libvirt/images/rocky8.qcow2    192.168.1.152:/var/lib/libvirt/images/


二、手动制作一个容器镜像创建成容器并正常运行。

1.使用dockerfile方式制作rocky镜像:

cat Dockerfile 
FROM  rockylinux:9.2.20230513
LABEL author=luo 
LABEL version=v2.0
LABEL multi.description="test" multi.date="20230701"

RUN    yum install -y  vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget   bzip2 lsof zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel \
   && yum clean all \
   && rm -f /etc/localtime \
   && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
   && rm -rf /var/cache/dnf/* \
   && groupadd -g 88 www  \
   && useradd -g www -u 88 -r -s /sbin/nologin -M -d /home/www www


CMD [ "/etc/hosts" ]
ENTRYPOINT [ "tail","-f"  ]

RUN 是制作镜像时执行的命令,CMD 是运行容器时所执行的命令,当有多个CMD指定时只有最后一个生效。

dockerfile 同时有cmd 和entrypoint指令时,cmd会作为entrypoint的参数, 如果docker run 后面又参数会覆盖cmd的参数内容

CMD 添加文件会自动解压,copy不会解压

docker build . -t rockylinux:9.2-v20    #-t指定制作镜像的名字
 

运行容器

docker run -it    rocky:9.2-v22
 

  docker run -it rocky:9.2-v22 /etc/shadow

ctrl+p+q 把容器放到后台运行,或者docker run 添加参数-d

制作镜像报错: 

所有cat -A  查看有提示符号,手动修改文件后运行成功

  

当只有 ENTRYPOINT 指令时 ,docker run 运行时会将参数会进行追加

ENTRYPOINT [ "tail","-f","/etc/hosts"  ]

2. 基于基础镜像制作nginx镜像

准备nginx配置文件、index.html测试文件和nginx包

Dockerfile文件

FROM rockylinux:9.2-base 
LABEL author=luo
ENV NGINX_VERSION=1.24.0
ADD nginx-${NGINX_VERSION}.tar.gz /usr/local/
RUN yum -y install gcc make gcc-c++ libtool pcre-devel zlib-devel openssl-devel && \
	cd /usr/local/nginx-${NGINX_VERSION} && \
	./configure --prefix=/apps/nginx   && \
	make && make install 
COPY nginx.conf /apps/nginx/conf/
COPY index.html /data/html/
VOLUME ["/data/html"]
EXPOSE 80
CMD ["/apps/nginx/sbin/nginx", "-g","daemon off;"]

build镜像

运行容器:

docker run -itd  -p 172.22.77.50:9952:80  nginx:1.24.0-v1 


访问页面测试正常

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值