运行 Grafana Docker 镜像
您可以使用 Grafana Cloud 来避免自行安装、维护和扩展 Grafana 实例。 创建一个免费帐户即可开始使用,其中永久免费包含 1 万指标、50GB 日志、50GB 追踪、500 VUh k6 测试等功能。
本主题将指导您通过官方 Docker 镜像安装 Grafana。具体来说,它涵盖了如何通过 Docker 命令行界面 (CLI) 和 docker-compose 运行 Grafana。
Grafana Docker 镜像提供两个版本
- Grafana Enterprise:
grafana/grafana-enterprise
- Grafana 开源版:
grafana/grafana-oss
注意:推荐的默认 Grafana 版本是 Grafana Enterprise。它是免费的,并包含开源版的所有功能。此外,您可以选择升级到完整的 Enterprise 功能集,其中包括对 Enterprise 插件的支持。
Grafana 的默认镜像使用 Alpine Linux 项目创建,可以在 Alpine 官方镜像中找到。有关配置 Grafana Docker 镜像的说明,请参阅配置 Grafana Docker 镜像。
通过 Docker CLI 运行 Grafana
本节介绍如何使用 Docker CLI 运行 Grafana。
注意:如果您使用的是 Linux 系统(例如 Debian 或 Ubuntu),您可能需要在命令前添加
sudo
或将您的用户添加到docker
用户组。更多信息请参阅 Docker Engine 的 Linux 安装后步骤。
要运行最新稳定版本的 Grafana,请运行以下命令
docker run -d -p 3000:3000 --name=grafana grafana/grafana-enterprise
其中
docker run
是一个 Docker CLI 命令,用于从镜像运行新容器-d
(--detach
) 在后台运行容器-p <宿主端口>:<容器端口>
(--publish
) 将容器端口发布到宿主,允许您通过宿主端口访问容器端口。在本例中,我们可以通过宿主端口3000
访问容器端口3000
--name
为容器指定一个逻辑名称(例如grafana
)。这允许您通过名称而不是 ID 来引用容器。grafana/grafana-enterprise
是要运行的镜像
停止 Grafana 容器
要停止 Grafana 容器,请运行以下命令
# The `docker ps` command shows the processes running in Docker
docker ps
# This will display a list of containers that looks like the following:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd48d3994968 grafana/grafana-enterprise "/run.sh" 8 seconds ago Up 7 seconds 0.0.0.0:3000->3000/tcp grafana
# To stop the grafana container run the command
# docker stop CONTAINER-ID or use
# docker stop NAME, which is `grafana` as previously defined
docker stop grafana
保存您的 Grafana 数据
默认情况下,Grafana 使用嵌入式 SQLite version 3 数据库来存储配置、用户、dashboards 和其他数据。当您将 Docker 镜像作为容器运行时,对这些 Grafana 数据的更改会写入容器内的文件系统,这些更改只会在容器存在期间持续。如果您停止并移除容器,任何文件系统更改(即 Grafana 数据)都将被丢弃。为了避免数据丢失,您可以为容器使用 Docker volumes 或 bind mounts 设置持久化存储。
注意:尽管这两种方法相似,但略有不同。如果您希望存储完全由 Docker 管理,并且只能通过 Docker 容器和 Docker CLI 访问,则应选择使用持久化存储。但是,如果您需要完全控制存储,并希望允许 Docker 以外的其他进程访问或修改存储层,那么 bind mounts 是适合您环境的选择。
使用 Docker volumes(推荐)
当您希望 Docker Engine 管理存储 volume 时,使用 Docker volumes。
要使用 Docker volumes 进行持久化存储,请完成以下步骤
创建一个 Docker volume 供 Grafana 容器使用,并给它一个描述性名称(例如
grafana-storage
)。运行以下命令# create a persistent volume for your data docker volume create grafana-storage # verify that the volume was created correctly # you should see some JSON output docker volume inspect grafana-storage
运行以下命令启动 Grafana 容器
# start grafana docker run -d -p 3000:3000 --name=grafana \ --volume grafana-storage:/var/lib/grafana \ grafana/grafana-enterprise
使用 bind mounts
如果您计划在 Docker 中运行 Grafana 时,将宿主上的目录用于数据库或配置,则必须使用对您映射的目录具有访问和写入权限的用户来启动容器。
要使用 bind mounts,请运行以下命令
# create a directory for your data
mkdir data
# start grafana with your user id and using the data directory
docker run -d -p 3000:3000 --name=grafana \
--user "$(id -u)" \
--volume "$PWD/data:/var/lib/grafana" \
grafana/grafana-enterprise
使用环境变量配置 Grafana
Grafana 支持使用环境变量指定自定义配置设置。
# enable debug logs
docker run -d -p 3000:3000 --name=grafana \
-e "GF_LOG_LEVEL=debug" \
grafana/grafana-enterprise
在 Docker 容器中安装插件
您可以从官方和社区插件页面安装 Grafana 插件,也可以使用自定义 URL 安装私有插件。这些插件允许您添加新的可视化类型、数据源和应用程序,帮助您更好地可视化数据。
Grafana 目前支持三种类型的插件:面板、数据源和应用。有关管理插件的更多信息,请参阅插件管理。
要在 Docker 容器中安装插件,请完成以下步骤
使用
GF_PLUGINS_PREINSTALL
环境变量将您想要安装的插件作为逗号分隔列表传递给 Docker。这将启动一个后台进程,在 Grafana 服务器启动时安装插件列表。
例如
docker run -d -p 3000:3000 --name=grafana \ -e "GF_PLUGINS_PREINSTALL=grafana-clock-panel, grafana-simple-json-datasource" \ grafana/grafana-enterprise
要指定插件版本,请将版本号添加到
GF_PLUGINS_PREINSTALL
环境变量中。例如
docker run -d -p 3000:3000 --name=grafana \ -e "GF_PLUGINS_PREINSTALL=grafana-clock-panel@1.0.1" \ grafana/grafana-enterprise
注意:如果您未指定版本号,则将使用最新版本。
要从自定义 URL 安装插件,请使用以下约定指定 URL:
<插件 ID>@[<插件版本>]@<插件 zip 文件的 URL>
。例如
docker run -d -p 3000:3000 --name=grafana \ -e "GF_PLUGINS_PREINSTALL=custom-plugin@@https://github.com/VolkovLabs/custom-plugin.zip" \ grafana/grafana-enterprise
示例
以下示例运行最新稳定版本的 Grafana,监听端口 3000,容器名称为 grafana
,持久化存储在 grafana-storage
docker volume 中,设置了服务器根 URL,并安装了官方的clock panel插件。
# create a persistent volume for your data
docker volume create grafana-storage
# start grafana by using the above persistent storage
# and defining environment variables
docker run -d -p 3000:3000 --name=grafana \
--volume grafana-storage:/var/lib/grafana \
-e "GF_SERVER_ROOT_URL=http://my.grafana.server/" \
-e "GF_PLUGINS_PREINSTALL=grafana-clock-panel" \
grafana/grafana-enterprise
通过 Docker Compose 运行 Grafana
Docker Compose 是一个软件工具,可以轻松定义和共享由多个容器组成的应用程序。它通过使用一个 YAML 文件(通常称为 docker-compose.yaml
)来列出构成应用程序的所有服务。您可以使用一个命令按正确的顺序启动容器,并使用另一个命令将其关闭。有关使用 Docker Compose 的好处以及如何使用它,请参阅 使用 Docker Compose。
开始之前
要通过 Docker Compose 运行 Grafana,请在您的机器上安装 compose 工具。要确定 compose 工具是否可用,请运行以下命令
docker compose version
如果 compose 工具不可用,请参阅 安装 Docker Compose。
运行最新稳定版本的 Grafana
本节介绍如何使用 Docker Compose 运行 Grafana。本节中的示例使用 Compose 版本 3。有关兼容性的更多信息,请参阅 Compose 和 Docker 兼容性矩阵。
注意:如果您使用的是 Linux 系统(例如 Debian 或 Ubuntu),您可能需要在命令前添加
sudo
或将您的用户添加到docker
用户组。更多信息请参阅 Docker Engine 的 Linux 安装后步骤。
要使用 Docker Compose 运行最新稳定版本的 Grafana,请完成以下步骤
创建一个
docker-compose.yaml
文件。# first go into the directory where you have created this docker-compose.yaml file cd /path/to/docker-compose-directory # now create the docker-compose.yaml file touch docker-compose.yaml
现在,将以下代码添加到
docker-compose.yaml
文件中。例如
services: grafana: image: grafana/grafana-enterprise container_name: grafana restart: unless-stopped ports: - '3000:3000'
要运行
docker-compose.yaml
,请运行以下命令# start the grafana container docker compose up -d
其中
d = 分离模式
up = 启动并运行容器
要确定 Grafana 正在运行,请打开浏览器窗口并键入 IP_ADDRESS:3000
。登录屏幕应该会出现。
停止 Grafana 容器
要停止 Grafana 容器,请运行以下命令
docker compose down
注意:有关使用 Docker Compose 命令的更多信息,请参阅 docker compose。
保存您的 Grafana 数据
默认情况下,Grafana 使用嵌入式 SQLite version 3 数据库来存储配置、用户、dashboards 和其他数据。当您将 Docker 镜像作为容器运行时,对这些 Grafana 数据的更改会写入容器内的文件系统,这些更改只会在容器存在期间持续。如果您停止并移除容器,任何文件系统更改(即 Grafana 数据)都将被丢弃。为了避免数据丢失,您可以为容器使用 Docker volumes 或 bind mounts 设置持久化存储。
使用 Docker volumes(推荐)
当您希望 Docker Engine 管理存储 volume 时,使用 Docker volumes。
要使用 Docker volumes 进行持久化存储,请完成以下步骤
创建一个
docker-compose.yaml
文件# first go into the directory where you have created this docker-compose.yaml file cd /path/to/docker-compose-directory # now create the docker-compose.yaml file touch docker-compose.yaml
将以下代码添加到
docker-compose.yaml
文件中。services: grafana: image: grafana/grafana-enterprise container_name: grafana restart: unless-stopped ports: - '3000:3000' volumes: - grafana-storage:/var/lib/grafana volumes: grafana-storage: {}
保存文件并运行以下命令
docker compose up -d
使用 bind mounts
如果您计划在 Docker 中运行 Grafana 时,将宿主上的目录用于数据库或配置,则必须使用对您映射的目录具有访问和写入权限的用户来启动容器。
要使用 bind mounts,请完成以下步骤
创建一个
docker-compose.yaml
文件# first go into the directory where you have created this docker-compose.yaml file cd /path/to/docker-compose-directory # now create the docker-compose.yaml file touch docker-compose.yaml
创建您将要挂载数据的目录,在本例中是
/data
,例如在您当前的工作目录中mkdir $PWD/data
现在,将以下代码添加到
docker-compose.yaml
文件中。services: grafana: image: grafana/grafana-enterprise container_name: grafana restart: unless-stopped # if you are running as root then set it to 0 # else find the right id with the id -u command user: '0' ports: - '3000:3000' # adding the mount volume point which we create earlier volumes: - '$PWD/data:/var/lib/grafana'
保存文件并运行以下命令
docker compose up -d
示例
以下示例运行最新稳定版本的 Grafana,监听端口 3000,容器名称为 grafana
,持久化存储在 grafana-storage
docker volume 中,设置了服务器根 URL,并安装了官方的clock panel插件。
services:
grafana:
image: grafana/grafana-enterprise
container_name: grafana
restart: unless-stopped
environment:
- GF_SERVER_ROOT_URL=http://my.grafana.server/
- GF_PLUGINS_PREINSTALL=grafana-clock-panel
ports:
- '3000:3000'
volumes:
- 'grafana_storage:/var/lib/grafana'
volumes:
grafana_storage: {}
注意
如果您想要指定插件版本,请将版本号添加到
GF_PLUGINS_PREINSTALL
环境变量中。例如:-e "GF_PLUGINS_PREINSTALL=grafana-clock-panel@1.0.1,grafana-simple-json-datasource@1.3.5"
。如果您未指定版本号,则将使用最新版本。
后续步骤
有关登录、设置数据源等方面的信息,请参阅入门指南。
配置 Docker 镜像
有关自定义环境、日志记录、数据库等选项的详细信息,请参阅配置 Grafana Docker 镜像页面。
配置 Grafana
有关自定义环境、日志记录、数据库等选项的详细信息,请参阅配置页面。