Как запустить несколько сайтов на одном хосте, так чтоб у каждого был свой набор Docker контейнеров и чтоб они были доступны по одному 80 порту?
Есть готовое решение: nginx-proxy/nginx-proxy
Автоматом перезапускается и генерит конфиг под работающие контейнеры.
Проекты должны торчать портами в одну общую сеть. Можно в несколько: сеть проекта + сеть для портов наружу.
На мой взгляд правильнее будет запустить один nginx на все сайты. Иначе если их будет несколько, то они могут конфликтовать. Я у себя так реализовал, то есть у каждого сайта свой конфиг файл в /etc/nginx/sites-enabled.
и все они слушает порт 80.

server {
	listen 80;
	listen [::]:80;

	server_name     etova.ru;
	
	location / {
		proxy_pass http://localhost:8080;
	}
}

server {
	listen 80;
	listen [::]:80;

	server_name     site.ru;
	
	location / {
		proxy_pass http://localhost:8081;
	}
}