虚拟化技术与应用(KVM、Docker、DevOps)

   日期:2024-12-28     作者:d5es7       评论:0    移动:http://mip.riyuangf.com/mobile/news/11191.html
核心提示:1、KVM环境配置安装 2、KVM可视化管理工具 3、远程连接(VNC) 4、网络虚拟化技术(KVM虚拟机网络配置)

1、KVM环境配置安装

2、KVM可视化管理工具

3、远程连接(VNC

4、网络虚拟化技术(KVM虚拟机网络配置

5、虚拟机快照

6、虚拟机迁移

前提:此处的 KVM 虚拟机迁移,是指在 KVM 所属虚拟机之间迁移 KVM,而非是在 KVM 内部迁移由 KVM 所创建的虚拟机

一、准备目标虚拟机(要迁移到的虚拟机
  1. 使用 VMware 创建一台虚拟机(不是在 KVM 内创建虚拟机
  2. 配置 KVM 环境:参考 “《1. KVM 安装、配置及虚拟机创建》” 中的 “一.1 ~ 一.9”
  3. 新建虚拟机存储盘目录:mkdir /opt/images
  4. 保持目标虚拟机开机状态

1、部署OpenStack

2、制作镜像

3、OpenStack存储

4、OpenStack网络模式

5、虚拟机迁移

0、Docker常用命令

(1)、基础命令
  1. 查看版本信息docker version
  2. 查看系统信息docker info
  3. 查看帮助命令docker --help
  4. 卸载 Docker
    1. 卸载依赖yum remove docker-ce docker-ce-cli containerd.io
    2. 删除资源rm -rf /var/lib/docker
  5. 重启 Dockersystemctl restart docker

(2)、镜像命令
  1. 查询本地已有镜像docker images [参数]
    1. -q:显示ID。如:docker images -q
    2. -a:显示所有,与 docker images 效果相同。如:docker images -a
  2. 查询商店中相关软件docker search
    1. :docker search mysql
  3. 下载镜像docker pull [镜像名:版本号]
    1. 版本号可不加,不加的情况下默认下载最新版本
      1. docker pull centos
      2. docker pull tomcat:9.0
  4. 删除镜像
    1. 删除多个镜像docker rmi -f [镜像 ID 1] [镜像 ID 2] ...。如:docker rmi -f 127.0.0.1:5000/registry:latest
    2. 删除全部镜像docker rmi -f $(docker images -qa)
  5. 给 Docker 镜像打标签docker tag [镜像的原名称][:镜像版本] [镜像的新名称][:镜像版本]。如:docker tag ubuntu:latest myubuntu:v1.0
    1. :[:镜像的版本标签] 为可选项,不写时默认为 latest
    2. 标记本地镜像,将其归入某一仓库:docker tag [镜像名 / 镜像 ID] [主机名 / IP 地址]:[端口]/[镜像名]。如:将 ID 为 0030ba3d620c 的镜像标记为 0030ba3d620c 127.0.0.1:5000/registry:latest:docker tag 0030ba3d620c 127.0.0.1:5000/registry:latest
  6. 将本地的 Docker 镜像上传到 Docker 仓库docker push [镜像标签]。如:docker push 127.0.0.1:5000/registry:latest
  7. 使用 Dockerfile 创建镜像(不要漏掉最后的 “.”docker build [参数] [镜像名称][:镜像版本] .
    1. -f:指定要使用的 Dockerfile 路径。如:docker build -f /opt/nginx/Dockerfile .
    2. -t:指定镜像的名称和标签。如:docker build -t "genshin/nginx:v1" .

(3)、容器命令

PS:有了镜像才能创建容器

  1. 新建容器并启动:docker run [可选参数] [镜像名]
    1. --name=Name:容器名字
    2. --privileged=true:以 root 账户方式运行容器
    3. --restart:当容器停止运行后的处理逻辑
      1. always:容器在停止后总是重启。如:--restart=always
      2. on-failure:容器在停止后只有在前一次运行失败时才重启
      3. no:容器在停止后不重启
    4. -d:以后台方式运行
      1. 使用后台启动,就必须有一个前台进程,Docker 发现没有应用,就会自动停止。解决方法:使用 docker run -d -it centos /bin/bash 命令启动
    5. -e:设置环境的值。如:-e MYSQL_ROOT_PASSWORD=guojinchao:设置 MySQL 的 root 用户密码
    6. -i:以交互模式运行容器,通常与 -t 同时使用
    7. -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
    8. -p(小写: 指定容器的端口
      1. -p 主机端口:容器端口
        1. 主机端口:外部访问端口,会与服务器中其他程序的端口冲突。如访问 Tomcat 的默认页面的端口
        2. 容器端口:启动的容器在 Docker 中运行的端口号,不会与服务器中其他程序的端口冲突,仅会与 Docker 中其他容器的端口冲突
      2. -p 容器端口
    9. -P(大写:随机指定端口
    10. -v [宿主机数据卷目录]:[Docker 容器内对应目录]:挂载数据卷,方便部署,让数据持久化
      1. 运行 centos 操作系统镜像:docker run -it centos /bin/bash
      2. docker run --name=myTomcat -d -p 8080:8080 tomcat:9.0
      3. docker run -di --name=myTomcat -p 8080:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:9.0
      4. 启动 Registry 容器: docker run -d -p 5000:5000 --restart=always --name registry -v /data/docker-registry:/var/lib/registry registry:latest
    11. 如果在安装时指定了版本,在此处也必须指定版本,不然会重新下载最新版本
  2. 列出所有正在运行的容器docker ps -a
    1. 无参数:查看正在运行的容器
    2. -a:查看曾经运行过的容器。注:如果遇到之前启动的容器忽然消失,重新新建容器提示名称已存在,启动容器提示无此名称,则可以用此参数进行查看
    3. -n=?:显示最近创建的容器
    4. -q:只显示容器的编号
  3. 进入当前正在运行的容器
    1. 进入容器并开启一个新终端docker exec -it [容器 ID / 容器名称] /bin/bash。如
      docker exec -it myTomcat /bin/bash​
    2. 进入容器正在执行的终端:docker attach [容器 ID / 容器名称]
  4. 退出容器
    1. exit:容器停止并退出
    2. Ctrl + p + q:容器不停止退出(有时需要等一会
  5. 删除容器
    1. 删除指定的容器,容器正在运行则不能删除docker rm [可选参数] [容器 ID / 容器名称]
      1. -f:强制删除(可删除运行中的容器)。如:docker rm -f  ubuntu2
      2. -v:删除容器中的数据卷
    2. 删除所有容器docker ps -a -q|xargs docker rm
      1. docker ps -a -q:列出所有容器的 ID
      2. xargs:会将上述容器的 ID 作为参数传递给 `docker rm` 命令
  6. 启动和停止容器的操作
    1. 启动容器docker start [容器 ID / 容器名称]。如
      ​docker start myTomcat
    2. 重启容器docker restart [容器 ID / 容器名称]。如
      ​docker restart myTomcat
    3. 停掉容器docker stop [容器 ID / 容器名称]。如
      docker stop myTomcat​
    4. 杀掉容器docker kill 容器ID
  7. 查看日志:docker logs -tf --tail 10 [容器 ID / 容器名称]
    1. -tf:显示全部
    2. --tail number:显示指定条数
  8. 查看容器中进程信息docker top [容器 ID / 容器名称]。如:docker top myTomcat
  9. 查看容器的配置信息docker inspect [容器 ID / 容器名称]。如:docker inspect ubuntu1
    1. 查看容器的网络信息docker inspect -f {{.NetworkSettings}} [容器 ID / 容器名称]。如:docker inspect -f {{.NetworkSettings}} ubuntu1
  10. 容器与主机间文件的互相复制
    1. 从容器内复制到主机docker cp [容器 ID / 容器名称]:[容器内路径] [主机路径]。如:​docker cp mysql:/etc/mysql/my.cnf /etc/
    2. 从主机复制到容器内docker cp [主机路径] [容器 ID / 容器名称]:[容器内路径]。如:​docker cp /etc/my.cnf mysql:/etc/mysql/
  11. 将容器内容导出为一个 tar 文件至服务器当前目录docker export [容器 ID / 容器名称] > [文件完整目录.tar]。如:docker export b786ab1aed8c > /opt/ubuntu:v1.tar
  12. 重命名容器docker rename [原容器 ID / 容器名称] [新容器名称]。如:docker rename ubuntu1 ubuntu2
  13. 查看容器的文件变更docker diff [容器 ID / 容器名称]。如:docker diff ubuntu2
(4) 、在容器中修改文件

1、Docker的安装

二、常见错误
问题:执行 Docker 命令时,报错 “docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (3f2bbdbc27f3535c35b1f74b12b7e026dd3eb19d25aab213295b455bdc4fc37c):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
​ (exit status 1)).”
问题原因:可能是在 Docker 运行期间修改了 IP 配置导致的
解决方法:重启 Docker:systemctl restart docker

2、Docker镜像使用

3、Docker容器使用

4、Docker管理平台

5、Docker上安装Tomcat容器

PS:以安装 Tomcat 9.0 为例
一、安装
拉取 Tomcat 镜像docker pull tomcat:9.0
查看安装的 Tomcat 镜像docker images
创建 Tomcat 挂载目录mkdir -p /usr/local/webapps
授权挂载目录chmod -R 777 /usr/local/webapps
启动 Tomcat 容器,并挂在数据卷docker run -di --name=myTomcat -p 8080:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:9.0

二、配置以便访问首页
进入 Tomcat 容器docker exec -it myTomcat /bin/bash
将 webapps.dist 目录中的内容复制到 webapps 目录中cp -r webapps.dist/* webapps/
验证:在本地访问 Tomcat 首页:http://[IP]:[端口号]。如:http://192.168.128.10:8080

三、部署 War 包
将打包好的 War 包,上传到服务器的 /usr/local/webapps 目录下
验证:在本地访问项目首页:http://[IP]:[端口号]/[War 包名]。如
​上传的 War 包为 car.war,则应访问的地址是 http://192.168.128.10:8080/car

6、Dockerfile服务

1、DevOps安装、部署持续集成

二、安装 MySQL,配置数据库
参考 “”

五、安装 Tomcat
参考 “《在 Docker 上安装 Tomcat 容器》” 中的 “一、二”

2、安装部署Jenkins服务

1. 单节点部署

前提

  1. CentOS 镜像版本CentOS-7-x86_64-Minimal-2009.iso

一、安装环境准备

  1. 虚拟机配置最低要求
    1. CPU:4 核
    2. 内存:8 GB
    3. 磁盘:30 GB
  2. 配置虚拟化引擎(如果虚拟机处于运行状态,需要先关机:在左侧列表中,选中对应的虚拟机——右键——设置——在 “虚拟机设置” 弹窗中,选择 “硬件” 标签页——选中 “处理器”——在右侧的 “虚拟化引擎” 中勾选第一项 “虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)”
  3. 配置 IP 地址
    1. 进入图形化界面进行配置:nmtui
    2. 重启网络服务:systemctl restart network
    3. 验证:ip a
  4. 安装 vim:yum install -y vim
  5. 修改主机名:hostnamectl set-hostname train。注:此步需重启,但可与后续操作一起,进行一次重启即可
    1. 验证:hostname
  6. 关闭防火墙
    1. 暂时关闭:systemctl stop firewalld
    2. 永久关闭:systemctl disable firewalld
    3. 验证:systemctl status firewalld
  7. 关闭 NetworkManager
    1. 暂时关闭:systemctl stop NetworkManager
    2. 永久关闭:systemctl disable NetworkManager
    3. 验证
      1. 查看服务状态:systemctl status NetworkManager
      2. ping 外网能通:ping www.baidu.com
  8. 关闭 SELinux
    1. 暂时关闭:setenforce 0
    2. 永久关闭:sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    3. 验证:getenforce
  9. 建立 IP 地址映射:vim /etc/hosts。在末尾添加如下配置

192.168.128.150 train

    1. 验证:ping train
  1. 拍摄快照:完成环境准备

二、网络源配置

  1. 将默认 yum 源替换为阿里源:curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  2. 更新 yum 源:yum -y update
  3. 安装 OpenStack 源:yum install -y centos-release-openstack-train
  4. 修改为国内的阿里源:vim /etc/yum.repos.d/CentOS-OpenStack-train.repo
    1. 显示行号::set nu
    2. 删除第 8 行,替换为如下配置

三、一键安装 OpenStack 系统

  1. 安装 packstack 软件包:yum install -y openstack-packstack
  2. 一键部署 packstack:packstack --allinone。成功安装结果如图
  3. 验证
    1. 访问仪表盘页面:http://[OpenStack 服务器 IP]/dashboard。如:http://192.168.128.150/dashboard。能正常打开即为成功。如图
 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类最新资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
最新资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号