Title
Create new category
Edit page index title
Edit category
Edit link
Discovery-client - Container Deployment
You can run discovery-client as a Docker container on every node in the
OpenStack cluster that talks to Lightbits storage. Controller nodes,
block (cinder-volume) nodes, and compute nodes all need it. This is an
alternative to the .deb / .rpm package install, and you can select whichever one fits your host management
model. The two installation methods are not meant to coexist on the
same host.
This guide covers a single-host install. Repeat the same steps on every node in the cluster.
Prerequisites
On the host:
- Docker engine with the
composeplugin (docker compose versionworks). - Root access - the container runs
privilegedand needshostnetworking. - NVMe/TCP kernel module loaded:
xxxxxxxxxxmodprobe nvme-tcpecho nvme-tcp | tee /etc/modules-load.d/nvme-tcp.conf/etc/nvme/hostidpresent (one-time per host). On most distributions, this is created automatically by thenvme-clipackage. If the file is missing, generate it using your distribution's standard procedure before continuing.- Network access from the host to the registry that holds the
discovery-clientimage, and to every Lightbits discovery endpoint (default port8009/tcp). - No package install of
discovery-clientrunning on this host. If you previously followed the.deb/.rpminstructions, stop and disable the systemd service first, and move the existing configuration out of the way:
xxxxxxxxxxsystemctl disable --now discovery-clientmv /etc/discovery-client/discovery-client.yaml /etc/discovery-client/discovery-client.yaml.pkg-bak- Consumer-placed files under /etc/discovery-client/discovery.d/ can stay. The container will pick them up.
Pulling the Image
The image is published to a Lightbits registry. Replace the registry, image name, and tag with the values you were given for your release:
xxxxxxxxxxexport DISCOVERY_CLIENT_IMG=docker.lightbitslabs.com/discovery-client/discovery-client:<version>Log in to the Lightbits registry (this requires credentials provided with your release - once per host):
xxxxxxxxxxdocker login docker.lightbitslabs.comPull the image:
xxxxxxxxxxdocker pull "$DISCOVERY_CLIENT_IMG"Configuring Discovery-client as a Container
discovery-client reads a single configuration file at
/etc/discovery-client/discovery-client.yaml inside the container. Lightbits bind-mounts the host directory /etc/discovery-client/ onto that path,
so the file lives on the host.
/etc/discovery-client/discovery-client.yaml:
xxxxxxxxxxclientConfigDir: /etc/discovery-client/discovery.d/internalDir: /etc/discovery-client/internal/reconnectInterval: 5slogPagePaginationEnabled: falsemaxIOQueues: 0nvmeHostIDPath: /etc/nvme/hostidkato: 10logging: filename: /etc/discovery-client/discovery-client.log maxAge: 96h maxSize: 100 level: info reportCaller: truedebug: metrics: true enablepprof: true endpoint: '[::]:6060'The values
above are a reference baseline; tune them for your environment. Set
logging.level: debug only when troubleshooting.
docker-compose
Save the following as $BASE_DIR/discovery-client-compose.yaml (any path
is fine, but the rest of this article uses that):
xxxxxxxxxxservices: discovery-client: image: ${DISCOVERY_CLIENT_IMG} container_name: discovery-client restart: unless-stopped privileged: true network_mode: host volumes: - /dev:/dev - /etc/discovery-client:/etc/discovery-client healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6060/metrics"] interval: 10s timeout: 5s retries: 3Start:
xxxxxxxxxxdocker compose -f "$BASE_DIR/discovery-client-compose.yaml" up -dVerify:
The container should be Up and reach healthy:
xxxxxxxxxxdocker ps --filter name=discovery-clientThe metrics endpoint should respond as follows:
xxxxxxxxxxcurl -fsS http://localhost:6060/metrics | headTo move to a newer image tag, update DISCOVERY_CLIENT_IMG and re-render the compose file (or edit the image: line in place). Then:
xxxxxxxxxxdocker compose -f "$BASE_DIR/discovery-client-compose.yaml" pulldocker compose -f "$BASE_DIR/discovery-client-compose.yaml" up -dThe bind-mounted host directory is preserved across upgrades, so the
internal cache and any consumer-placed discovery.d/*.conf files
carry over.
Stop/Remove
xxxxxxxxxxdocker compose -f "$BASE_DIR/discovery-client-compose.yaml" downThe host directory /etc/discovery-client is left in place. Remove
it manually if you are decommissioning the host.
© 2026 Lightbits Labs™