docker容器中如何获取唯一ID(用以系统注册等)

admin 2021-1-13 15026

部署在docker容器中的应用,如果需要根据主机唯一标识进行授权时,如果按MAC地址来生成,在主机重启后,MAC地址可能会变,获取CPUID有困难。在网上找到另一种方法,此方法适用于Linux和Docker应用容器内部:


/**
 * 获取Docker内的系统UUID
 *     @return
 */
public static String getSystemUuid(boolean isReturnPrefix) {
    String result = "";       
    Runtime rt = Runtime.getRuntime();
    try {
        Process proc = rt.exec("cat /sys/class/dmi/id/product_uuid");   //关键行
        InputStreamReader isr = new InputStreamReader(proc.getInputStream());
        BufferedReader br = new BufferedReader(isr);
        String line = null;
        while ((line = br.readLine()) != null) {
            result+=line;
        }
        isr.close();
        result=result.trim();
        if(!"".equals(result)){
            if(isReturnPrefix)
                result="CPUID:"+result;   
        }
        result = result.replace(" ", "");
        return result;
    } catch (IOException e) {
        logger.error("获取linux/unix系統cpuId发生异常。原因:"+e);
        return null;
    }
}



最新回复 (0)
返回