在docker中启动InfluxDB容器时如何创建数据库

问题描述 投票:0回答:2

我想在 docker 中启动 InfluxDB 容器时创建一个数据库。我解决了之前提出的问题 在 docker 中使用默认数据库名称启动 InfluxDB 容器,该问题已有大约 3 年历史了。

参考该问题的解决方案,我使用以下命令来运行图像。

docker run -d --name influxdb -p 8086:8086 \
-e INFLUXDB_DB=databasenew \
-e INFLUXDB_ADMIN_USER=admin \
-e INFLUXDB_ADMIN_PASSWORD=admin \
-v /var/lib/influxdb:/var/lib/influxdb \
influxdb:1.8

但是,它不会创建名为“databasenew”的新数据库。

在上面的 docker 命令中,我使用

-v /var/lib/influxdb:/var/lib/influxdb
将本地 influxdb 数据挂载到容器中。

当我在 docker 命令中使用

-v influxdb:/var/lib/influxdb
时,它会创建一个名为“databasenew”的数据库。但数据库位置不是我本地的 influxdb 位置。

那么在启动 influxdb 容器并将主机位置 (/var/lib/influxdb) 安装为卷时如何创建数据库。

更新

检查日志后,我意识到,如果挂载的卷已经有数据库,即使数据库名称不同,docker也会避免创建新数据库。如果卷是新的并且不存在数据库,则 docker 引擎会创建

INFLUXDB_DB

中提到的新数据库

在某些情况下,我想在现有卷中创建新数据库。我怎样才能做到这一点?

docker influxdb
2个回答
0
投票

您上面使用的命令仅对生成新数据库有效。正如您同时已经发现的那样。但是,有机会摆脱这个旧数据库。

假设您的容器仅托管一个数据库,您可以删除安装到容器中的本地目录的内容。该目录包含的信息不再存在,容器将再次初始化数据库。

如果您确实有更复杂的环境,您可以使用配置脚本。这里我参考了“自定义初始化脚本”部分中的influxdb docker image的文档。总而言之,influxdb docker 容器内有一个文件夹,当容器启动时,每个脚本都会在其中执行。在这里您可以检查是否存在。


0
投票

当你的容器已经初始化并且你想添加额外的数据库时,你可以在容器内执行命令来创建新的数据库(例如

some_database
,所以我们需要执行
create database some_database;

注意:我假设您的容器名称是

influxdb

我们可以通过两种方式实现:

1.登录容器然后执行命令

要登录只需执行:

docker exec -it influxdb bash

然后在里面使用以下命令创建数据库:

influx -execute 'create database some_database;'

然后只需

exit
离开容器

2.一支班轮一次完成

在容器中执行命令并一次退出

docker exec influxdb influx -execute 'create database some_database;'

更多帮助完整命令

要列出我们可以执行的所有数据库:

docker exec influxdb influx -execute 'show databases;'

如果您想删除一些不再需要的数据库,可以使用

docker exec influxdb influx -execute 'drop database some_database;'
© www.soinside.com 2019 - 2024. All rights reserved.