I think the issue (why Alpine wiki didn’t help) is that many of the usual startup hooks don’t fire in a container, since it doesn’t “boot” in the usual sense. That apparently includes the
/etc/network/if-*.d/ directories, which might get processed if you created interfaces via
/etc/network/interfaces, but not if LXD does the job from outside.
As a workaround, I enabled the local service:
alpine$: rc-update add local default
I then created a shell script
/etc/local.d/some-script.start (hence the local service):
ip (…) dev eth0 # modify veth endpoint created by LXD
chmod 755 some-script.start and you’re good to go.
Setting a static ip address this way works too;
lxc ls will display it correctly. Haven’t tested thoroughly yet, but traffic over the bridge appears to be routed normally.