For years I've used a single Zope installation with Zeo for many sites. I tried replicate that with docker but eventually gave up. Instead I followed @jensens advice and just used a container for each site (with RelStorage instead of zeo). It end up being much easier than fiddling with zeo.conf and zope.conf.
If need, I can create another container with the same RelStorage config to scale the site (kinda like docker compose does)
For migration I used collective.importexport, pretty straightforward.