Ответ 1
Концептуально оба файла выполняют одну и ту же цель - развертывание и настройку ваших контейнеров на устройствах докеров.
Сначала был создан инструмент Docker-compose, и его цель - "определять и запускать многоконтейнерные приложения Docker" на одном устройстве докеров. (см. docker составить обзор)
Вы используете
docker-compose up
для создания/обновления ваших контейнеров, сетей, томов и т.д.
Если Docker Stack используется в Docker Swarm (инструмент для оркестровки и планирования Docker), и поэтому он имеет дополнительные параметры конфигурации (то есть реплики, развертывание, роли), которые не нужны ни одному движку докеров.
Файл стека интерпретируется
docker stack
команды. Эта команда может быть вызвана только из диспетчера рой-докеров.
Вы можете преобразовать docker-compose.yml в docker-cloud.yml и обратно. Однако, как указано в вашем вопросе, вы должны обратить внимание на различия. Кроме того, вам нужно иметь в виду, что существуют разные версии для компоновки докеров. В настоящее время последняя версия - версия 3. (https://docs.docker.com/compose/compose-file/)
Изменить: интересный блог, который может помочь понять различия, можно найти здесь https://blog.nimbleci.com/2016/09/14/docker-stacks-and-why-we-need-them/