快速参考
-
由……维护
InfluxData -
何处获取帮助:
Docker 社区 Slack、服务器故障、Unix & Linux 或 Stack Overflow
支持的标签及相应的 Dockerfile 链接
快速参考(续)
-
在哪里提交问题:
https://github.com/influxdata/influxdata-docker/issues -
已发布的图像工件详细信息:
仓库信息 仓库的repos/influxdb/目录(历史)
(图像元数据、传输大小等) -
图像更新:
官方镜像仓库的library/influxdb标签
官方镜像仓库的library/influxdb文件(历史记录) -
此描述的来源:
文档库的influxdb/目录(历史)
什么是 InfluxDB?
InfluxDB 是为处理高写入和查询工作负载而设计的时间序列数据平台。使用 InfluxDB,您可以收集、存储和处理大量带时间戳的数据,包括用于 DevOps 监控、应用程序指标、物联网传感器和事件监控等用例的指标和事件。
使用 InfluxDB Docker Hub 镜像在 InfluxDB v2 或 InfluxDB v1 中写入、查询和处理时间序列数据。
欲了解更多信息,请访问 https://influxdata.com。

如何将此图像用于 InfluxDB v2
快速入门:查看针对 Docker 安装 InfluxDB v2 的指南并开始使用 InfluxDB v2。
启动 InfluxDB v2 并通过 UI、CLI 或 API 进行设置
要启动 InfluxDB v2 容器,请输入以下命令:
docker run \
-p 8086:8086 \
-v "$PWD/data:/var/lib/influxdb2" \
-v "$PWD/config:/etc/influxdb2" \
influxdb:2
将以下内容替换为你自己的值:
$PWD/data:要挂载到容器的 InfluxDB 数据目录路径的主机目录$PWD/config:要挂载到容器的 InfluxDB 配置目录路径的主机目录
容器启动后,可在主机的 http://localhost:8086 访问 InfluxDB UI 和 API。您已准备好从容器外部或内部设置初始管理员用户、令牌和存储桶——从以下选项中选择一个:
-
从容器外部设置 InfluxDB:使用 InfluxDB UI、
influxCLI 或 HTTP API 从主机或网络设置 InfluxDB。 -
在容器内部设置 InfluxDB:使用
docker exec运行容器中安装的influxCLI——例如:docker exec influxdb2 influx setup \ --username $USERNAME \ --password $PASSWORD \ --org $ORGANIZATION \ --bucket $BUCKET \ --force
请查看 influx setup 文档以获取完整的选项列表。
如果从容器内运行安装程序,InfluxDB 会将 influx CLI 连接配置存储在容器的 /etc/influxdb2/influx-configs 文件中。
使用自动化设置启动 InfluxDB v2
要通过单个命令启动并设置 InfluxDB v2,为初始用户、密码、存储桶和组织指定 -e DOCKER_INFLUXDB_INIT_MODE=setup 和 -e DOCKER_INFLUXDB_INIT_ 环境变量——例如:
docker run -d -p 8086:8086 \
-v "$PWD/data:/var/lib/influxdb2" \
-v "$PWD/config:/etc/influxdb2" \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=<USERNAME> \
-e DOCKER_INFLUXDB_INIT_PASSWORD=<PASSWORD> \
-e DOCKER_INFLUXDB_INIT_ORG=<ORG_NAME> \
-e DOCKER_INFLUXDB_INIT_BUCKET=<BUCKET_NAME> \
influxdb:2
将以下内容替换为你自己的值:
$PWD/data:要在容器的 InfluxDB 数据目录路径挂载的主机目录$PWD/config:要挂载到容器的 InfluxDB 配置目录路径的主机目录<USERNAME>:您初始管理员用户的名称<PASSWORD>:您初始管理员用户的密码<ORG_NAME>:你初始组织的一个名称<BUCKET_NAME>:你初始存储桶(数据库)的名称
如果从容器内运行安装程序,InfluxDB 会将 influx CLI 连接配置存储在容器的 /etc/influxdb2/influx-configs 文件中。
自动化设置选项
在设置模式( DOCKER_INFLUXDB_INIT_MODE=setup )或升级模式( DOCKER_INFLUXDB_INIT_MODE=upgrade )中,您可以指定以下特定于 Docker 的环境变量以提供初始设置值:
DOCKER_INFLUXDB_INIT_USERNAME:你初始管理员用户的一个名称。DOCKER_INFLUXDB_INIT_PASSWORD:您初始管理员用户的密码。DOCKER_INFLUXDB_INIT_ORG:你初始组织的一个名称。DOCKER_INFLUXDB_INIT_BUCKET:你初始存储桶的名称。- 可选:
DOCKER_INFLUXDB_INIT_RETENTION:用作初始存储桶的保留期的持续时间。默认值:0(无限;不删除数据)。 - 可选:
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN:要为运算符令牌设置的字符串值。默认:生成的令牌。
以下示例展示了如何为所有初始设置选项传递值:
docker run -d -p 8086:8086 \
-v "$PWD/data:/var/lib/influxdb2" \
-v "$PWD/config:/etc/influxdb2" \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
-e DOCKER_INFLUXDB_INIT_RETENTION=1w \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token \
influxdb:2
*要从 InfluxDB 1.x 升级到 InfluxDB 2.x,请参阅下面的“从 InfluxDB 1.x 升级”部分。*
在 InfluxDB 已设置并运行的情况下,查看入门教程以创建令牌以及写入和查询数据。
自定义初始化脚本
在 setup 模式( DOCKER_INFLUXDB_INIT_MODE=setup )或 upgrade 模式( DOCKER_INFLUXDB_INIT_MODE=upgrade )中,InfluxDB Docker Hub 镜像支持运行自定义初始化脚本。在设置过程完成后,脚本将按名称的字典顺序执行。
对于容器要运行脚本,它们必须:
-
被安装在容器的
/docker-entrypoint-initdb.d目录中 -
使用
.sh文件名扩展名来命名 -
Be executable by the user running the
docker runcommand--for example, to allow the current use to execute a script withdocker run:chmod +x ./scripts/<yourscript.sh>
授予对已挂载文件的权限
By default, Docker runs containers using the user and group IDs of the user executing the
docker runcommand. When files are bind-mounted into the container, Docker preserves the user and group ownership from the host system.
The image exports a number of variables into the environment before executing scripts. The following variables are available for you to use in your scripts:
INFLUX_CONFIGS_PATH: Path to theinfluxCLI connection configurations file written bysetup/upgradeINFLUX_HOST: URL to theinfluxdinstance runningsetup/upgradeDOCKER_INFLUXDB_INIT_USER_ID: ID of the initial admin user created bysetup/upgradeDOCKER_INFLUXDB_INIT_ORG_ID: ID of the initial organization created bysetup/upgradeDOCKER_INFLUXDB_INIT_BUCKET_ID: ID of the initial bucket created bysetup/upgrade
For example, to grant an InfluxDB 1.x client write permission to your initial bucket, create a $PWD/scripts/setup-v1.sh file that contains the following:
#!/bin/bash
set -e
influx v1 dbrp create \
--bucket-id ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \
--db ${V1_DB_NAME} \
--rp ${V1_RP_NAME} \
--default \
--org ${DOCKER_INFLUXDB_INIT_ORG}
influx v1 auth create \
--username ${V1_AUTH_USERNAME} \
--password ${V1_AUTH_PASSWORD} \
--write-bucket ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \
--org ${DOCKER_INFLUXDB_INIT_ORG}
Then, run the following command to start and set up InfluxDB using custom scripts:
docker run -p 8086:8086 \
-v "$PWD/data:/var/lib/influxdb2" \
-v "$PWD/config:/etc/influxdb2" \
-v "$PWD/scripts:/docker-entrypoint-initdb.d" \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
-e V1_DB_NAME=v1-db \
-e V1_RP_NAME=v1-rp \
-e V1_AUTH_USERNAME=v1-user \
-e V1_AUTH_PASSWORD=v1-password \
influxdb:2
Automated setup and upgrade ignored if already setup
Automated
setup,upgrade, and custom initialization scripts won't run if an existinginfluxd.boltboltdb file from a previous setup is found in the configured data directory.This behavior allows for the InfluxDB container to reboot post-setup and avoid overwriting migrated data,
DB is already set uperrors, and errors from non-idempotent script commands.
Access InfluxDB v2 file system and ports
When starting an InfluxDB container, we recommend the following for easy access to your data, configurations, and InfluxDB v2 instance:
- Publish the container's
8086port to make the InfluxDB UI and HTTP API accessible from the host system. - Use Docker Volumes or Bind mounts to persist InfluxDB data and configuration directories outside of containers.
Default file system and networking ports
For InfluxDB v2, the InfluxDB Docker Hub image uses the following default ports and file system paths:
-
TCP port
8086: the default port for the InfluxDB UI and HTTP API. To specify a different port or address, use thehttp-bind-addressconfiguration option. -
/var/lib/influxdb2/: the InfluxDB data directory/engine/: Default InfluxDB Storage engine pathinfluxd.bolt: Default Bolt pathinfluxd.sqlite: Default SQLite path-
/etc/influxdb2: the InfluxDB configuration directory -
/etc/influxdb2/configs:influxCLI connection configurations file /etc/influxdb2/influx-configs:influxCLI connection configurations file, if you run setup from within the container- Optional:
/etc/influxdb2/config.[yml, json, toml]: Your customized InfluxDB configuration options file
Configure InfluxDB v2 in a container
要自定义 InfluxDB,在配置文件、环境变量或命令行标志中指定服务器配置选项。
使用配置文件
要自定义和挂载 InfluxDB 配置文件,请执行以下操作:
-
如果您尚未设置 InfluxDB 以初始化 API 操作员令牌。您将在下一步中需要操作员令牌。
-
运行
influx server-configCLI 命令将当前服务器配置输出到挂载的配置目录中的文件——例如,输入以下命令以使用容器的influxCLI 和默认的 Operator 令牌:docker exec -it influxdb2 influx server-config > "$PWD/config/config.yml"
将 $PWD/config/ 替换为你在容器的 /etc/influxdb2 InfluxDB 配置目录路径下挂载的主机目录。
-
编辑
config.yml文件以自定义服务器配置选项。 -
重启容器。
docker restart influxdb2
使用环境变量和命令行标志
若要覆盖特定配置选项,请使用环境变量或命令行标志。
-
将
INFLUXD_环境变量传递给 Docker 以覆盖配置文件——例如:docker run -p 8086:8086 \ -e INFLUXD_STORAGE_WAL_FSYNC_DELAY=15m \ influxdb:2 -
将
influxd命令行标志传递以覆盖环境变量和配置文件——例如:docker run -p 8086:8086 \ influxdb:2 --storage-wal-fsync-delay=15m
欲了解更多信息,请参阅 InfluxDB 配置选项。
从 InfluxDB 1.x 升级
InfluxDB 2.x 提供了一个与 1.x 兼容的 API,但在磁盘上期望有不同的存储布局。为了考虑这些差异,InfluxDB Docker Hub 镜像提供了一个 upgrade 特性,该特性在启动 influxd 服务器之前将 1.x 数据和配置迁移到 2.x。
自动化升级过程在 InfluxDB v2 容器中创建以下内容:
- 一个初始管理员用户
- 一个初始组织
- 一个初始桶
- InfluxDB v2 数据文件(默认路径是
/var/lib/influxdb2) - InfluxDB v2 配置文件(默认路径是
/etc/influxdb2)
在两个路径都挂载卷以避免数据丢失。
要运行自动升级,在启动容器时指定以下内容:
-
InfluxDB v2 初始化环境变量:
DOCKER_INFLUXDB_INIT_MODE=upgradeDOCKER_INFLUXDB_INIT_USERNAME:初始管理员用户的一个名称DOCKER_INFLUXDB_INIT_PASSWORD:初始管理员用户的密码DOCKER_INFLUXDB_INIT_ORG:初始组织的一个名称DOCKER_INFLUXDB_INIT_BUCKET:初始存储桶的名称- 可选:
DOCKER_INFLUXDB_INIT_RETENTION:存储桶保留期的持续时间。默认:0(无限;不删除数据) - 可选:
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN:要为运算符令牌设置的值。默认:生成一个令牌。 -
1.x 数据和配置路径:
-
由
DOCKER_INFLUXDB_INIT_UPGRADE_V1_DIR环境变量指定或挂载在/var/lib/influxdb的 1.x 数据卷 - 可选:一个 1.x 自定义配置文件,由
DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG环境变量指定或挂载在/etc/influxdb/influxdb.conf
升级过程按以下优先级顺序搜索已挂载的 1.x 数据和配置路径:
- 由
DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG环境变量引用的配置文件 - 由
DOCKER_INFLUXDB_INIT_UPGRADE_V1_DIR环境变量引用的数据目录 - 一个在
/etc/influxdb/influxdb.conf挂载的配置文件 - 一个挂载在
/var/lib/influxdb的数据目录
如果已设置,则忽略自动设置和升级
如果在配置的数据目录中发现来自先前设置的现有
influxd.boltboltdb 文件,则自动化的setup、upgrade和自定义初始化脚本将不会运行。此行为允许 InfluxDB 容器在设置后重新启动,并避免覆盖迁移的数据、
DB is already set up错误以及来自非幂等脚本命令的错误。
升级 InfluxDB 1.x:默认数据路径和配置
假设你一直在运行一个最小化的 InfluxDB 1.x 部署:
docker run -p 8086:8086 \
-v influxdb:/var/lib/influxdb \
influxdb:1.8
要将此部署升级到 InfluxDB 2.x,停止正在运行的 InfluxDB 1.x 容器,然后运行以下命令:
docker run -p 8086:8086 \
-v influxdb:/var/lib/influxdb \
-v influxdb2:/var/lib/influxdb2 \
-e DOCKER_INFLUXDB_INIT_MODE=upgrade \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
influxdb:2
升级 InfluxDB 1.x:自定义配置
假设你一直在运行带有自定义配置( /etc/influxdb/influxdb.conf )的 InfluxDB 1.x 部署:
docker run -p 8086:8086 \
-v influxdb:/var/lib/influxdb \
-v "$PWD/influxdb.conf:/etc/influxdb/influxdb.conf" \
influxdb:1.8
要将此部署升级到 InfluxDB 2.x,停止正在运行的 InfluxDB 1.x 容器,然后运行以下命令:
docker run -p 8086:8086 \
-v influxdb:/var/lib/influxdb \
-v influxdb2:/var/lib/influxdb2 \
-v influxdb2-config:/etc/influxdb2 \
-v "$PWD/influxdb.conf:/etc/influxdb/influxdb.conf" \
-e DOCKER_INFLUXDB_INIT_MODE=upgrade \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
influxdb:2
升级 InfluxDB 1.x:自定义数据和配置路径
假设你一直在运行一个 InfluxDB 1.x 部署,其数据和配置挂载在自定义路径上:
docker run -p 8086:8086 \
-v influxdb:/root/influxdb/data \
-v "$PWD/influxdb.conf:/root/influxdb/influxdb.conf" \
influxdb:1.8 -config /root/influxdb/influxdb.conf
在升级到 InfluxDB v2 之前,决定是继续使用自定义路径还是使用 InfluxDB v2 默认值。
要使用 InfluxDB v2 默认值,停止正在运行的 InfluxDB 1.x 容器,然后运行以下命令:
docker run -p 8086:8086 \
-v influxdb:/root/influxdb/data \
-v influxdb2:/var/lib/influxdb2 \
-v influxdb2-config:/etc/influxdb2 \
-v "$PWD/influxdb.conf:/root/influxdb/influxdb.conf" \
-e DOCKER_INFLUXDB_INIT_MODE=upgrade \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
-e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \
influxdb:2
若要使用自定义路径而非 InfluxDB v2 默认路径,请运行以下命令:
docker run -p 8086:8086 \
-v influxdb:/root/influxdb/data \
-v influxdb2:/root/influxdb2/data \
-v influxdb2-config:/etc/influxdb2 \
-v "$PWD/influxdb.conf:/root/influxdb/influxdb.conf" \
-e DOCKER_INFLUXDB_INIT_MODE=upgrade \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=my-org \
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
-e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \
-e DOCKER_INFLUXDB_CONFIG_PATH=/root/influxdb2/config.toml \
-e DOCKER_INFLUXDB_BOLT_PATH=/root/influxdb2/influxdb.bolt \
-e DOCKER_INFLUXDB_ENGINE_PATH=/root/influxdb2/engine \
influxdb:2
若要了解有关升级过程的更多信息,请参阅 v1 到 v2 升级指南。
从 quay.io 托管的 InfluxDB 2.x 镜像进行升级
早期的 InfluxDB 2.x 的 Docker 构建版本托管在 quay.io/influxdb/influxdb ,并且包含 influx 和 influxd 二进制文件,没有任何默认配置或辅助脚本。默认情况下, influxd 进程将数据存储在 /root/.influxdbv2 。
从 v2.0.4 开始,我们恢复了 InfluxDB Docker Hub 构建,其默认将数据存储在 /var/lib/influxdb2 。如果您使用默认设置直接从 quay.io/influxdb/influxdb 升级到 influxdb:2.0.4 ,InfluxDB 将无法找到您现有的数据文件。
为避免从 quay.io/influxdb/influxdb 迁移到 influxdb:2.0 时出现此问题,请选择以下之一:
更新挂载以使用 InfluxDB 默认值
要使用 InfluxDB Docker Hub 数据路径,启动一个将您的数据卷挂载到 /var/lib/influxdb2 的容器——例如,如果您使用以下命令启动 InfluxDB quay.io 容器:
# quay.io InfluxDB 2.x container
docker run -p 8086:8086 \
-v "$PWD:/root/.influxdbv2" \
quay.io/influxdb/influxdb:v2.0.3
使用此命令启动 InfluxDB v2 Docker Hub 容器:
# Docker Hub InfluxDB 2.x container
docker run -p 8086:8086 \
-v "$PWD:/var/lib/influxdb2" \
influxdb:2
将 InfluxDB 配置为使用容器主目录
若要继续使用 /root/.influxdbv2 数据路径,请为您的 InfluxDB Docker Hub 容器自定义存储路径配置选项(bolt-path、engine-path、sqlite-path)配置选项——例如,如果您使用以下命令启动 InfluxDB quay.io 容器:
# quay.io-hosted InfluxDB 2.x
docker run -p 8086:8086 \
-v "$PWD:/root/.influxdbv2" \
quay.io/influxdb/influxdb:v2.0.3
使用此命令启动 InfluxDB v2 Docker Hub 容器:
docker run -p 8086:8086 \
-e INFLUXD_BOLT_PATH=/root/.influxdbv2/influxd.bolt \
-e INFLUXD_ENGINE_PATH=/root/.influxdbv2/engine \
-v "$PWD:/root/.influxdbv2" \
influxdb:2
如何将此图像用于 InfluxDB v1
使用 InfluxDB Docker Hub 镜像来运行和设置一个 InfluxDB 1.x 容器。
运行容器
要启动 InfluxDB 1.x 容器,请输入以下命令:
docker run -p 8086:8086 \
-v "$PWD:/var/lib/influxdb" \
influxdb:1.8
该命令传递以下参数:
-p 8086:8086:在主机端口8086上公开 InfluxDB HTTP API。-v $PWD:/var/lib/influxdb:将主机的$PWD目录挂载到 InfluxDB 数据目录,以在容器外部持久化数据。
将 $PWD 替换为你希望 InfluxDB 存储数据的主机目录。
使用 Docker 卷或绑定挂载来持久化 InfluxDB 数据和配置目录。
网络端口
InfluxDB 使用以下网络端口:
- TCP 端口
8086:HTTP API 的默认端口 - TCP 端口
2003:用于 Graphite 协议的端口(如果启用)
使用 docker run -P, --publish-all 标志将 InfluxDB HTTP API 暴露给主机。
在容器中配置 InfluxDB v1
要在容器中配置 InfluxDB v1,可使用配置文件或环境变量。
使用配置文件
要自定义并挂载配置文件,请执行以下操作:
-
将当前服务器配置输出到已挂载配置目录中的文件中——例如:
docker run --rm influxdb:1.8 influxd config > influxdb.conf -
编辑
influxdb.conf文件以自定义服务器配置选项。docker run -p 8086:8086 \ -v "$PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro" \ influxdb:1.8 -config /etc/influxdb/influxdb.conf将
$PWD替换为你想要存储配置文件的主机目录。
使用环境变量
传递 INFLUXDB_ 环境变量以覆盖特定的 InfluxDB v1 配置选项。环境变量会覆盖配置文件中的等效选项。
docker run -p 8086:8086 \
-e INFLUXDB_REPORTING_DISABLED=true \
-e INFLUXDB_META_DIR=/path/to/metadir \
-e INFLUXDB_DATA_QUERY_LOG_ENABLED=false \
influxdb:1.8
了解有关配置 InfluxDB v1 的更多信息。
石墨
InfluxDB 支持 Graphite 行协议,但服务和端口默认不暴露。要运行启用了 Graphite 支持的 InfluxDB,您可以使用配置文件或设置适当的环境变量。使用默认的 Graphite 配置运行 InfluxDB:
docker run -p 8086:8086 -p 2003:2003 \
-e INFLUXDB_GRAPHITE_ENABLED=true \
influxdb:1.8
有关设置 Graphite 服务的更详细文档,请参阅 GitHub 上的自述文件。为了利用石墨模板,您应该使用配置文件,方法是使用上述步骤输出默认配置文件并修改 [[graphite]] 部分。
InfluxDB v1 HTTP API
创建名为 mydb 的数据库:
curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
插入到数据库中:
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
在官方文档中阅读更多关于此的内容。
命令行界面/外壳
启动容器:
docker run --name=influxdb -d -p 8086:8086 influxdb:1.8
在该容器中运行 influx 客户端:
docker exec -it influxdb influx
或者在单独的容器中运行 influx 客户端:
docker run --rm --link=influxdb -it influxdb:1.8 influx -host influxdb
InfluxDB v1 数据库初始化
不建议用于生产
我们不建议在 InfluxDB v1 生产场景中使用初始化选项,但在运行独立实例进行测试时它们很有用。
InfluxDB Docker Hub 镜像允许你在创建 InfluxDB v1 容器时设置初始化选项。
数据库初始化脚本仅在运行 influxd 时被调用;它不会被任何其他程序执行。
环境变量
在 InfluxDB v1 设置过程中,InfluxDB 镜像使用环境变量自动配置一些服务器选项。您可以覆盖以下环境变量来定制设置选项。
INFLUXDB_DB
使用此环境变量的名称自动初始化数据库。
INFLUXDB_HTTP_AUTH_ENABLED
启用身份验证。对于下面任何与身份验证相关的选项,要么必须设置此项,要么必须在配置文件中设置 auth-enabled = true 才能正常工作。
INFLUXDB 管理员用户
要创建的管理员用户的名称。如果未设置,则不会创建管理员用户。
INFLUXDB 管理员密码
为配置的管理员用户设置的密码为 INFLUXDB_ADMIN_USER 。如果未设置,将生成一个随机密码并输出到标准输出。
INFLUXDB 用户
要创建的没有权限的用户的名称。如果设置了 INFLUXDB_DB ,则该用户将被授予对该数据库的读写权限。
INFLUXDB 用户密码
The password for the user configured with INFLUXDB_USER. If this is unset, a random password is generated and printed to standard out.
INFLUXDB 读取用户
The name of a user to be created with read privileges on INFLUXDB_DB. If INFLUXDB_DB is not set, this user will have no granted permissions.
INFLUXDB_READ_USER_PASSWORD
The password for the user configured with INFLUXDB_READ_USER. If this is unset, a random password is generated and printed to standard out.
INFLUXDB 写入用户
要在 INFLUXDB_DB 上创建具有写入权限的用户的名称。如果未设置 INFLUXDB_DB ,则该用户将没有被授予的权限。
INFLUXDB 写入用户密码
为配置了 INFLUXDB_WRITE_USER 的用户设置的密码。如果未设置,将生成一个随机密码并打印到标准输出。
初始化文件
如果 Docker 镜像在 /docker-entrypoint-initdb.d 文件夹内发现任何带有扩展名 .sh 或 .iql 的文件,它将执行它们。它们的执行顺序由 shell 确定。这通常是字母顺序。
手动初始化 InfluxDB v1
要手动初始化 InfluxDB v1 数据库,使用 docker run 直接调用 /init-influxdb.sh 脚本。该脚本采用与 influxd run 命令相同的初始化选项,例如:
docker run --rm \
-e INFLUXDB_DB=db0 \
-e INFLUXDB_ADMIN_USER=admin \
-e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \
-e INFLUXDB_USER=telegraf -e \
-e INFLUXDB_USER_PASSWORD=secretpassword \
-v "$PWD:/var/lib/influxdb" \
influxdb:1.8 /init-influxdb.sh
该命令创建以下内容:
- 一个名为
db0的数据库 - 一个管理员用户
admin以及密码supersecretpassword - 一个密码为
secretpassword的telegraf用户
--rm 标志会导致 Docker 在脚本运行后退出并删除容器。初始化期间创建的数据和配置文件保留在挂载卷(主机的 $PWD 目录)中。
图像变体
influxdb 图像有多种类型,每种都针对特定的用例而设计。
influxdb:<version>
这是事实上的镜像。如果你不确定自己的需求是什么,你可能想要使用这个。它被设计既可用作一次性容器(挂载你的源代码并启动容器以启动你的应用程序),也可用作构建其他镜像的基础。
influxdb:<version>-alpine
此镜像基于流行的 Alpine Linux 项目,在 alpine 官方镜像中可用。Alpine Linux 比大多数发行版基础镜像小得多(约 5MB),因此通常会生成更精简的镜像。
当尽可能小的最终镜像大小是你主要关心的问题时,这个变体很有用。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及其同类,所以软件通常会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的镜像的一些优缺点比较的更多讨论,请参阅此 Hacker News 评论线程。
为了最小化镜像大小,在基于 Alpine 的镜像中包含额外的相关工具(例如 git 或 bash )是不常见的。使用此镜像作为基础,在你自己的 Dockerfile 中添加你需要的东西(如果你不熟悉,可查看 alpine 镜像描述以获取如何安装软件包的示例)。
influxdb:data
将此图像用于 InfluxDB Enterprise 需要有效的 InfluxData 许可证密钥。
此图像包含用于集群的企业数据节点包。它支持与 InfluxDB 1.x OSS 图像相同的所有选项,但需要将 8088 端口暴露给元节点。
参考 influxdb:meta 变体以获取关于如何设置集群的说明。
influxdb:meta
此图像需要来自 InfluxData 的有效许可证密钥。请访问我们的产品页面以了解更多信息。
此图像包含用于集群的企业元节点包。它旨在与相同版本的 influxdb:data 包结合使用。
使用此图像
指定许可证密钥
许可证密钥可以使用环境变量指定,也可以通过覆盖配置文件来指定。如果直接指定许可证密钥,容器需要能够访问 InfluxData 门户。
docker run -p 8089:8089 -p 8091:8091 \
-e INFLUXDB_ENTERPRISE_LICENSE_KEY=<license-key>
influxdb:meta
运行容器
以下示例将使用 Docker 的内置网络功能。如果使用端口暴露功能,主机端口和容器端口需要相同。
首先,创建一个 Docker 网络:
docker network create influxdb
启动三个元节点。这是建议的元节点数量。我们不建议运行更多或更少。如果您选择运行更多或更少,请确保元节点的数量是奇数。必须在每个容器上设置主机名,使其为将用于访问元节点的地址。当使用 Docker 网络时,主机名应与容器的名称相同。
docker run -d --name=influxdb-meta-0 --network=influxdb \
-h influxdb-meta-0 \
-e INFLUXDB_ENTERPRISE_LICENSE_KEY=<license-key> \
influxdb:meta
docker run -d --name=influxdb-meta-1 --network=influxdb \
-h influxdb-meta-1 \
-e INFLUXDB_ENTERPRISE_LICENSE_KEY=<license-key> \
influxdb:meta
docker run -d --name=influxdb-meta-2 --network=influxdb \
-h influxdb-meta-2 \
-e INFLUXDB_ENTERPRISE_LICENSE_KEY=<license-key> \
influxdb:meta
设置主机名时,你可以使用 -h <hostname> ,或者你可以直接使用 -e INFLUXDB_HOSTNAME=<hostname> 设置环境变量。
启动元节点后,你需要告知它们彼此的信息。选择其中一个元节点并在容器中运行 influxd-ctl 。
docker exec influxdb-meta-0 \
influxd-ctl add-meta influxdb-meta-1:8091
docker exec influxdb-meta-0 \
influxd-ctl add-meta influxdb-meta-2:8091
或者你可以只启动一个元节点。如果你设置一个单一元节点,你不需要使用 influxd-ctl add-meta 。
docker run -d --name=influxdb-meta --network=influxdb \
-h influxdb-meta \
-e INFLUXDB_ENTERPRISE_LICENSE_KEY=<license-key> \
influxdb:meta -single-server
连接数据节点
使用 influxdb:data 并带有与元节点类似的命令行参数来启动数据节点。您可以根据许可证允许的数量启动任意多个数据节点。
docker run -d --name=influxdb-data-0 --network=influxdb \
-h influxdb-data-0 \
-e INFLUXDB_LICENSE_KEY=<license-key> \
influxdb:data
你可以添加 -p 8086:8086 以将 http 端口暴露给主机。在启动容器后,选择一个元节点并将数据节点添加到它。
docker exec influxdb-meta-0 \
influxd-ctl add-data influxdb-data-0:8088
对要添加的任何其他数据节点执行相同步骤。
您现在可以连接到任何正在运行的数据节点以使用您的集群。
有关如何使用数据节点镜像的更多详细信息,请参阅 InfluxDB 镜像文档。
配置
InfluxDB 元数据可以从配置文件进行配置,也可以使用环境变量进行配置。要挂载配置文件并将其与服务器一起使用,您可以使用此命令:
生成默认配置文件:
docker run --rm influxdb:meta influxd-meta config > influxdb-meta.conf
修改默认配置,现在它将在 $PWD 下可用。然后启动 InfluxDB Meta 容器。
docker run \
-v $PWD/influxdb-meta.conf:/etc/influxdb/influxdb-meta.conf:ro \
influxdb -config /etc/influxdb/influxdb-meta.conf
将 $PWD 修改为你想要存储配置文件的目录。
对于环境变量,格式是 INFLUXDB_$SECTION_$NAME 。所有破折号( - )都替换为下划线( _ )。如果变量不在某个部分中,那么省略该部分。
示例:
INFLUXDB_REPORTING_DISABLED=true
INFLUXDB_META_DIR=/path/to/metadir
INFLUXDB_ENTERPRISE_REGISTRATION_ENABLED=true
有关更多信息,请参阅如何安装 InfluxDB Enterprise 元节点。
许可证
查看此映像中包含的软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 influxdb/ 目录中找到。
对于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用都符合其中包含的所有软件的任何相关许可证。