1) Как понять среду операционной системы (ОС), в которой работает приложение? На какой операционной системе...
Стек определяет операционную систему, в которой будет работать ваше приложение. В манифесте есть атрибут stack
или вы можете использовать cf push -s
для указания стека.
Вы можете запустить cf stacks
, чтобы увидеть все доступные стеки.
В большинстве сред на момент написания у вас будет cflinuxfs2
. Это Ubuntu Trusty 14.04. Он будет заменен на cflinuxfs3
, который является Ubuntu Bionic 18.04, потому что Trusty поддерживается только до апреля 2019 года. Однако у вас всегда будет некоторый стек cflinuxfs*
, просто число будет меняться в зависимости от того, когда вы читаете это.
В некоторых средах у вас также может быть стек на базе Windows. Первоначальный стек на базе Windows — windows2012r2
. Это довольно старо, когда я пишу это, поэтому вы, вероятно, больше его не увидите. Скорее всего, вы увидите windows2016
или, возможно, что-то еще более новое, в зависимости от того, когда вы это прочитаете.
Если вам нужно больше контроля, вы всегда можете нажать контейнер докеров. Это позволит вам выбрать полный образ ОС для вашего приложения.
2) Чем приложение, работающее на экземпляре bosh, отличается от контейнера Docker?
Приложения, работающие в Cloud Foundry, не развертываются BOSH напрямую. Приложение работает в контейнере. Контейнер запланирован и управляется Диего. Diego — это развернутая виртуальная машина BOSH. Так что там есть дополнительный слой.
По сути, разница между запуском вашего приложения в Cloud Foundry и запуском приложения в контейнере Docker минимальна. Они оба работают в «контейнере» Linux, который имеет ограничения, наложенные на него пространствами имен и контрольными группами ядра.
Разница заключается в том, а) как вы создаете контейнер и б) как контейнер развертывается.
С Cloud Foundry вы не создаете контейнер. Вы предоставляете свое приложение CF, и CF создает образ контейнера на основе выбранного стека и дополнительного программного обеспечения, добавленного сборочными пакетами. Вывод в терминологии CF называется «дроплетом», но в основном это образ OCI (это будет тем более с пакетами сборки v3). Когда вам нужно обновить или добавить новый код, вы просто повторяете процесс и снова нажимаете. Стек и пакеты сборки, которые автоматически обновляются платформой, в свою очередь, предоставят вам исправленный и актуальный образ приложения.
С Docker вы вручную создаете свой образ с нуля или из какого-то надежного базового образа. Вы добавляете свои собственные среды выполнения и код приложения. Когда вам нужно обновиться, вы должны получить обновления из базового образа и среды выполнения или, что еще хуже, обновить свой образ с нуля.
Когда дело доходит до развертывания, CF делает все это за вас автоматически. Он может запускать любое количество экземпляров вашего приложения, которое вы хотите, и автоматически размещает их, чтобы ваше приложение было устойчивым к сбоям в инфраструктуре и в CF.
С Docker это зависит от вас или все чаще от какого-либо другого инструмента, такого как Kubernetes.
Надеюсь, это поможет!
person
Daniel Mikusa
schedule
09.02.2019