报告直接给出了整改方法的链接,如下:
https://github.com/google/cadvisor/issues/784
① 里面提到一个是可以直接写一个 dockerfile 然后在初始化镜像时将 http 基本身份验证写入配置到容器,如下:
cd /home/USERNAME && htpasswd -c -i -b auth.htpasswd USERNAME PASSWORD && touch newfile && cat <<EOF > Dockerfile FROM google/cadvisor:latest ADD auth.htpasswd /auth.htpasswd EXPOSE 8080 ENTRYPOINT ["/usr/bin/cadvisor", "--http_auth_file", "auth.htpasswd", "--http_auth_realm", "localhost"] EOF
注意修改 USERNAME 和 PASSWORD
然后就可以建立镜像:
docker build -t cadvisor-basicauth .
再然后就可以建立运行容器了。
② 最后还提到一种就是如果 cadvisor 是运行在 nginx 后面的话,可以使用 nginx 配置 http 基本身份验证:
server { listen 80 default_server; location /docker-metrics { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/basic_auth/.htpasswd; proxy_pass http://cadvisor:8080/docker-metrics; } }
其中 .htpasswd 可以通过上面 htpasswd 工具命令生成。
③ 当然最终采用的方法是直接删掉了 cadvisor 容器服务。。。因为之前发现如果容器过多会导致它的资源占用突增,而且界面也不好用,找到了一个命令行工具 ctop,发现更好用一些:https://github.com/bcicen/ctop