使用docker创建cloudstack虚拟主机

文章目录

概要

环境准备:

1.使用rockyLinux:8镜像

2.配置yum源

3.添加vim cloudstack.repo为以下内容

4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面,

5.创建Dockerfile

6.构建镜像

7.使用命令创建容器

8.创建docker网络,使用docker network ls查看

9.在使用第七部的命令进行创建​编辑

10.物理机测试启动服务

11.容器测试

10.更改 /etc/cloudstack/agent/agent.properties

小结


概要

前面我们在物理机上创建了cloudstack平台,是成功了的,现在尝试使用docker去启动多个cloudstack虚拟主机节点。前提是需要在物理机上面进行搭建,然后通过物理机进行映射到容器里面

物理机搭建cloudstack单节点:cloudstack概要及单节点安装部署_docker部署cloudstack-CSDN博客

在当前目录下创建一个目录并进入目录

环境准备:

1.使用rockyLinux:8镜像

2.配置yum源

编辑 vim epel.repo添加以下内容

[epel]

name=Extra Packages for Enterprise Linux 8 - $basearch

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir

enabled=1

gpgcheck=1

countme=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

[epel-debuginfo]

name=Extra Packages for Enterprise Linux 8 - $basearch - Debug

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-8&arch=$basearch&infra=$infra&content=$contentdir

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

gpgcheck=1

[epel-source]

name=Extra Packages for Enterprise Linux 8 - $basearch - Source

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=$basearch&infra=$infra&content=$contentdir

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

gpgcheck=1

3.添加vim cloudstack.repo为以下内容

[cloudstack]

name=cloudstack

baseurl=Index of /centos$releasever/4.19/

enabled=1

gpgcheck=0

4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面,

需要映射以下内容,可以先将所需要的目录进行cp到我们前面创建好的目录

/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

/etc/cloudstack/agent/

/etc/pki/CA

/etc/pki/libvirt/

需将以上四个目录进行cp到创建的目录

5.创建Dockerfile

内容如下:

FROM rockylinux:8

COPY epel.repo /etc/yum.repos.d/epel.repo

COPY cloudstack.repo /etc/yum.repos.d/cloudstack.repo

COPY Rocky-BaseOS.repo /etc/yum.repos.d/Rocky-BaseOS.repo

COPY RPM-GPG-KEY-EPEL-8 /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

COPY agent/ /etc/cloudstack/

COPY CA/ /etc/pki/

COPY libvirt/ /etc/pki/

RUN yum makecache \

        && yum clean packages \

        && yum install -y \

        openssh-server \

        epel-release \

        java-11-openjdk-devel \

        cloudstack-agent \

        iptables

RUN mkdir -p /var/run/sshd \

        && echo 'root:root' | chpasswd \

        && sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/'         /etc/ssh/sshd_config \

        && ssh-keygen -A

CMD ["/usr/sbin/sshd", "-D"]

6.构建镜像

使用命令:docker build -t dockercloudstack:v1 .(镜像名可随意)

使用docker images进行查看已经构建好的镜像我这里是随意取的

7.使用命令创建容器

docker run -uroot --privileged --rm -v /etc/sysconfig/libvirtd:/etc/sysconfig/libvirtd -v /etc/libvirt/:/etc/libvirt/ -v /lib/udev/rules.d/:/lib/udev/rules.d/ -v /etc/cloudstack/agent:/etc/cloudstack/agent -v /etc/pki/:/etc/pki/ -v /run/dbus/:/run/dbus/ -e JAVA_OPTS="-Djava.io.tmpdir=/usr/share/cloudstack-agent/tmp -Xms256m -Xmx2048m" -e CLASSPATH="/usr/share/cloudstack-agent/lib/*:/usr/share/cloudstack-agent/plugins/*:/etc/cloudstack/agent:/usr/share/cloudstack-common/scripts" -e JAVA_CLASS=com.cloud.agent.AgentShell -it -d --hostname cloud --name cloud --network=my_macvlan_network --ip xxxxxxxxxxxxxxxx dockedahi:latest(替换IP地址)

使用docker run的时候发现docker创建的网络出现了以下问题,突然想到使用docker虚拟的容器,需要进行自定义bond0,然后重新设置网络。如果想了解docker网络模式可参看这篇文章:Docker不同的网络模式特点_docker网络类型 以及特点-CSDN博客

报错信息:docker: Error response from daemon: failed to create endpoint cloudworker160-2 on network my_macvlan_network: network id "9e54b8391319ab53087fea1a043c6cd0152bc5ddb1769d6cbe210732f529b240" not found.

8.创建docker网络,使用docker network ls查看

使用命令创建网络

docker network create -d macvlan --subnet=子网地址/24 --gateway=xxxxxxxxxxxxxxx -o parent=cloudbr0 my_macvlan_network

这里的subnet需要更改为所属自己的网络 ip a 的24位子网地址,以及对应网关,parent需要对应cloudbr0前面一篇cloudstack物理机搭建所讲解的,这是必要的

