解决容器内无法正确获取cpu数

192 阅读1分钟

准备

sudo apt-get update
sudo apt-get install -y git
sudo apt-get install -y libtool
sudo apt-get install -y m4
sudo apt-get install -y automake
sudo apt-get install -y pkg-config
sudo apt install -y libfuse-dev

git clone https://github.com/lxc/lxcfs.git
cd lxcfs
./bootstrap.sh
./configure
make
sudo make install
sudo mkdir -p /var/lib/lxcfs

/data下创建一个test.go,假设编译后名为test

package main

import (
	"fmt"
	"runtime"
)

func main() {
	fmt.Println(runtime.NumCPU())
}

试验

开一个终端

sudo lxcfs /var/lib/lxcfs

开一个终端

docker run -it -m 256m --memory-swap 256m       -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw       -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw       -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw       -v /var/lib/lxcfs/proc/stat:/proc/stat:rw      -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw      -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw    -v /data:/root --cpuset-cpus 1 ubuntu:18.04 /bin/bash

输入

/root/test

得到

1