我想在 docker 中启动 InfluxDB 容器时创建一个数据库。我浏览了之前提出的问题Launching a InfluxDBcontainer in docker with a default database name that is about 3 years old。
通过参考该问题的解决方案,我使用以下命令来运行图像。
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
Run Code Online (Sandbox Code Playgroud)
但是,它不会创建名为“databasenew”的新数据库。
在上面的 docker 命令中,我使用-v /var/lib/influxdb:/var/lib/influxdb将本地 influxdb 数据挂载到容器中。
当我-v influxdb:/var/lib/influxdb在 docker 命令中使用时,它会创建一个名为“databasenew”的数据库。但数据库位置不是我本地的 influxdb 位置。
那么如何在启动 influxdb 容器并将主机位置 (/var/lib/influxdb) 安装为卷时创建数据库。
更新
检查日志后,我意识到,如果挂载的卷已有数据库,即使数据库名称不同,docker也会避免创建新数据库。如果卷是新的并且不存在数据库,则 docker 引擎会创建中提到的新数据库INFLUXDB_DB
在某些情况下,我想在现有卷中创建新数据库。我怎样才能做到这一点?
小智 0
您上面使用的命令仅对生成新数据库有效。正如您同时已经发现的那样。但是,有机会摆脱这个旧数据库。
假设您的容器仅托管一个数据库,您可以删除安装到容器中的本地目录的内容。该目录包含的信息不再存在,容器将再次初始化数据库。
如果您确实有更复杂的环境,则可以使用配置脚本。这里我参考了“自定义初始化脚本”部分中influxdb docker image的文档。总而言之,influxdb docker 容器内有一个文件夹,当容器启动时,每个脚本都会在其中执行。在这里你可以检查是否存在。
| 归档时间: |
|
| 查看次数: |
2949 次 |
| 最近记录: |