一、参考资源:https://grafana.com/docs/grafana/latest/installation/docker/
二、过程
1、安装grafana
查看可用image
[root@DL ~]# docker search grafana
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
grafana/grafana The official Grafana docker container 1484
拉取grafana镜像:
[root@DL ~]# docker pull grafana/grafana
2、运行grafana:
[root@DL ~]# docker run -d -p 3000:3000 --name=grafana grafana/grafana
3、登录web:http://192.168.0.202:3000/login #初始登录参数:admin/admin
至此,基本安装完成,但是,考虑到一旦docker容器停止,其存储的数据就会丢失,因此还需要进行数据的持久化工作。
使用“docker inspect grafana”(其中的grafana是容器名称)命令查看grafana容器内的配置,可以看到如下环境变量信息:
"Env": [
"PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GF_PATHS_CONFIG=/etc/grafana/grafana.ini",
"GF_PATHS_DATA=/var/lib/grafana",
"GF_PATHS_HOME=/usr/share/grafana",
"GF_PATHS_LOGS=/var/log/grafana",
"GF_PATHS_PLUGINS=/var/lib/grafana/plugins",
"GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
分析上述环境变量信息得知,需要把容器内的/etc/grafana、/var/lib/grafana、/var/log/grafana三个目录挂载到宿主机上以确保数据不随容器的停止而消失。
4、宿主机新建3个目录
mkdir -p /root/grafana/conf
mkdir -p /root/grafana/data
mkdir -p /root/grafana/log
5、在前述运行的grafana系统中,把上述三个目录内的文件和目录全部拷贝到宿主机中。
[root@DL ~]# docker cp grafana:/etc/grafana/. /root/grafana/conf
[root@DL ~]# docker cp grafana:/var/lib/grafana/. /root/grafana/data
[root@DL ~]# docker cp grafana:/var/log/grafana/. /root/grafana/log
6、修改宿主机新建目录的所有者为grafana(这一步很重要,若缺乏所有者权限配合,grafana页面在登录时就会出错,无法登录)
(1)宿主机新增用户grafana,并修改UID和GID都为472(因为容器内的运行用户也是grafana,且UID和GID都是472)
useradd grafana
vi /etc/passwd
...
grafana:x:472:472::/home/grafana:/bin/bash
vi /etc/group
...
grafana:x:472:
(2)修改grafana目录所有者为grafana
[root@DL ~]# chown -R grafana:grafana grafana
[root@DL ~]# ls -lhat
...
drwxr-xr-x. 5 grafana grafana 41 5月 22 20:59 grafana
[root@DL ~]# ls -lhat grafana
总用量 4.0K
drwxr-xr-x. 5 grafana grafana 41 5月 22 20:59 .
drwxr-xr-x. 2 grafana grafana 6 5月 22 20:59 log
drwxr-xr-x. 4 grafana grafana 50 5月 22 20:55 data
dr-xr-x---. 18 root root 4.0K 5月 22 20:06 ..
drwxr-xr-x. 2 grafana grafana 45 5月 22 19:57 conf
7、编制docker运行命令
vi grafana.sh
内容如下:
docker run -d --name grafana -p 3000:3000 -v /root/grafana/conf:/etc/grafana -v /root/grafana/data:/var/lib/grafana -v /root/grafana/log:/var/log/grafana grafana/grafana
8、为grafana.sh添加执行权限
chmod +x grafana.sh
9、运行grafana.sh
./grafana.sh
三、测试
web登录:http://192.168.0.202:3000/
四、小结:
1、docker安装grafana虽然比较方便,但是,有些问题是必须高度关注的,如grafana容器内系统本身是以grafana用户身份运行的,对应的挂载目录的权限也必须调整为grafana权限。
2、在安装测试过程中用到docker一些命令配合调试工作,比较有用,这里列出如下:
docker stop grafana #停止grafana容器,对应有start和restart来启动和重启容器。
docker rm grafana #删除grafana容器,以便后续新建同名容器
docker container prune #删除运行异常的全部容器,运行异常就是直接使用 docker ps或docker container ls无法列出的容器。
docker ps -a 或 docker container ls -a #列出所有容器,包括运行异常的容器。
docker inspect grafana #查看容器grafana的配置详情,包括容器id号,挂载信息,环境变量、主机名称等等。因为其内容较多,可使用管道符到处到文件做更细致分析,如 docker inspect grafana > grafana.txt
docker exec -it grafana /bin/bash 或 docker exec -it grafana /bin/sh #进入容器grafana内的console状态,以便查探容器内的文件系统。
3、关于显示时区问题,grafana的web界面已提供本地时间显示功能(可选),因此,不用调整docker容器的时区。
五、待验证的运行方法:
https://grafana.com/docs/grafana/latest/installation/configure-docker/
If you do not designate a location for information storage, then all your Grafana data disappears as soon as you stop your image. To save your data, you need to set up persistent storage or bind mounts for your container.
(1)Run Grafana container with persistent storage (recommended)
# create a persistent volume for your data in /var/lib/grafana (database and plugins)
docker volume create grafana-storage
上述命令可生成一个docker volume,使用命令docker volume inspect grafana-storage 或 docker inspect grafana-storage查看详情,如存储位置:
"Mountpoint": "/var/lib/docker/volumes/grafana-storage/_data"
# start grafana
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana
(2)Run Grafana container using bind mounts
You may want to run Grafana in Docker but use folders on your host for the database or configuration. When doing so, it becomes important to start the container with a user that is able to access and write to the folder you map into the container.
mkdir data # creates a folder for your data
ID=$(id -u) # saves your user id in the ID variable
# starts grafana with your user id and using the data folder
docker run -d --user $ID --volume "$PWD/data:/var/lib/grafana" -p 3000:3000 grafana/grafana:5.1.0