Yeah, you’re right. The storagenode image contains neither the storagenode nor the storagenode-updater binaries. It has only supervisord, and the entrypoint script.
The entrypoint scripts checks and installs the minimum version of the storagenode-updater binary if it’s not already installed, and later installs the storagenode binary.
Once both the storagenode and storagenode-updater are installed, the entrypoint scripts starts supervisord which then starts the storagenode and updater processes.
Note that storagenode-updater does not only update the storagenode binary but it updates itself as well.
Edit: I should add that watchtower may be useful for updating the base image, in cases where we might decide to update supervisord (and/or its configuration - /etc/supervisor/supervisord.conf), libc, etc., and then we push a new image.
But that might be rare, like once or twice a year.