在 Docker 中运行
在 splunk/splunk 容器中保持许可指纹不变:固定 machine-id、持久化 /opt/splunk/etc、固定 MAC。
许可绑定主机指纹,指纹由 /etc/machine-id(或 /sys/class/dmi/id/product_uuid)和 Splunk 实例 GUID($SPLUNK_HOME/etc/instance.cfg)决定,没有 machine-id 时计入网卡 MAC。官方 splunk/splunk 镜像的 /etc/machine-id 为空,容器通常也读不到可用的 MAC。2.0.10 及更早版本在这种容器中激活失败;2.0.11 起改用 App 目录中保存的随机主机标识,可以正常激活。
该标识随 App 目录存在:卸载或删除 App、更换 /opt/splunk/etc 卷后,指纹都会改变。容器部署仍应挂载一个固定的 machine-id 文件,并把 /opt/splunk/etc 放在持久卷上。Splunk 的 Docker 部署本身也要求持久化该目录。
准备 machine-id 文件
在 Docker 主机上生成一次,长期保留并备份。文件内容为 32 个小写十六进制字符。
- Linux 主机:沿用主机自己的
/etc/machine-id,或另建一个。 - Docker Desktop(Windows、macOS):用下面的命令生成。
# Linux、macOS 终端,或 Windows 上的 Git Bash
python -c "import uuid; print(uuid.uuid4().hex)" > splunk-machine-id# PowerShell
python -c "import uuid; print(uuid.uuid4().hex)" | Out-File -Encoding ascii splunk-machine-idWindows PowerShell 5.1 中不用 > 重定向,它写出 UTF-16 编码,App 无法读取。
也可以让一个运行中的 Splunk 容器生成,保存到主机后供以后的容器挂载(PowerShell 中把 > 换成 | Out-File -Encoding ascii):
docker exec splunk sh -c 'od -An -N16 -tx1 /dev/urandom | tr -d " \n"' > splunk-machine-id挂载到容器
把文件以只读方式挂载到 /etc/machine-id,/opt/splunk/etc 使用命名卷。
docker run -d --name splunk \
-v /srv/splunk/machine-id:/etc/machine-id:ro \
-v splunk-etc:/opt/splunk/etc \
-e SPLUNK_START_ARGS=--accept-license \
-e SPLUNK_GENERAL_TERMS=--accept-sgt-current-at-splunk-com \
-e SPLUNK_PASSWORD=<管理员口令> \
splunk/splunk:<版本>docker-compose:
services:
splunk:
image: splunk/splunk:<版本>
environment:
SPLUNK_START_ARGS: --accept-license
SPLUNK_GENERAL_TERMS: --accept-sgt-current-at-splunk-com
SPLUNK_PASSWORD: <管理员口令>
volumes:
- ./splunk-machine-id:/etc/machine-id:ro
- splunk-etc:/opt/splunk/etc
volumes:
splunk-etc:在容器内直接写 /etc/machine-id 而不挂载,重建容器后丢失。
重建容器
docker restart 不改变指纹。重建容器(docker rm 后 docker run,或升级镜像后 docker compose up)时,以下条件同时满足,指纹才保持不变:
- 挂载同一个 machine-id 文件。
- 复用同一个
/opt/splunk/etc卷。 - 没有挂载 machine-id、容器又能读到真实 MAC 时(host 网络,或镜像带网络工具),指纹依赖 MAC:用
--mac-address(compose 中为mac_address:)固定 MAC,或每次都使用 host 网络。挂载了 machine-id 时,MAC 变化不影响指纹。
2.0.10 及更早版本无论有没有 machine-id 都计入 MAC。这些版本激活的主机升级后旧绑定继续有效;2.0.12 起,在线许可在升级后约 5 分钟内在同一节点内改绑到新指纹。
任一条件不满足,指纹即改变,付费功能锁定。在线许可重新激活,离线许可联系支持重新绑定。
检查指纹
在 产品激活 页的 主机指纹 卡片查看本容器计算出的值(本机标识 · 仅供参考)。重启和升级前后,该值保持一致。
卡片提示「本机读不出硬件指纹(容器里没有 machine-id);离线证无法绑定到这台机器,请在宿主机或有稳定 machine-id 的实例上激活。」时,按上文挂载 machine-id 后重建容器。