根据马哥教育架构班课程第一周作业而来

题目要求

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

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

操作实践

  • KVM虚拟化
# 新建三个虚机,分别承担KVM两个节点和一个NFS主机的角色
# Node1: 192.168.10.101 KVM主机
# Node2: 192.168.10.102 KVM主机
# Stor1: 192.168.10.11 NFS主机,提供iso和kvm两个共享挂载点
# 在三台主机的/etc/hosts配置解析记录
192.168.10.101 node1
192.168.10.102 node2
192.168.10.11 stor1

# KVM主机的部署,Node1和Node2同步操作
# 最小虚拟化宿主环境,仅包括libvirt和qemu-kvm
yum group install -y virtualization-hypervisor
# 用于访问和控制虚拟机以及容器的接口,包括libvirt客户端
yum group install -y virtualization-platform
# 离线管理虚拟映像的工具,包括libguestfs和virtio-win
yum group install -y virtualization-tools
# 安装cockpit虚拟化管理界面
yum install -y cockpit-machines.noarch
systemctl reboot
# 配置共享存储池
mkdir -p /data/{iso,kvm}
virsh pool-create-as ISO netfs --source-host=stor1 --source-path=/data/iso --target=/data/iso
virsh pool-create-as KVM netfs --source-host=stor1 --source-path=/data/kvm --target=/data/kvm
# 在Node1上创建虚机
wget http://www.tinycorelinux.net/14.x/x86/release/CorePlus-current.iso -O /data/iso
virt-install --name tinycore --memory 256 --vcpus 1 --disk path=/data/kvm/tinycore.qcow2,size=1,cache=none --cdrom /data/iso/CorePlus-current.iso --os-variant centos7.0
# 动态迁移虚机
[root@node1 ~]# virsh list --all
Id Name State
---------------------------
- TinyCore shut off

[root@node1 ~]# virsh start Tinycore
Domain 'TinyCore' started
[root@node1 ~]# virsh migrate --live --verbose --undefinesource --persistent TinyCore qemu+ssh://node2/system
Migration: [100 %]
# 验证结果
[root@node2 ~]# virsh list
Id Name State
--------------------------
1 TinyCore running
  • 通过DockerFile部署容器
    [root@vms101 ~]# mkdir -p /opt/dockerfile/web/nginx
    [root@vms101 ~]# cd /opt/dockerfile/web/nginx
    [root@vms101 nginx]#
    cat > Dockerfile<<EOF
    #My Dockerfile
    FROM centos:7.9.2009
    MAINTAINER sujingxuan "sujx@live.cn"
    RUN yum makecache && yum install -y wget && rm -f /var/yum.repos.d/* && wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo &&yum install -y epel-release && sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo && sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo && sed -i "s@https\?://download.fedoraproject.org/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo &&yum makecache
    RUN yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop nginx
    RUN rm -f /usr/share/nginx/html/index.html && RUN echo "Docker YUM Nginx" >> /usr/share/nginx/html/index.html
    EXPOSE 80 443
    CMD ["nginx","-g","daemon off;"]
    EOF

    # 生成镜像
    root@vms101 nginx]# docker build -t sujx/nginx-yum-file:v1 ./
    [+] Building 160.1s (7/7) FINISHED ………………
    # 运行镜像
    [root@vms101 nginx]# docker run -d --name nginx-dfile -p 80:80 sujx/nginx-yum-file:v1
    7b1f4629ff4a451d95c0a5284a06633bb6ae4c66a27ffb28433563045bde2a51
    # 验证镜像
    [root@vms101 nginx]# curl 127.0.0.1
    Docker YUM Nginx