You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Docker] Upgrading from version 1.96.0 to version 1.97.0 results in invalid config #6
I have upgraded the docker image from 1.96.0 to 1.97.0
And after starting the image the config was invalid resulting in the shared ip no longer beeing assigned.
When checking the config the following message appeared:
Keepalived rejected it:
Unable to read build config options file
Reverting back to 1.96.0 did result back to a working setup.
Thanks for the precise report and the diagnosis. You found exactly what happened.
1.97.0 moved the image to Debian 13, whose Keepalived is built reproducibly: the build-options string lives in /etc/keepalived/keepalived.config-opts instead of the binary, and Keepalived refuses to start without it. Docker seeds a named volume from the image only when the volume is created empty, so a volume populated by 1.96.0 hides the new file. Fresh installs never see this; every upgrade did.
The fix is in #7: the image keeps a copy of the file next to the binary and the entrypoint puts it into /etc/keepalived on every start, so it is there for upgraded volumes and always matches the Keepalived in the image.
Your workaround (copying the file into the volume) is safe to keep until you pull the fixed image. Keepalived does not check the file's contents, so a copy from another build does no harm, and the entrypoint will overwrite it on the next start anyway.
Activity
stormbyte commentedon Oct 13, 2026
it seems that the file
keepalived.config-optsis not being copied into the mount on upgrade.I got the contents from this command
but because of the mount overrides
/etc/keepalivedit can't reach the/etc/keepalived/keepalived.config-optsavandeputte commentedon Oct 17, 2026
Thanks for the precise report and the diagnosis. You found exactly what happened.
1.97.0 moved the image to Debian 13, whose Keepalived is built reproducibly: the build-options string lives in
/etc/keepalived/keepalived.config-optsinstead of the binary, and Keepalived refuses to start without it. Docker seeds a named volume from the image only when the volume is created empty, so a volume populated by 1.96.0 hides the new file. Fresh installs never see this; every upgrade did.The fix is in #7: the image keeps a copy of the file next to the binary and the entrypoint puts it into
/etc/keepalivedon every start, so it is there for upgraded volumes and always matches the Keepalived in the image.Your workaround (copying the file into the volume) is safe to keep until you pull the fixed image. Keepalived does not check the file's contents, so a copy from another build does no harm, and the entrypoint will overwrite it on the next start anyway.