docker-compose 启动 cadvisor失败:“/dev/kmsg: no such file or directory“

博客内容讲述了在运行Docker容器时,遇到cAdvisor因无法找到/sys/fs/cgroup/cpuacct,cpu目录而报错的问题。作者提供了几种解决方案,包括通过挂载系统目录、使用符号链接或者调整Docker配置来解决。这些方法旨在确保cAdvisor能正常监控容器资源使用情况并将其存储到InfluxDB。

报错信息

cig-cadvisor-1 | W1019 05:19:20.315901 1 manager.go:349] Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directory
cig-cadvisor-1 | F1019 05:19:20.379426 1 cadvisor.go:172] Failed to start container manager: inotify_add_watch /sys/fs/cgroup/cpuacct,cpu: no such file or directory
cig-cadvisor-1 exited with code 255

配置明细

docker-compose.yml 中关于 cadvisor 的项目内容为

  cadvisor:
    image: google/cadvisor
    links:
      - influxdb:influxsrv
    command: "-storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086"
    restart: always
    ports:
      - 8080:8080
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

❗❗问题原因

/sys/fs/cgroup/cpuacct,cpu 这个目录检查下,我的机器(CentOS 7)上没有

处理办法

论坛里其实有其它文章发过了

mount -o remount,rw /sys/fs/cgroup
ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu

其它

也可以在 volumes 字段做映射

volumes:
  - /sys/fs/cgroup/cpu,cpuacct:/sys/fs/cgroup/cpuacct,cpu

再它

也可以去掉 volumes 字段的映射,不过这样子容器会不可见

volumes:
  - /sys:/sys:ro
你遇到的错误: ``` -bash: /snap/bin/docker: No such file or directory ``` 表明你的系统中存在一个指向 `/snap/bin/docker` 的 Docker 命令,但该路径下的 Docker 已被卸载或不存在了,导致命令无法执行。 --- ### ✅ 可能原因 1. **Docker 已被卸载,但 shell 缓存了路径** Bash 会缓存命令路径,如果你卸载了 Snap 安装Docker,但未清除缓存,会出现此错误。 2. **残留的软链接或环境变量问题** 3. **Docker 未正确安装** --- ### ✅ 解决方法 #### 🔁 步骤 1:清除 Bash 命令缓存 ```bash hash -r ``` 这会清除 Bash 的命令路径缓存,让系统重新查找 `docker` 命令。 #### 🔁 步骤 2:检查 Docker 是否安装成功 ```bash which docker ``` - 如果输出为空:Docker安装安装失败- 如果输出为 `/usr/bin/docker` 或类似路径:Docker安装,继续验证。 #### ✅ 步骤 3:验证 Docker 是否可运行 ```bash docker info ``` 或运行测试容器: ```bash docker run hello-world ``` --- ### 🛠️ 如果 Docker安装 你可以选择重新安装 Docker: #### ✅ 安装方式一:使用官方脚本安装(推荐) ```bash curl -fsSL https://get.docker.com | sh ``` 安装完成后添加用户到 `docker` 组: ```bash sudo usermod -aG docker $USER ``` 然后退出终端并重新登录。 --- ### 🧹 可选:彻底清理旧的 Docker 安装痕迹 ```bash sudo rm -rf /snap/bin/docker sudo rm -rf /var/lib/docker /etc/docker ~/.docker ``` --- ### ✅ 总结命令 ```bash hash -r which docker docker --version ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值