2015-06-13 4 views
45

Я разработчик Java. Мы используем Weblogic для размещения наших приложений. Мне сказали заглянуть в замену weblogic альтернативой open-source. Мы планируем использовать SpringBoot. Мы также рассматриваем Docker/Cloud Foundry. Однако Docker/Cloud Foundry - новая территория для меня.В чем разница между Cloud Foundry и Docker?

  1. Может кто-нибудь, пожалуйста, скажите мне разницу между Cloud Foundry и Docker?
  2. Если мы используем Docker, но не облачный литейный цех, что мы упускаем?
  3. Если мы используем Cloud Foundry, но не Docker, что мы упускаем?

Благодарим за помощь.

+0

Было бы правильнее сравнивать Docker с [Warden] (https: // GitHub .com/cloudfoundry/warden) (используется под капотом CF). –

+0

http://heidloff.net/nh/home.nsf/article.xsp?id=20.02.2015092308NHEBUJ.htm – satks

+1

Вы не можете сравнить PaaS (Платформа как услуга) с технологией Container. Контейнерная технология - это лишь небольшая часть Cloud Foundry. –

ответ

105

Docker - это технология создания и работы Linux-контейнеров. В некотором смысле, вы можете думать об этом как о легком ВМ. Контейнер для докеров для приложения SpringBoot будет состоять из изображения докеров, в котором будет в основном содержаться файловая система со всеми вещами, необходимыми для запуска вашего приложения (JVM, ваш исходный код и т. Д.) И метаданных контейнера докеров, в котором говорится демонам докеров для запуска приложения внутри изображения (например, какие переменные среды устанавливать, какие порты выставлять, какие команды запускать и т. д.). Демон docker будет использовать функции Linux, такие как группы и пространства имен ядер, для запуска контейнера отдельно от других процессов, запущенных на главной машине. Docker несколько низкоуровневый, поскольку вам нужно указать все, что входит в образ, и оно запускает произвольные вещи, а именно все, что вы вкладываете в свой образ, и говорите ему, чтобы он запускался. Контейнер докера, который вы получаете, очень портативен, поэтому вы можете создавать, тестировать и запускать свой контейнер докеров локально для разработки, а затем отправлять этот контейнер на производственный узел, на котором также работает демон-докер, и быть уверенным, что вы получаете то же самое.

Cloud Foundry работает на более высоком уровне абстракции, причем приложения являются концепцией первого класса. Cloud Foundry использует технологию контейнеризации, подобную докере, для создания портативных изображений, а затем запускает их, но это детализация реализации, и вам не нужно указывать все детали. В новых версиях Cloud Foundry также поддерживаются изображения докеров, поэтому вы можете указать детали, если хотите, но также имеет рабочий процесс «buildpack», где он автоматически обнаруживает приложение Java при нажатии вашего приложения и будет знать, включить все вещи, необходимые для среды выполнения Java, когда она создает изображение.

С облачным литейным цехом, поскольку приложения и управление приложениями являются концепциями первого класса, и поскольку он работает на более высоком уровне, вы получаете всевозможные вещи бесплатно. Например, вы можете легко масштабировать приложение по горизонтали (добавлять экземпляры), например. cf scale my_app -i 5 или по вертикали, cf scale my_app -m 2G (для установки выделенной памяти для каждого экземпляра). Вы получаете потоковые журналы приложений: cf logs my_app. Cloud Foundry дает вам много отказоустойчивости бесплатно, поэтому, если один из ваших экземпляров приложения сбой, или сам процесс запуска контейнеров приложений сбой (что похоже на демон docker), или если виртуальная машина хоста, работающая с контейнером «Убойный процесс» или аппаратный кластер, в котором находится эта VM, «Cloud Foundry» автоматически вернет ваши экземпляры.

Демон-докеры - это единственный процесс, который вы можете запустить на любой машине Linux. Поэтому, если вы делаете что-то маленькое и простое, и вам нужно самому сделать большую часть настройки, легче запустить и запустить как локально, так и в разработке с помощью докеров. С докере также легче получить доступ и поделиться созданным ими докеревым изображением, поэтому, как только вы создали изображение, его можно поместить в репозиторий докеров, а затем вы можете запустить его на любом другом демонстранте докеров. С Cloud Foundry встроенное изображение, как правило, представляет собой деталь реализации, и на самом деле у вас нет доступа к нему, поэтому вы не можете извлечь это изображение и запустить его на другой установке Cloud Foundry.

Существуют различные проекты, предназначенные для того, чтобы сделать Cloud Foundry доступнее и проще в настройке, при этом предоставляя вам много преимуществ PaaS. Некоторые из этих проектов также направлены на то, чтобы вы могли сочетать использование докеров и преимуществ докеров, а также получать много преимуществ PaaS, получаемых от Cloud Foundry.

См. Lattice и Cloud Foundry on BOSH-Lite.

Есть также несколько сервисов Cloud Foundry.

См Pivotal Web Services и IBM BlueMix

Есть также много не-CF проектов, предназначенных поставить платформу слой вокруг базовой технологии Docker, в обоих обкатку своего собственного и хостинг-услуг сортов.

См Google's Kubernetes project и Amazon Container Service

Полное раскрытие: Я инженер-программист работает над Cloud Foundry в Pivotal

+0

Обладает ли литейным цехом несколько контейнеров Docker? и поддерживает ли он более одного порта? Мы хотим установить стек ELK, и нам нужны три порта. – powder366

+0

Являются ли порты входящего трафика из Интернета или для связи между контейнером и контейнером? Если последнее, то вы сможете это сделать. Вы можете увидеть, как я развернул Spark на примере службы приложений Cloud Foundry [здесь] (https://gist.github.com/Amit-PivotalLabs/7c86c92aae3123ac809e81795a41acfa#deploy-the-spark-cluster), которая включает в себя нажатие нескольких изображений Docker и позволяя им разговаривать друг с другом через сотни портов (так как очевидно, что Spark работает). –

+0

Входящий трафик из Интернета, т. Е. Использовать обычный интерфейс Kibana и Elasticsearch WEB, чтобы назвать два. Также почему контейнеры не поддерживают состояние? У нас есть данные, которые мы хотим хранить в контейнерах при перезапуске. – powder366