9.在使用第七部的命令进行创建

当我进入网页进行查看是否有这个主机时发现没有,这时候感到纳闷,就进入到容器进行查看,才发现没有启动服务,就试着去尝试systemctl status libvirtd才发现容器里面是没有systemctl这个指令,这不前功尽弃嘛,有试想这不用systemctl启动,或者尝试绕过这个命令不就可以了。尝试了很多次还是不行。就一直困恼着,后来在部门老大的的研究下,就尝试着拆解systemctl start libvirt这个命令

进入到/usr/lib/systemd/system/libvirtd.service配置信息如下

通过配置文件我们看到,他在启动时会去调用sbin下面的libvirtd进行启动,那好就回到根目录下面,确实发现有,然后使用libvirtd -h看一下指令,发现他需要的参数很少,就尝试加参数 - l 进行启动,还是失败,就去查看官方文档,发现,在进行启动libvirtd的时候,他会去调用cloudstack这个服务,那也就是意味着这个服务是不是也得开启。

然后我就去看systemctl status cloudstack-agent.server 发现确实有这个服务,然后进入到/usr/lib/systemd/system/cloudstack-agent.service

查看文件后,发现他在启动时会调用/etc/default/cloudstack-agent这个配置。

然后进入到etc/default/cloudstack-agent配置发现是调用的如下信息,也是环境变量,就export到用户的环境变量里面,然后在进行启动使用命令java $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS进行启动。

10.物理机测试启动服务

这时候我们拆解了libvrited启动服务,需要启动libvirtd -l ,以及java $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS这两条命令,需要加三条环境变量才能启动成功,就开始测试,启动后登录网页发现成功了。

11.容器测试

这时候我们得到了两台启动命令后在容器里面迫不及待进行尝试,发现报错,这又是什么原因呢,看看报错信息。

从报错的信息看看

No libvirt.vif.driver specified. Defaults to BridgeVifDriver

Failed to get private nic name

这时候想想,网络接口,虚拟化,那是不是容器里面起的服务也需要更改网络呢,就用ip a去查看,发现是eth0

就上网查资料,说是在vi /etc/cloudstack/agent/agent.properties下面进行更改

发现这个配置文件是我们之前从物理机上面映射过来的,这不埋下了坑,然全部更改为eth0在进行启动,没有报错,看网页成功了。算是松了一口气,就尝试搞第二台。

10.更改 /etc/cloudstack/agent/agent.properties

在进行第二台的时候,同样的配置启动,然后登录网页,发现160.2不见了只发了160.3,过一会又变回去了,发现还存在bug,就看了一下这个文件的配置,发现这两个容器的uuid是一模一样的是不是这个影响呢,就尝试更改一下,使用uuidgen生成新的修改这个配置然后在启动试试发现实成功的。

小结

 以上就是在docker里面创建虚拟的cloudstack虚拟主机,但是在后续的研究中也存在一定的问题就是无法继续创建示例,需要在进行研究一下,因为这涉及到在容器里面在进行安装虚拟的,已经违背了docker的原则,但是可以进行docker里面套结docker,都需要各位大佬继续开发。提供批量创建云主机的脚本:docker批量创建cloudstack虚拟主机脚本-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/930034.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云计算对定制软件开发的影响

在当代数字世界中,云计算是改变许多行业(包括定制软件开发)的最伟大的革命性趋势之一。由于这些公司努力寻求更好、更多不同的方式来履行职责,因此云计算与传统的内部部署基础设施相比具有许多不可否认的优势。这种范式转变对定制…

Ubuntu Linux用户与组的管理

Ubuntu Linux操作系统- 第一弹 由猪猪侠开启Linux操作系统的学习 文章目录 前言Linux操作系统的发展Linux版本 Linux用户账户及其类型超级用户系统用户普通用户 Ubuntu超级用户权限与管理员Linux的超级用户权限解决方案Ubuntu管理员sudo命令su命令Ubuntu启用root登录 组账户及其…

案例研究|HYPER PaaS低代码工具携手DataEase嵌入式版,服务工业制造企业数智化转型

杭州星瀚智磐科技有限公司(以下简称为“星瀚智磐”)成立于2021年,是一家专注于低代码平台研发的高科技企业。星瀚智磐的核心产品HYPER PaaS低代码工具主要为制造业用户提供数字化解决方案。HYPER PaaS基于低代码平台简单的拖拉拽操作&#xf…

Linux-实用操作

文章目录 一. 各类实用小技巧(快捷键)1. ctrl c 强制停止2. ctrl d 退出登出3. history 查看历史命令4. !命令前缀,自动匹配上一个命令5. ctrl r,搜索历史命令6. ctrl a | e,光标移动到命令开始或结束7. ctrl ← | →,左右跳…

部署项目报错

