docs-v2/content/influxdb/v1/introduction/install/docker.md

6.3 KiB

title description menu related alt_links
Install and run InfluxDB using Docker Install and run InfluxDB OSS v{{< current-version >}} using Docker. Configure and operate InfluxDB in a Docker container.
influxdb_v1
name weight parent
Use Docker 60 Install InfluxDB
/influxdb/v1/introduction/install/, Install InfluxDB OSS v1
/influxdb/v1/introduction/get-started/, Get started with InfluxDB OSS v1
/influxdb/v1/administration/authentication_and_authorization/, Authentication and authorization in InfluxDB OSS v1
/influxdb/v1/guides/write_data/, Write data to InfluxDB OSS v1
/influxdb/v1/guides/query_data/, Query data in InfluxDB OSS v1
/influxdb/v1/administration/config/, Configure InfluxDB OSS v1
core enterprise v2
/influxdb3/core/install/ /influxdb3/enterprise/install/ /influxdb/v2/install/use-docker-compose/

Install and run InfluxDB OSS v{{< current-version >}} using Docker containers. This guide covers Docker installation, configuration, and initialization options.

Install and run InfluxDB

Pull the InfluxDB v1.x image

docker pull influxdb:{{< latest-patch >}}

Volume permissions

!Important]
The InfluxDB Docker container runs as user influxdb with UID/GID 1500.
When mounting volumes for persistent storage, ensure the mounted directory on the host is owned by UID/GID 1500, or InfluxDB may not have permission to write data.

Set the correct ownership before starting the container:

Create the data directory

mkdir -p data

Set ownership to UID/GID 1500

sudo chown -R 1500:1500 data

Start InfluxDB

!Important]
On MacOS due to issues related to docker desktop's VM and local binds
you must use either a *delegated local directory* or a *named volume* when starting a container.

{{< tabs-wrapper >}} {{% tabs %}} Linux/Windows MacOS (Docker Desktop) {{% /tabs %}} {{% tab-content %}} Start a basic InfluxDB container with persistent storage:

docker run -p 8086:8086 \
  -v $PWD/data:/var/lib/influxdb \
  influxdb:{{< latest-patch >}}

{{% /tab-content %}} {{% tab-content %}} On MacOS, you must use either a delegated local directory or a named volume when starting an InfluxDB container.

Option A: Use a delegated local directory

docker run -p 8086:8086 \
    -v $PWD/data-test2:/var/lib/influxdb:delegated \
    influxdb:{{< latest-patch >}}

Option B: Use a named docker volume (still local, but managed by Docker Desktop)

docker run -d --name influxdb \
    -p 8086:8086 \
    -v influxdb-data:/var/lib/influxdb \
    influxdb:{{< latest-patch >}}

{{% /tab-content %}} {{< /tabs-wrapper >}}

InfluxDB is now running and available at http://localhost:8086.

Configure InfluxDB

Using environment variables

Configure InfluxDB settings using environment variables:

docker run -p 8086:8086 \
  -v $PWD/data:/var/lib/influxdb \
  -e INFLUXDB_REPORTING_DISABLED=true \
  -e INFLUXDB_HTTP_AUTH_ENABLED=true \
  -e INFLUXDB_HTTP_LOG_ENABLED=true \
  influxdb:{{< latest-patch >}}

Using a configuration file

Generate a default configuration file:

docker run --rm influxdb:{{< latest-patch >}} influxd config > influxdb.conf

Start InfluxDB with your custom configuration:

docker run -p 8086:8086 \
  -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
  -v $PWD/data:/var/lib/influxdb \
  influxdb:{{< latest-patch >}}

Initialize InfluxDB

Automatic initialization (for development)

!Warning]
Automatic initialization with InfluxDB v1 is not recommended for production.
Use this approach only for development and testing.

Automatically create a database and admin user on first startup:

docker run -p 8086:8086 \
  -v $PWD/data:/var/lib/influxdb \
  -e INFLUXDB_DB=mydb \
  -e INFLUXDB_HTTP_AUTH_ENABLED=true \
  -e INFLUXDB_ADMIN_USER=admin \
  -e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \
  influxdb:{{< latest-patch >}}

Environment variables for user creation:

  • INFLUXDB_USER: Create a user with no privileges
  • INFLUXDB_USER_PASSWORD: Password for the user
  • INFLUXDB_READ_USER: Create a user who can read from INFLUXDB_DB
  • INFLUXDB_READ_USER_PASSWORD: Password for the read user
  • INFLUXDB_WRITE_USER: Create a user who can write to INFLUXDB_DB
  • INFLUXDB_WRITE_USER_PASSWORD: Password for the write user

Custom initialization scripts

InfluxDB v1.x Docker containers support custom initialization scripts for testing scenarios:

Create an initialization script (init-scripts/setup.iql):

CREATE DATABASE sensors;
CREATE DATABASE logs;

CREATE USER "telegraf" WITH PASSWORD 'secret123';
GRANT WRITE ON "sensors" TO "telegraf";

CREATE USER "grafana" WITH PASSWORD 'secret456';
GRANT READ ON "sensors" TO "grafana";
GRANT READ ON "logs" TO "grafana";

CREATE RETENTION POLICY "one_week" ON "sensors" DURATION 1w REPLICATION 1 DEFAULT;

Run with initialization scripts:

docker run -p 8086:8086 \
  -v $PWD/data:/var/lib/influxdb \
  -v $PWD/init-scripts:/docker-entrypoint-initdb.d \
  influxdb:{{< latest-patch >}}

Supported script types:

  • Shell scripts (.sh)
  • InfluxDB query language files (.iql)
!Important]
Initialization scripts only run on first startup when the data directory is empty.
Scripts execute in alphabetical order based on filename.

Access the InfluxDB CLI

To access the InfluxDB command line interface from within the Docker container:

docker exec -it <container-name> influx

Replace <container-name> with your InfluxDB container name or ID.

Next steps

Once you have InfluxDB running in Docker, see the Get started guide to:

  • Create databases
  • Write and query data
  • Learn InfluxQL basics