
d3vilh/cadvisorcAdvisor(Container Advisor)是一款容器监控工具,版本为0.49.1,源自官方仓库。该镜像支持AMD64、ARM64v8、ARM32v7和ARM32v5架构,已在x86_64 AMD设备和树莓派上测试通过。
cAdvisor作为运行中的守护进程,为容器用户提供对容器资源使用和性能特性的深入了解。它能够收集、聚合、处理并导出有关运行中容器的信息,包括资源隔离参数、历史资源使用情况、完整历史资源使用的直方图以及网络统计数据,这些数据按容器和整机级别导出。
通过以下Docker Compose配置可快速在本地启动cAdvisor,监控整个机器的容器状态:
yaml--- version: "3.1" networks: back-tier: services: cadvisor: container_name: cadvisor image: d3vilh/cadvisor:latest restart: unless-stopped privileged: true command: - '--raw_cgroup_prefix_whitelist=/docker/' - '--docker_only=true' - '--disable_metrics=memory_numa,advtcp,cpuset,referenced_memory,cpu_topology,tcp,udp,percpu,process,hugetlb,sched' - '--housekeeping_interval=30s' volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys/fs/cgroup:/cgroup:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro - /etc/machine-id:/etc/machine-id:ro devices: - '/dev/kmsg:/dev/kmsg' ports: - '8081:8080/tcp' networks: - back-tier
启动后,cAdvisor将在后台运行,可通过http://localhost:8080访问Web界面。配置中包含了cAdvisor观测Docker状态所需的目录挂载。
cAdvisor收集的数据可通过Grafana进行可视化展示,示例如下:
!IMAGE1 !IMAGE2
可通过以下Prometheus配置集成cAdvisor:
yamlservices: prometheus: container_name: prometheus image: prom/prometheus:latest restart: always command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=90' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' volumes: - ./prometheus/:/etc/prometheus/ - prometheus_data:/prometheus ports: - 9090:9090 links: - ping:ping - speedtest:speedtest networks: - back-tier
详细的Prometheus配置可参考此处。
构建该镜像使用的Dockerfile如下:
dockerfileFROM golang:buster AS builder ARG VERSION RUN apt-get update \ && apt-get install make git bash gcc \ && mkdir -p $GOPATH/src/github.com/google \ && git clone [***] $GOPATH/src/github.com/google/cadvisor WORKDIR $GOPATH/src/github.com/google/cadvisor RUN git fetch --tags RUN git checkout $VERSION RUN go env -w GO111MODULE=auto RUN make build RUN cp ./_output/cadvisor / # ------------------------------------------ # 从deploy/Dockerfile复制而来,移除了ARM架构Alpine上不可用的"zfs"依赖 FROM alpine:latest MAINTAINER *** *** *** *** *** LABEL maintainer="Mr.Philipp <***>" RUN sed -i 's,[***] /etc/apk/repositories RUN apk --no-cache add libc6-compat device-mapper findutils thin-provisioning-tools && \ echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \ rm -rf /var/cache/apk/* # 从构建阶段复制cAdvisor COPY --from=builder /cadvisor /usr/bin/cadvisor EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=3s \ CMD wget --quiet --tries=1 --spider http://localhost:8080/healthz || exit 1 ENTRYPOINT ["/usr/bin/cadvisor", "-logtostderr"]
执行以下命令构建镜像:
shelldocker build --progress=plain -t local/cadvisor .



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务