vue2项目部署后 Error: Cannot find module /views/*** 1.起因 登录页、首页等静态页面可以正常进入,后端访问也正常,可以获取到验证码。 但是登录之后会发现首页空白或者进入不到首页 F12查看有报错信息:Error: Cannot find module ‘/v…

微信小程序配置less并使用

1.在VScode中下载Less插件 2.在微信小程序中依次点击如下按钮 选择 从已解压的扩展文件夹安装… 3.选中刚在vscode中下载安装的插件文件 如果没有修改过插件的安装目录,一般是在c盘下C:\用户\用户名.vscode\extensions\mrcrowl.easy-less-2.0.2 我的路径是&#xf…

gpt-computer-assistant - 极简的 GPT-4o 客户端

更多AI开源软件: AI开源 - 小众AIhttps://www.aiinn.cn/sources gpt-computer-assistant是一个将 ChatGPT MacOS 应用程序提供给 Windows 和 Linux 的替代工作。因此,这是一个全新且稳定的项目。此时,您可以轻松地将其作为 Python 库安装&am…

使用PPT科研绘图导出PDF边缘留白问题解决方案

使用PPT画图导出PDF格式后,边缘有空白,插入latex不美观,解决方案为自定义PPT幻灯片母版大小,如题步骤为: 1、查看已制作好的图片的大小,即长度和宽度 2、选择自定义幻灯片大小 3、自定义幻灯片大小为第1…

【PyTorch】(基础三)---- 图像读取和展示

图像读取和展示 pytorch本身并不提供图像的读取和展示功能,利用pytorch执行计算机视觉任务的时候,通常是利用opencv等工具先进行图像处理,然后将结果转化成tensor类型传递给pytorch,在pytorch执行之后,也可以将tensor…

智能合约

06-智能合约 0 啥是智能合约? 定义 智能合约,又称加密合约,在一定条件下可直接控制数字货币或资产在各方之间转移的一种计算机程序。 角色 区块链网络可视为一个分布式存储服务,因为它存储了所有交易和智能合约的状态 智能合约还…

LeetCode 热题100(十五)【动态规划】(3)

15.7最长递增子序列(中等) 题目描述:leetcode链接 300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元…

Vector软件CANdb++的信号起始位Bug

问题现象 前几天导入DBC文件发现不对劲,怎么生成代码的起始地址都怪怪的,检查下工程里面的配置,还真的是这样,一路查到输入文件——DBC文件,发现是DBC文件就有错误:一些CAN报文之后8字节长度,也…

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …

【Axure视频教程】中继器表格——筛选后的条件判断

今天教大家在Axure制作中继器表格筛选以及筛选后条件交互的原型模板,我们可以在输入框里输入员工姓名,点击查询按钮后可以筛选出对应的数据,筛选后会进行条件判断,如果筛选不到任何数据,就会显示提示弹窗。这个原型模板…

白鲸开源即将在Doris Summit Asia 2024展示新议题!

一年一度的 Apache Doris 峰会再次启航,Doris Summit Asia 2024 现已开启报名,将于 2024 年 12 月 14 日在深圳正式举办。此次峰会,将对实时极速、存算分离、湖仓一体、半结构化数据分析、向量索引、异步物化视图等诸多特性进行全方位解读&am…

【Matlab】将所有打开的图像批量保存为JPG格式

将Matlab中所有打开的图像批量保存为JPG格式 前言一、实现步骤1. 获取所有打开的图像句柄2. 遍历并保存图像 总结 前言 在使用Matlab进行数据分析或图像处理时,我们经常会生成多个图像以便观察和比较。有时,为了方便分享或存档,我们需要将这…

python使用openpyxl处理excel

文章目录 一、写在前面1、安装openpyxl2、认识excel窗口 二、基本使用1、打开excel2、获取sheet表格3、获取sheet表格 尺寸4、获取单元格数据5、获取区域单元格数据6、sheet.iter_rows()方法7、修改单元格的值8、向表格中插入行数据9、实战:合并多个excel 三、获取E…

OpenStack-Glance组件

Glance Glance使用磁盘格式和容器格式基础配置镜像转换 Glance 是 OpenStack 的镜像服务,负责存储、发现和管理虚拟机镜像。它允许用户创建和共享镜像,用于启动虚拟机实例。 Glance 的主要功能 (1)虚拟机镜像的管理 支持镜像的上…

chrome使用问题记录

1. http自动跳转https问题 step1. 地址栏输入: chrome://net-internals/#hsts step2. 找到底部Delete domain security policies一栏,输入想处理的域名,点击delete。 注意:输入域名时去掉前缀http step3. 搞定了,再…

EasyNVR中HTTP-FLV协议无法播放怎么解决?

在科技日新月异的今天,摄像头作为公共安全领域的重要一环,其技术的不断提升正显著地改变着社会的安全格局。从最初的简单监控到如今的高清智能分析,我们可以对特定区域进行实时监控和记录,为社会的安全稳定提供了强有力的保障。 问…