一,阿里云ECS的centos环境

1,执行systemd-detect-virt

[root@yjweb ~]# systemd-detect-virt
kvm

说明阿里云的ecs是在一个kvm环境中运行

2,看dmidecode的system信息也行

[root@yjweb ~]# dmidecode -t system
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present. Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Alibaba Cloud
Product Name: Alibaba Cloud ECS
Version: pc-i440fx-2.1
Serial Number: f5df2afa-62a5-4c7b-89e5-0791e3ba8c92
UUID: f5df2afa-62a5-4c7b-89e5-0791e3ba8c92
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected

系统信息中的 Alibaba Cloud ECS 能看出机器是阿里云的机器

3,查看此ecs的centos版本

[root@yjweb ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,vmware fusion下的虚拟机

1,执行systemd-detect-virt

[root@localhost weblc]# systemd-detect-virt
vmware

2,看dmidecode的system信息

[root@localhost weblc]# dmidecode -t system
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present. Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Version: None
Serial Number: VMware-56 4d f8 f6 6c b3 ad f1-ff d5 80 97 fd ce 82 d4
UUID: F6F84D56-B36C-F1AD-FFD5-8097FDCE82D4
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified Handle 0x01A1, DMI type 15, 29 bytes
System Event Log
Area Length: 16 bytes
Header Start Offset: 0x0000
Header Length: 16 bytes
Data Start Offset: 0x0010
Access Method: General-purpose non-volatile data functions
Access Address: 0x0000
Status: Invalid, Full
Change Token: 0x00000036
Header Format: Type 1
Supported Log Type Descriptors: 3
Descriptor 1: POST error
Data Format 1: POST results bitmap
Descriptor 2: Single-bit ECC memory error
Data Format 2: Multiple-event
Descriptor 3: Multi-bit ECC memory error
Data Format 3: Multiple-event Handle 0x0265, DMI type 23, 13 bytes
System Reset
Status: Enabled
Watchdog Timer: Present
Boot Option: Do Not Reboot
Boot Option On Limit: Do Not Reboot
Reset Count: Unknown
Reset Limit: Unknown
Timer Interval: Unknown
Timeout: Unknown Handle 0x0268, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected

三,docker容器:

1,如果是虚拟机中安装的操作系统中运行docker,则上面两个方法在容器中是失效的

[root@centos /]# systemd-detect-virt
vmware

这个错误,因为vmware是宿主机的虚拟平台

[root@centos /]# dmidecode -t system

返回也错误,因为返回的也是宿主机的信息

2,可以通过docker容器根分区专用的文件系统类型overlay来判断:

[root@centos /]# df -h / | grep overlay
overlay 50G 25G 23G 52% /

如果根分区文件系统是ovlerlay,表示是在docker容器中

3,通过dockerenv文件判断

[root@centos /]# ls /.dockerenv
/.dockerenv

如果存在/.dockerenv文件,则是在docker容器中

4,根据/proc/1/cgroup是否包含docker字样判断

[root@centos /]# cat /proc/1/cgroup | grep docker
11:pids:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
10:freezer:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
9:cpu,cpuacct:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
8:perf_event:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
7:hugetlb:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
6:cpuset:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
5:blkio:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
4:net_cls,net_prio:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
3:memory:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
2:devices:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
1:name=systemd:/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286
/docker/ebe4fe937bb53c80227cb4772ea73888c381f639f97bee95ab06f0b976998286/init.scope

进程1的控制组是包含有docker的字样

四,systemd-detect-virt的用法

1,列出支持检测的虚拟环境

[root@centos /]# systemd-detect-virt --list
none
kvm
qemu
bochs
xen
uml
vmware
oracle
microsoft
zvm
parallels
bhyve
qnx
vm-other
systemd-nspawn
lxc-libvirt
lxc
openvz
docker
rkt
container-other

2,非虚拟机或容器环境时,返回none

[root@centos /]# systemd-detect-virt
none

3,systemd-detect-virt查看版本

[root@centos /]# systemd-detect-virt --version
systemd 239
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy

4,只检测虚拟机

[root@centos /]# systemd-detect-virt -v
vmware

5,只检测容器

[root@centos /]# systemd-detect-virt -c
docker

说明:如果是虚拟机中的容器会检测不到

centos8环境判断当前操作系统是否虚拟机或容器的更多相关文章

  1. 离线版centos8环境部署迁移监控操作笔记

    嗨咯,前两天总结记录了离线版centos8下docker的部署笔记,今天正好是2021年的最后一天,今天正好坐在本次出差回家的列车上,车上没有上面事做,索性不如把本次离线版centos8环境安装的其他 ...

  2. 实验三:xen环境下的第一个虚拟机的安装

    实验名称: xen环境下的第一个虚拟机的安装 实验环境: 我们这里继续上面实验二来完成这个实验: 环境则是xen的安装环境,如下图: 开启虚拟机的的硬件辅助虚拟化功能: 实验要求: 这里我们通过安装b ...

  3. 如何在Windows环境下安装Linux系统虚拟机

    如何在Windows环境下安装Linux系统虚拟机 本篇经验写给想要入门学习C语言的小白们.Windows系统因为使用窗口图形化,操作简单,功能多样,所以我们在Windows环境下可以做到很多,但想要 ...

  4. JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面

    JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html function is_weixin() { v ...

  5. 【Linux基础】判断当前机器是虚拟机还是物理机

    1.使用dmidecode命令查看(root权限) DMI (Desktop Management Interface, DMI)的主要组成部分是Management InformationForma ...

  6. js 判断当前操作系统是ios还是android还是电脑端

    js判断客户端是否是IOS或者是Android //如果返回true 则说明是Android function is_weixin() { var ua = window.navigator.user ...

  7. TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机)

    TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机) 本篇介绍的是在windows系统下,使用 Anaconda+PyCharm,不使用虚拟机,也不使用 L ...

  8. 【转】【C#】判断当前操作系统

    写一个判断操作系统的工具类OSHelper.cs public class OSHelper { // 获取操作系统ID public static System.PlatformID GetPlat ...

  9. JS判断浏览器类型,JS判断客户端操作系统

    JS判断浏览器类型 function judge(){ var browser = { versions: function() { var u = navigator.userAgent, app ...

随机推荐

  1. Dubbo必须会的知识点

    前言 应用架构演变: 单一架构ORM:单机构建网站,是一个高内聚版本,所有功能部署在一起.通过一个容器和JSP/Servlet技术或通过一些开源的框架如SSM以及SSH,通过数据库管理系统来存储数据. ...

  2. C语言知识点汇集

    int main() {// int num; int value; = int num,value; '''同时定义多个变量的方法 但是切记只能是同种类型的''' 都是int 或double等其他类 ...

  3. git个人常用命令

    git https://www.cnblogs.com/chenwolong/p/GIT.html 添加当前目录的所有文件到暂存区 $ git add . 提交暂存区到仓库区 $ git commit ...

  4. 首发!Alibaba内部:Spring源码培训课件笔记曝光!

    本文包含的内容 Spring占有的市场 阅读源码的重要性 阅读源码困难度 课件笔记的主要内容 Spring占有的市场 先来简单说一下现在各个企业常用并与Spring相关的: ssh = spring ...

  5. hystrix(1) 概述

    首先我们来讲一下hystrix解决什么问题.在大型分布式系统中经常会存在下面的几类问题: 1.大型分布式系统中,服务之间相互依赖,如果依赖的服务发生异常,那么当前服务也会出现异常,这样将会导致联级的服 ...

  6. ssh 远程执行命令 nohup 无效问题

    昨夜1:00多准备睡觉了,突然一哥们咨询了我一个问题. 他A机器上远程执行B机器(ssh user@ip "command")上的脚本,B上的服务并没有起来. 看了下截图,脚本确实 ...

  7. 搜索引擎学习(一)初识Lucene

    一.Lucene相关基础概念 定义:一个简易的工具包,实现文件搜索的功能,支持中文,关键字,多条件查询,凡是文件名或文件内容包含的都查出来. 数据分类:结构化数据(固定格式或有限长度的数据)和非结构化 ...

  8. Hbuilder MUI 页面刷新及页面传值问题

    一.页面刷新问题 1.父页面A跳转到子页面B,B页面修改数据后再跳回A页面,刷新A页面数据 (1).父页面A代码 window.addEventListener("pageflowrefre ...

  9. 【原创】xenomai内核解析--实时IPC概述

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 1.概述 2.Real-time IPC 2. ...

  10. web框架推导

    django 引言 所有的web应用本质上就是一个socket服务端,而用户的浏览器. 软件开发架构 cs架构 bs架构 本质上,bs架构也是cs架构 http协议 网络协议 http协议 数据传输是 ...