Какая разница между докерером и кубернетами?

Погружаясь в Docker, Google Cloud и Kubernetes, и пока еще не совсем ясно поняли все три из них, мне кажется, что эти продукты пересекаются, но они не совместимы.

Например, файл docker-compose необходимо переписать, чтобы приложение можно было развернуть в Kubernetes.

Может ли кто-нибудь дать общее описание того, где перекрываются Docker, Docker-Compose, Docker Cloud и Kubernetes и где одно зависит от другого?

Ответ 1

Докер:

Docker - это контейнерная технология, которая позволяет вам контейнировать ваши приложения. Docker - это ядро для использования других технологий.

Докер Составьте:

Позволяет настраивать и запускать несколько док-контейнеров. В основном это используется в качестве помощника, когда вы хотите запустить несколько контейнеров Docker и не хотите запускать каждый из них отдельно, используя docker run... Docker compose используется для запуска контейнеров на одном хосте.

Докер Рой:

Docker Swarm предназначен для запуска и подключения контейнеров на нескольких хостах. Docker swarm - это инструмент управления и оркестровки контейнерных кластеров. Он управляет контейнерами, работающими на нескольких хостах, и выполняет такие функции, как масштабирование, запуск нового контейнера при сбое, сетевые контейнеры...

Docker Swarm - это докер в производстве. Это встроенный инструмент оркестровки Docker, встроенный в Docker Engine.

Док файл Swarm с именем stack file очень похож на файл docker compose.

Kubernetes:

Инструмент оркестровки контейнеров, разработанный Google. Цель Кубернетеса очень похожа на цель для роя Docker.

Docker Cloud:

Платная корпоративная докерская служба, позволяющая создавать и запускать контейнеры на облачных или локальных серверах. Он предоставляет веб-интерфейс и центральную панель управления для запуска и управления контейнерами, а также предоставляет все функции докера в удобном веб-интерфейсе.

Обновить:

Docker cloud "частично" снят с производства

Службы в Docker Cloud, которые обеспечивают управление приложениями, узлами и кластером роя, будут закрыты 21 мая... автоматические сборки и службы хранения реестра не будут затронуты и будут по-прежнему доступны

Ответ 2

В дополнение к ответу @yamenk, я хотел бы добавить здесь несколько деталей, которые могут помочь людям в их путешествии по пониманию Kubernetes.

Короткий ответ:

  • docker-compose: это инструмент, который берет YAML файл, который описывает ваше мультиконтейнерное приложение и помогает вам создавать, запускать/останавливать, удалять все эти контейнеры без необходимости вводить несколько команд docker... для каждого контейнера.
  • Kubernetes: это платформа для управления контейнерными рабочими нагрузками и сервисами, которая облегчает декларативную настройку и автоматизацию. Что? 🤔 Продолжайте читать...

Docker Compose

(из документов): Compose - это инструмент для определения и запуска многоконтейнерных приложений Docker. С Compose вы используете файл YAML для настройки служб приложений. Затем с помощью одной команды вы создаете и запускаете все службы из вашей конфигурации.

Compose имеет команды для управления всем жизненным циклом вашего приложения:

  • Запускать, останавливать и перестраивать службы
  • Просмотр статуса запущенных сервисов
  • Потоковая запись журнала запущенных сервисов
  • Запустить одноразовую команду в службе

Kubernetes

(из Введения в Kubernetes): Kubernetes - это контейнерный оркестратор, такой как Docker Swarm, Mesos Marathon, Amazon ECS, Hashicorp Nomad. Контейнерные оркестраторы - это инструменты, которые группируют хосты для формирования кластера и помогают нам убедиться в правильности приложений:

  • отказоустойчивы,
  • можно масштабировать, и делать это по требованию
  • оптимально использовать ресурсы
  • может обнаруживать другие приложения автоматически и общаться друг с другом
  • доступны из внешнего мира
  • можно обновить/откатить без каких-либо простоев.

Многие люди утверждают, что Kubernetes трудно учиться. Это потому, что это решает ряд проблем, и люди пытаются понять, не зная всех предпосылок. Это усложняет. Начните собирать части головоломки вместе, читая о понятиях/терминах, подобных следующему. Этот процесс поможет вам понять, какие проблемы пытается решить Kubernetes:

  • 12-факторные приложения,
  • Автоматическая упаковка
  • Механизмы самовосстановления,
  • Горизонтальное масштабирование,
  • Обнаружение услуг и балансировка нагрузки,
  • Автоматические развертывания и откаты,
  • Сине-зеленые развертывания/Канарские развертывания
  • Секреты и управление конфигурацией,
  • Хранение оркестровки

А поскольку в отношении контейнеров и управления ими существует много разных вещей, следите за ландшафтом Cloud Native:

Интерактивная версия здесь: landscape.cncf.io/

enter image description here

Ответ 3

первое различие между движком контейнера и контейнером-оркестром.

docker - это контейнерный движок, он заставляет вас создавать и запускать не более одного контейнера в большинстве случаев локально на вашем ПК для целей разработки.

docker-compose - это утилита Docker для запуска нескольких контейнеров и позволяет им обмениваться томами и сетью через функции движка докеров, запускается локально, чтобы эмулировать состав услуги и удаленно на кластерах.

Kubernetes - это платформа для оркестровки контейнеров, она заботится о запуске контейнеров и улучшает возможности движка, поэтому контейнеры могут быть составлены и масштабированы для обслуживания сложных приложений (например, PaaS, управляемый вами или облачным провайдером). Основная функция Kubernetes - отделить инфраструктуру от приложения с помощью контейнеров, а также открыть для других движков, которые Docker, например, может запускать контейнеры с помощью rkt или cri-o.

Облако докеров также является предложением PaaS, которое позволит запускать и организовывать контейнеры через API-интерфейс docker.

Теперь, в зависимости от ваших потребностей, уровня контроля над инфраструктурой и целевой аудиторией, вы можете использовать либо Kubernetes на baremetal, либо Azure ACS или Google GKE и т.д.

Надеюсь, это помогло:) Отношения

Ответ 4

Если вы используете сетевые контейнеры с одним и тем же хостом, перейдите на docker compose.

Если вы используете сетевые контейнеры на нескольких хостах, выберите kubernetes.

Ответ 5

Докер Составьте:

В файле docker-compose.yml каждая запись может дополнительно получить docker-compose для создания образа. каждая запись может представлять отдельный контейнер, который мы хотим построить, и каждая запись определяет сетевые требования или порты.

Kubernetes:

Kubernetes ожидает, что все образы уже будут созданы, и для каждого объекта, который мы хотим создать, есть один файл конфигурации, и мы должны вручную настроить все сети.

Поэтому мы гарантируем, что наш образ размещен на Docker Hub, создадим один файл конфигурации для создания контейнера и один файл конфигурации для настройки сети.

Ответ 6

Docker-Compose - это файл развертывания, который предопределил один или несколько контейнеров с его средой, такой как тома, сеть, команда для запуска и так далее.

Kubernetes, с другой стороны, представляет собой систему, которая управляет докерными контейнерами и другими микросервисами и делает их масштабируемыми и надежными на нескольких узлах.

Ответ 7

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