Zero Downtime During Upgrade: Best Method?

I want to achieve the following:
0) Have many services running from last release’s (docker-compose up)

  1. Build new images for the services in my docker-compose file (docker-compose build)
  2. Launch new containers based on those images (docker-compose up)
  3. Cut networking to old set of services / containers as soon as new ones come up & then stop them
  4. Basically have zero downtime during the upgrade

What’s the most elegant & easiest way to achieve this?

EDIT: The formatting looks weird, but I 100% wrote it correctly - there’s something wrong with the forum software for numbered lists.