【发布时间】:2017-03-15 01:19:04
【问题描述】:
我已在 docker 容器 (Kubernetes) 中安装了 influxdb,并且已将持久卷安装到该容器。但是 influxdb 没有将数据写入该卷。 谁能告诉我步骤,以便 influxdb 将数据写入特定卷。 谢谢
【问题讨论】:
标签: docker kubernetes influxdb
我已在 docker 容器 (Kubernetes) 中安装了 influxdb,并且已将持久卷安装到该容器。但是 influxdb 没有将数据写入该卷。 谁能告诉我步骤,以便 influxdb 将数据写入特定卷。 谢谢
【问题讨论】:
标签: docker kubernetes influxdb
简答:
$ docker run -p 8083:8083 -p 8086:8086 \
-v $PWD:/var/lib/influxdb \
influxdb
用外部卷的路径修改 $PWD。p>
长答案:
docker run -p 8083:8083 -p 8086:8086 influxdb
默认情况下,这会将数据存储在 /var/lib/influxdb 中。所有 InfluxDB 数据都保存在那里。要使其成为持久卷(推荐):
$ docker run -p 8083:8083 -p 8086:8086 \
-v $PWD:/var/lib/influxdb \
influxdb
将 $PWD 修改为您要存储与 InfluxDB 容器关联的数据的目录。
例如,
$ docker run -p 8083:8083 -p 8086:8086 \
-v /your/home:/var/lib/influxdb \
influxdb
这会将流入数据存储在主机上的 /your/home 中。
【讨论】:
对于 InfluxDB 2.0:
在 InfluxDB 2.0(或至少 2.0.3)中,数据目录已更改。现在默认情况下,东西存储在~/.influxdbv2 下(其中~ 在quay.io/influxdb/influxdb:v2.0.3 图像中是/root/),这对我来说似乎不是很docker-ish。
其实bolt(各种键值配置)和engine(TSM数据库)有2个数据存储。如果您愿意,可以通过 --engine-path=/data/engine --bolt-path=/data/bolt 参数将它们更改为 influxd。
因此,下面的docker-compose.yml 应该将 InfluxDB2 数据存储到一个卷中。
version: '3.3'
services:
influxdb:
image: 'quay.io/influxdb/influxdb:v2.0.3'
restart: unless-stopped
ports:
- '8086:8086'
volumes:
- data:/root/.influxdbv2
volumes:
data:
现在,Docker Hub 上没有官方 _/influxdb:2.0(另见 influxdb#16649)。我希望这个图像(一旦发布)有一些更好的默认值(quay.io/influxdb/influxdb:v2.0.3 甚至不创建匿名卷;因此一旦容器被移除,任何数据都会丢失)。因此,在此处尝试这些操作之前,请检查 Docker Hub 是否有 InfluxDB 2.0 映像。
【讨论】:
如果你从docker库中拉取官方influxdb镜像,数据文件的默认路径是:
/var/lib/influxdb
要验证,请运行独立实例:
docker run -p 8083:8083 -p 8086:8086 \
-v $PWD:/var/lib/influxdb \
influxdb
查看默认配置:
docker run --rm influxdb influxd config > influxdb.conf
然后使用vim influxdb.conf
使用自定义配置运行 influxdb:
docker run -p 8086:8086 \
-v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
influxdb -config /etc/influxdb/influxdb.conf
【讨论】:
对于 InfluxDB 2.0.4:
Docker Hub 上现在有一张官方图片。但与quay.io/influxdb/influxdb:v2.0.4 映像不同,其中数据存储在/root/.influxdbv2 中,您必须将/var/lib/influxdb2 挂载为一个卷。
【讨论】: