在docker中启动cadvisor时,一直报mountpoint for cpu not found

问题

docker logs -f cadvisor

报错信息

F0718 13:06:29.010107 1 cadvisor.go:146] Failed to create a Container Manager: mountpoint for cpu not found

环境

VM下安装的Ubuntu22.04,在Ubuntu22里面部署的docker
1.docker-compose.yml

container_name: prometheus
        hostname: prometheus
        restart: always
        volumes:
            - /home/volodya/workspace/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
            - /home/volodya/workspace/prometheus/node_down.yml:/etc/prometheus/node_down.yml
        ports:
            - "9090:9090"
        networks:
            - monitor
    alertmanager:
        image: prom/alertmanager:latest
        container_name: alertmanager
        hostname: alertmanager
        restart: always
        volumes:
            - /home/volodya/workspace/prometheus/alertmanager.yml:/etc/alertmanager/alertmanager.yml
        ports:
            - "9093:9093"
        networks:
            - monitor
    grafana:
        image: grafana/grafana:latest
        container_name: grafana
        hostname: grafana
        restart: always
        ports:
            - "3000:3000"
        networks:
            - monitor
    node-exporter:
        image: quay.io/prometheus/node-exporter:latest
        container_name: node-exporter
        hostname: node-exporter
        restart: always
        ports:
            - "9100:9100"
        networks:
            - monitor
    cadvisor:
        image: google/cadvisor:latest
        container_name: cadvisor
        hostname: cadvisor
        restart: always
        volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:ro
            - /sys:/sys:ro
            - /var/lib/docker/:/var/lib/docker:ro
            - /dev/disk/:/dev/disk:ro
        ports:
            - "8080:8080"
        networks:
            - monitor

2.prometheus.yml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['192.168.0.100:9093']
      # - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "node_down.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.0.100:9090']
  - job_name: 'cadvisor'
    static_configs:
    - targets: ['192.168.0.100:8080']
  - job_name: 'node'
    scrape_interval: 8s
    static_configs:
    - targets: ['192.168.0.100:9100']

能Google和百度的方法,我都试了

你先单独运行 cadvisor 正常吗

1.单独运行也是报着个错:mountpoint for cpu not found
单独运行的命令docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8089:8080 --detach=true --name=cadvisor google/cadvisor:latest
2.更换了镜像,又报了另一种错误,这版镜像是我从Google cloud自己打包下来的,又报这个错误
镜像:gcr.io/cadvisor/cadvisor:v0.44.0
报错如下:
W0726 12:24:49.415935 1 manager.go:159] Cannot detect current cgroup on cgroup v2
W0726 12:24:49.507353 1 machine_libipmctl.go:64] There are no NVM devices!
W0726 12:24:49.554854 1 manager.go:291] Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directory
W0726 12:29:49.691222 1 machine_libipmctl.go:64] There are no NVM devices!

快放弃了,卡了一个星期多了

我花费了整整两周时间没解决

Doker 只是一种运行方式。

直接运行二进制文件。

wget https://github.com/google/cadvisor/releases/download/v0.39.3/cadvisor

这个v0.44.0版本就可以的。但是 docker hub 3年前就不更新了,只有v0.33.0。

W0726 12:24:49.554854 1 manager.go:291] Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directory

添加这个参数 --device=/dev/kmsg

VERSION=v0.44.0 # use the latest release version from https://github.com/google/cadvisor/releases

sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION

我加了,貌似不行
只要启起来就行了

device did you mean ‘devices’?