centos8环境判断当前操作系统是否虚拟机或容器

一,阿里云ECS的centos环境

1,执行systemd-detect-virt

[[email protected] ~]# systemd-detect-virt
kvm

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

2,看dmidecode的system信息也行

[[email protected] ~]# 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版本

[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

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

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

说明:作者:刘宏缔 邮箱: [email protected]

二,vmware fusion下的虚拟机

1,执行systemd-detect-virt

[[email protected] weblc]# systemd-detect-virt
vmware

2,看dmidecode的system信息

[[email protected] 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,则上面两个方法在容器中是失效的

[[email protected] /]# systemd-detect-virt
vmware

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

[[email protected] /]# dmidecode -t system

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

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

[[email protected] /]# df -h / | grep overlay
overlay          50G   25G   23G  52% /

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

3,通过dockerenv文件判断

[[email protected] /]# ls /.dockerenv
/.dockerenv

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

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

[[email protected] /]# 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,列出支持检测的虚拟环境

[[email protected] /]# 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

[[email protected] /]# systemd-detect-virt
none

3,systemd-detect-virt查看版本

[[email protected] /]# 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,只检测虚拟机

[[email protected] /]# systemd-detect-virt -v
vmware

5,只检测容器

[[email protected] /]# systemd-detect-virt -c
docker

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

原文地址:https://www.cnblogs.com/architectforest/p/12573877.html

时间: 2024-10-06 20:12:13

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

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

JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { 2 var ua = window.navigator.userAgent.toLowerCase(); 3 if (ua.match(/MicroMessenger/i) == 'micromessenger') { 4 return true; 5 } else { 6 return fals

js 判断window操作系统 2种方法

js 判断window操作系统 1function detectOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows"); var isMac = (navigator.platform == "Mac68K") || (navigator.platfor

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

JS判断浏览器类型 function judge(){ var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexO

windows环境下的eclipse操作虚拟机里面的hadoop相关配置

当电脑的配置不是很高的时候,在虚拟机里面安装上编译软件进行编程的话,卡的要命,所以总结一下在windows环境下eclipse配置链接虚拟机中的hadoop 在虚拟机中的hadoop要和主机的hadoop要是一样的版本(不知道不一样的版本会不会出现问题,确保成功,用一样的版本是最好的,我这里用的是hadoop2.7.0) 将虚拟机里面的环境配置好以后(虚拟机环境的配置,可见https://www.cnblogs.com/zhaochunhui/p/11451520.html),在window中进

选择虚拟机还是容器?-【软件和信息服务】2014.09

最近业内有人在探讨一个趋势-"虚拟机:永远的光荣还是垂死挣扎呢?"这个探讨主要源于Docker公司和Linux容器(Container)的探讨.很多人疑惑到底是否容器技术终将取代虚拟机技术.可能你也听说了Linux容器技术,但并非每个人都花时间研究了容器技术的来龙去脉,这不是一条140字的微博能够说清的,因此先分享一点背景知识. 关于容器技术 容器技术提供了操作系统级的进程隔离,类似于硬件的虚拟化技术,这也是为什么现在会有人提出容器技术将取代虚拟机技术的主要原因.当然,容器技术还是不同

深入理解虚拟机、容器和Hyper技术

本文首先介绍了操作系统,然后引出容器技术以及虚拟机技术,最后介绍了Docker和Hyper技术.通过本文可以清楚地对三者有感性认识. 操作系统概述 我们可以把操作系统简化为: 操作系统 = 内核 + apps 其中内核负责管理底层硬件资源,包括CPU.内存.IO设备等,并向上为apps提供系统调用接口,上层apps应用必须通过系统调用方式使用硬件资源,通常并不能直接访问资源.这里的apps指的是用户接口,比如shell.gui.services.包管理工具等(linux的图形界面也是作为可选应用

虚拟机与容器性能比较

现在容器的概念在云计算领域越来越热,我根据资料,汇总了下虚拟机与容器性能的比较. 参数 虚拟机 容器 客户机系统 每个虚拟机都会有自己的虚拟硬件,都会在自己的内存中加载内核 所有的客户机系统共享系统和内核,内核镜像是加载在物理内存中的 通信 通过网卡设备 使用标准IPC机制,例如信号,管道,套接字等 安全性 取决于虚拟机的安全性 使用的是强制的分层访问控制 性能 取决于虚拟机指令转换成物理机指令的性能 几乎是提供与底层物理机一样的性能 隔离性 虚拟机之间共享库.文件等,但不与物理机共享 都能互相

无需操作系统和虚拟机,直接运行Python代码

Josh Triplett以一个“笑点”开始了他在PyCon 2015上的演讲:移植Python使其无需操作系统运行:他和他的英特尔同事让解释器能够在GRUB引导程序.BIOS或EFI系统上运行.连演讲的休息时间也没放过,他有很多有趣的要说的事情,还有许多让人大开眼界的演示. Python在Boot Loader上运行的最初想法是能够测试硬件,像BIOS,可扩展固件接口(EFI)以及高级配置和电源接口(ACPI),而无需去写一些“一次性测试项目“程序集.传统来说,英特尔已经写了很多针对DOS(B

Linux实现KVM+QEMU+libvirt的虚拟机环境 并使用virsh对虚拟机进行管理

说明: 本文使用的实验环境是运行在windows10上的Vmware workstation 12.5 pro,宿主机操作系统是Ubuntu16(机器名称为KVM_test),kvm+qemu+libvirt安装在KVM_test上.运行在KVM_test上的客户机操作系统也是Ubuntu16(机器名称为test_ubuntu). 本实验需要的软件有Vmware workstation.vnc viewer.ubuntu16的ios镜像.Vnc viewer需要注册码,请自行百度查找. 本实验所