Imagen de Docker que extiende la InfluxDB oficial con las variables de entorno de _e para ser compatibles con Docker Secrets
Esta imagen se comporta exactamente como se describe en la documentación de las imágenes de los padres. La única diferencia es que para todas las variables de entorno de contraseña hay una variable de entorno Password_File correspondiente, que se utiliza para determinar un archivo para leer el valor de los padres, si no se establece.
Descripción de la imagen de los padres a continuación.
InfluxDB es una base de datos de series temporales construida desde cero para manejar las altas cargas de escritura y consulta. InfluxDB está destinado a usarse como un almacén de respaldo para cualquier caso de uso que involucre grandes cantidades de datos de tiempo de tiempo, incluida la monitorización de DevOps, las métricas de aplicación, los datos del sensor de IoT y el análisis en tiempo real.
Documentación de InfluxDB
La imagen de InfluxDB expone un volumen compartido debajo /var/lib/influxdb
, por lo que puede montar un directorio de host a ese punto para acceder a los datos de contenedores persistidos. Una invocación típica del contenedor podría ser:
$ docker run -p 8086:8086
-v $PWD:/var/lib/influxdb
influxdb
Modifique $PWD
al directorio donde desea almacenar datos asociados con el contenedor InfluxDB.
También puede hacer que Docker controle el punto de montaje de volumen utilizando un volumen con nombre.
$ docker run -p 8086:8086
-v influxdb:/var/lib/influxdb
influxdb
Los siguientes puertos son importantes y son utilizados por InfluxDB.
El puerto API HTTP se expusirá automáticamente cuando use docker run -P
.
La interfaz de administrador no se expuso automáticamente cuando se usa docker run -P
y se deshabilita de forma predeterminada. La interfaz del administrador requiere que el navegador web tenga acceso a InfluxDB en el mismo puerto en el contenedor que desde el navegador web. Dado que -P
expone el puerto HTTP al host en un puerto aleatorio, la interfaz del administrador no es compatible con esta configuración.
La interfaz del administrador está en desuso a partir de 1.1.0 y se eliminará en 1.3.0.
Encuentre más sobre los puntos finales y los puertos API aquí.
InfluxDB se puede configurar desde un archivo de configuración o utilizando variables de entorno. Para montar un archivo de configuración y usarlo con el servidor, puede usar este comando:
Genere el archivo de configuración predeterminado:
$ docker run --rm influxdb influxd config > influxdb.conf
Modifique la configuración predeterminada, que ahora estará disponible en $PWD
. Luego comience el contenedor de InfluxDB.
$ docker run -p 8086:8086
-v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro
influxdb -config /etc/influxdb/influxdb.conf
Modifique $PWD
al directorio donde desea almacenar el archivo de configuración.
Para las variables de entorno, el formato es INFLUXDB_$SECTION_$NAME
. Todos los guiones ( -
) se reemplazan con subrayos ( _
). Si la variable no está en una sección, entonces omita esa parte.
Ejemplos:
INFLUXDB_REPORTING_DISABLED=true
INFLUXDB_META_DIR=/path/to/metadir
INFLUXDB_DATA_QUERY_LOG_ENABLED=false
Encuentre más sobre la configuración de InfluxDB aquí
InfluxDB admite el protocolo de línea de grafito, pero el servicio y los puertos no están expuestos de forma predeterminada. Para ejecutar InfluxDB con soporte de grafito habilitado, puede usar un archivo de configuración o establecer las variables de entorno apropiadas. Ejecute InfluxDB con la configuración de grafito predeterminada:
docker run -p 8086:8086 -p 2003:2003
-e INFLUXDB_GRAPHITE_ENABLED=true
influxdb
Vea el ReadMe en GitHub para una documentación más detallada para configurar el servicio de grafito. Para aprovechar las plantillas de grafito, debe usar un archivo de configuración al emitir un archivo de configuración predeterminado utilizando los pasos anteriores y modificar la sección [[graphite]]
.
La interfaz del administrador está en desuso a partir de 1.1.0 y se eliminará en 1.3.0. Está deshabilitado de forma predeterminada. Si es necesario, aún se puede habilitar estableciendo una variable de entorno como a continuación:
docker run -p 8086:8086 -p 8083:8083
-e INFLUXDB_ADMIN_ENABLED=true
influxdb
Para usar la interfaz Administrador, tanto la API HTTP como la API de la interfaz de administrador deben reenviarse al mismo puerto.
Creando un DB llamado MyDB:
$ curl -G http://localhost:8086/query --data-urlencode " q=CREATE DATABASE mydb "
Insertar en el DB:
$ curl -i -XPOST ' http://localhost:8086/write?db=mydb ' --data-binary ' cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000 '
Lea más sobre esto en la documentación oficial
Inicie el contenedor:
$ docker run --name=influxdb -d -p 8086:8086 influxdb
Ejecute el cliente de entrada en otro contenedor:
$ docker run --rm --link=influxdb -it influxdb influx -host influxdb
En este momento, no puede usar docker exec
para ejecutar el cliente de Influx ya que docker exec
no asignará correctamente un TTY. Esto se debe a un error actual en Docker que se detalla en Docker/Docker#8755.
La imagen InfluxDB contiene alguna funcionalidad adicional para inicializar una base de datos. Estas opciones no se sugieren para la producción, pero son bastante útiles cuando se ejecutan instancias independientes para las pruebas.
El script de inicialización de la base de datos solo se llamará cuando se ejecuta influxd
. No se ejecutará al ejecutar ningún otro programa.
La imagen InfluxDB utiliza varias variables de entorno para configurar automáticamente ciertas partes del servidor. Pueden ayudarlo significativamente a usar esta imagen.
Inicializa automáticamente una base de datos con el nombre de esta variable de entorno.
Habilita la autenticación. O esto debe estar configurado o auth-enabled = true
debe establecerse dentro del archivo de configuración para cualquier opción relacionada con la autenticación a continuación para funcionar.
El nombre del usuario administrador a crear. Si esto es INNSET, no se crea un usuario administrador.
La contraseña para el usuario administrador configurado con INFLUXDB_ADMIN_USER
. Si esto no es establecido, se genera e imprime una contraseña aleatoria en el estándar.
El nombre de un usuario que se creará sin privilegios. Si se establece INFLUXDB_DB
, este usuario se le otorgará permisos de lectura y escritura para esa base de datos.
La contraseña para el usuario configurada con INFLUXDB_USER
. Si esto no es establecido, se genera e imprime una contraseña aleatoria en el estándar.
El nombre de un usuario que se creará con privilegios de lectura en INFLUXDB_DB
. Si no se establece INFLUXDB_DB
, este usuario no tendrá permisos otorgados.
La contraseña para el usuario configurada con INFLUXDB_READ_USER
. Si esto es INNSET, se genera e imprime una contraseña aleatoria en el estándar.
El nombre de un usuario que se creará con privilegios de escritura en INFLUXDB_DB
. Si no se establece INFLUXDB_DB
, este usuario no tendrá permisos otorgados.
La contraseña para el usuario configurada con INFLUXDB_WRITE_USER
. Si esto no es establecido, se genera e imprime una contraseña aleatoria en el estándar.
Si la imagen de Docker encuentra algún archivo con las extensiones .sh
o .iql
dentro de la carpeta /docker-entrypoint-initdb.d
, los ejecutará. El orden en el que se ejecutan está determinado por el shell. Esto suele ser orden alfabético.
Para inicializar manualmente la base de datos y la salida, el script /init-influxdb.sh
se puede usar directamente. Se necesitan los mismos parámetros que el comando influxd run
. Como ejemplo:
$ 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
Lo anterior crearía la base de datos db0
, crearía un usuario administrador con la contraseña supersecretpassword
, luego crearía el usuario telegraf
con la contraseña secreta de su Telegraf. Luego saldría y dejaría atrás los archivos que creó en el volumen que montó.
Las imágenes influxdb
vienen en muchos sabores, cada una diseñada para un caso de uso específico.
influxdb:<version>
Esta es la imagen de facto. Si no está seguro de cuáles son sus necesidades, probablemente desee usar este. Está diseñado para ser utilizado tanto como un contenedor de descarga (monte su código fuente e inicie el contenedor para iniciar su aplicación), así como la base para construir otras imágenes.
influxdb:alpine
Esta imagen se basa en el popular proyecto Alpine Linux, disponible en la imagen oficial alpine
. Alpine Linux es mucho más pequeño que la mayoría de las imágenes base de distribución (~ 5 MB), y por lo tanto conduce a imágenes mucho más delgadas en general.
Esta variante es muy recomendable cuando se desea el tamaño de la imagen final lo más pequeño posible. La principal advertencia a tener en cuenta es que usa Musl LIBC en lugar de GLIBC y amigos, por lo que cierto software podría encontrarse con problemas dependiendo de la profundidad de sus requisitos LIBC. Sin embargo, la mayoría del software no tiene un problema con esto, por lo que esta variante suele ser una opción muy segura. Vea este hilo de comentarios de noticias del hacker para obtener más discusión sobre los temas que podrían surgir y algunas comparaciones pro/con el uso de imágenes basadas en alpinas.
Para minimizar el tamaño de la imagen, es poco común para herramientas relacionadas adicionales (como git
o bash
) que se incluirá en las imágenes basadas en alpinas. Usando esta imagen como base, agregue las cosas que necesita en su propio Dockerfile (consulte la descripción de la imagen alpine
para ver ejemplos de cómo instalar paquetes si no está familiarizado).
Vea la información de la licencia para el software contenido en esta imagen.
Al igual que con todas las imágenes de Docker, probablemente también contienen otro software que puede estar bajo otras licencias (como Bash, etc. de la distribución base, junto con cualquier dependencia directa o indirecta del software primario que se está conteniendo).
Se puede encontrar alguna información de licencia adicional que se pudo detectar automáticamente en el directorio de influxdb/
repo-info
Repository.
En cuanto a cualquier uso de imagen previamente construido, es responsabilidad del usuario de la imagen asegurarse de que cualquier uso de esta imagen cumpla con cualquier licencia relevante para todo el software contenido.