Docker图像扩展了官方的InfluxDB,其中_file环境变量与Docker Secrets兼容
此图像的行为完全按照父映像文档的描述。唯一的区别是,对于所有密码环境变量,都有一个相应的password_file环境变量,该变量用于确定文件以从中读取父级值,如果不设置父。
父母的图像描述下面。
InfluxDB是一个从头开始构建的时间序列数据库,以处理高写入和查询负载。 InfluxDB旨在用作任何涉及大量时间戳数据的用例,包括DevOps监视,应用指标,IoT传感器数据和实时分析。
流入文档
InfluxDB图像在/var/lib/influxdb
下公开了共享卷,因此您可以将主机目录安装到该点以访问持久的容器数据。容器的典型调用可能是:
$ docker run -p 8086:8086
-v $PWD:/var/lib/influxdb
influxdb
将$PWD
修改为目录,您要存储与InfluxDB容器关联的数据。
您还可以使用命名卷来控制Docker控制音量架。
$ docker run -p 8086:8086
-v influxdb:/var/lib/influxdb
influxdb
以下端口很重要,并由infuxdb使用。
使用docker run -P
时,HTTP API端口将自动暴露。
使用docker run -P
时,管理员接口不会自动暴露,并且默认情况下被禁用。 Adminstrator接口要求Web浏览器与Web浏览器的容器中同一端口上的InfluxDB访问。由于-P
将HTTP端口公开到随机端口上的主机上,因此管理员接口与此设置不兼容。
管理员界面被弃用为1.1.0,并将在1.3.0中删除。
在此处查找有关API端点和端口的更多信息。
可以从配置文件或使用环境变量配置InfuluxDB。要安装配置文件并将其与服务器一起使用,您可以使用此命令:
生成默认配置文件:
$ docker run --rm influxdb influxd config > influxdb.conf
修改默认配置,该配置现在将在$PWD
下可用。然后启动InfluxDB容器。
$ docker run -p 8086:8086
-v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro
influxdb -config /etc/influxdb/influxdb.conf
将$PWD
修改为要存储配置文件的目录。
对于环境变量,格式为INFLUXDB_$SECTION_$NAME
。所有破折号( -
)被下划线( _
)代替。如果该变量不在部分中,请省略该部分。
示例:
INFLUXDB_REPORTING_DISABLED=true
INFLUXDB_META_DIR=/path/to/metadir
INFLUXDB_DATA_QUERY_LOG_ENABLED=false
在此处找到有关配置InfluxDB的更多信息
InfluxDB支持石墨行协议,但是默认情况下,服务和端口不会公开。要启用使用Graphite支持的InfluxDB,您可以使用配置文件或设置适当的环境变量。使用默认的石墨配置运行InfluxDB:
docker run -p 8086:8086 -p 2003:2003
-e INFLUXDB_GRAPHITE_ENABLED=true
influxdb
有关设置石墨服务的更详细的文档,请参见GitHub上的Readme。为了利用石墨模板,您应该通过使用上面的步骤输出默认配置文件并修改[[graphite]]
部分来使用配置文件。
管理员界面被弃用为1.1.0,并将在1.3.0中删除。默认情况下它是禁用的。如果需要,仍然可以通过设置以下环境变量来启用它:
docker run -p 8086:8086 -p 8083:8083
-e INFLUXDB_ADMIN_ENABLED=true
influxdb
要使用管理员接口,必须将HTTP API和管理员接口API转发到同一端口。
创建一个名为MyDB的DB:
$ curl -G http://localhost:8086/query --data-urlencode " q=CREATE DATABASE mydb "
插入DB:
$ 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
在另一个容器中运行涌入客户端:
$ docker run --rm --link=influxdb -it influxdb influx -host influxdb
目前,您无法使用docker exec
运行涌入客户端,因为docker exec
无法正确分配TTY。这是由于Docker/Docker#8755中详细介绍的当前错误。
influxdb图像包含一些额外的功能来初始化数据库。这些选项不建议生产,但在运行独立测试实例时非常有用。
数据库初始化脚本仅在运行influxd
时才调用。运行任何其他程序时,它将不会执行。
InfluxDB图像使用多个环境变量自动配置服务器的某些部分。它们可能会大大帮助您使用此图像。
自动将具有此环境变量名称的数据库初始化。
启用身份验证。必须设置此功能,或者必须在配置文件中设置auth-enabled = true
true以下任何与身份验证相关的选项的工作。
要创建的管理用户的名称。如果尚不确定,则不会创建管理用户。
使用INFLUXDB_ADMIN_USER
配置的管理用户的密码。如果尚不确定,则会生成随机密码并打印以标准输出。
没有特权的用户名称。如果设置了INFLUXDB_DB
,则将为该数据库授予此用户的读写权限。
用INFLUXDB_USER
配置的用户的密码。如果尚不确定,则会生成随机密码并打印以标准输出。
在INFLUXDB_DB
上使用读取特权创建的用户名称。如果未设置INFLUXDB_DB
,则该用户将没有授予权限。
用INFLUXDB_READ_USER
配置的用户的密码。如果尚不确定,则会生成随机密码并打印以标准输出。
在INFLUXDB_DB
上使用写入特权创建的用户名称。如果未设置INFLUXDB_DB
,则该用户将没有授予权限。
用INFLUXDB_WRITE_USER
配置的用户的密码。如果尚不确定,则会生成随机密码并打印以标准输出。
如果docker映像在/docker-entrypoint-initdb.d
文件夹中找到了带有扩展名为.sh
或.iql
的任何文件,它将执行它们。它们执行的顺序由外壳确定。这通常是字母顺序。
要手动初始化数据库和退出,可以直接使用/init-influxdb.sh
脚本。它采用与influxd run
命令相同的参数。例如:
$ docker run --rm
-e INFLUXDB_DB=db0 -e INFLUXDB_ADMIN_ENABLED=true
-e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_USER=supersecretpassword
-e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=secretpassword
-v $PWD:/var/lib/influxdb
/init-influxdb.sh
以上将创建数据库db0
,使用密码supersecretpassword
创建管理用户,然后使用Telegraf的秘密密码创建telegraf
用户。然后,它将退出并留下其在您安装的卷中创建的任何文件。
influxdb
图像有多种口味,每个味道都为特定的用例设计。
influxdb:<version>
这是Defatso图像。如果您不确定自己的需求是什么,则可能要使用此需求。它被设计为既用作扔掉容器(安装源代码并启动容器以启动您的应用程序),也可以用作构建其他图像的基础。
influxdb:alpine
该图像基于alpine
官方图像中可用的流行高山Linux项目。高山Linux比大多数分布基本图像(〜5MB)小得多,因此总体上会导致大量较小的图像。
强烈建议当最终图像大小尽可能小时。要注意的主要警告是,它确实使用MUSL LIBC代替GLIBC和朋友,因此某些软件可能会根据其LIBC要求的深度遇到问题。但是,大多数软件都没有问题,因此这种变体通常是一个非常安全的选择。有关更多讨论可能出现的问题以及使用基于高山的图像的一些Pro/Con比较的更多讨论,请参见此黑客新闻评论主题。
为了最大程度地减少图像尺寸,对于基于高山的图像中包含的其他相关工具(例如git
或bash
)并不常见。将此图像作为基础,在自己的Dockerfile中添加所需的东西(如果您不熟悉,请参见alpine
Image描述,以获取如何安装软件包的示例)。
查看此图像中包含的软件的许可证信息。
与所有Docker图像一样,这些可能还包含其他软件,这些软件可能是其他许可(例如基本分布中的bash等),以及所包含的主要软件的任何直接或间接依赖性)。
可以在repo-info
存储库的influxdb/
Directory中找到一些能够自动检测的其他许可信息。
至于任何预构建的图像使用情况,图像用户的责任是确保此图像的任何使用都符合其中包含的所有软件的任何相关许可。