Погружаясь в Docker, Google Cloud и Kubernetes, и пока еще не ясно поняли все три из них, мне кажется, что эти продукты пересекаются, но они не совместимы.
Например, docker-compose.yml
файл необходимо переписать, чтобы приложение могло быть развернуто в Kubernetes.
Может ли кто-нибудь дать общее грубое описание того, где Docker, Docker Compose, Docker Cloud и Kubernetes пересекаются и где один зависит от другого?
docker
kubernetes
docker-compose
Джордж Кацанос
источник
источник
В дополнение к ответу @ yamenk , я хотел бы добавить здесь несколько деталей, которые могут помочь людям в их путешествии по пониманию Kubernetes.
Короткий ответ:
docker-compose
: это инструмент, который берет YAML-файл, который описывает ваше мультиконтейнерное приложение и помогает вам создавать , запускать / останавливать , удалять все эти контейнеры без необходимости вводить несколькоdocker ...
команд для каждого контейнера.Kubernetes
: платформа для управления контейнерными рабочими нагрузками и сервисами, которая облегчает декларативную настройку и автоматизацию. Что? 🤔 Продолжайте читать ...Docker Compose
Kubernetes
Многие люди утверждают, что Kubernetes трудно учиться. Это потому, что это решает ряд проблем, и люди пытаются понять, не зная всех предпосылок. Это усложняет. Начните собирать части головоломки вместе, читая о понятиях / терминах, подобных следующему. Этот процесс поможет вам понять, какие проблемы пытается решить Kubernetes:
А поскольку в отношении контейнеров и управления ими существует много разных вещей, следите за ландшафтом Cloud Native:
Интерактивная версия здесь: landscape.cncf.io/
Обновления
источник
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deployЕсли вы используете сетевые контейнеры с одним и тем же хостом, перейдите к docker compose .
Если вы используете сетевые контейнеры на нескольких хостах, выбирайте kubernetes .
источник
первое различие между контейнерным двигателем и контейнерным оркестратором.
docker
это механизм контейнеров, он позволяет вам собирать и запускать обычно не более одного контейнера, локально на вашем ПК для целей разработки.docker-compose
является утилитой Docker, которая запускает несколько контейнеров и позволяет им совместно использовать тома и сети с помощью функций механизма докера, запускается локально для эмуляции состава службы и удаленно в кластерах.Kubernetes - это платформа оркестровки контейнеров, она заботится о запуске контейнеров и расширении возможностей движка, чтобы контейнеры можно было составлять и масштабировать для обслуживания сложных приложений (например, PaaS, управляемый вами или облачным провайдером). Основная функция Kubernetes - это отделение инфраструктуры от приложения с помощью контейнеров, а также она открыта для других движков, которые Docker, например, может запускать контейнеры с rkt или cri-o.
Docker cloud - это также предложение PaaS, которое позволит вам запускать и организовывать контейнеры через
docker
API движка.Теперь, в зависимости от ваших потребностей, уровня контроля над инфраструктурой и целевой аудиторией, вы можете использовать Kubernetes на неизолированном металле, Azure ACS или Google GKE и т. Д.
Надеюсь, что это помогло :) С уважением
источник
Docker Compose не является готовым инструментом для производства. Он отлично работает для PoC или сред разработки, но ему не хватает многих возможностей, которые являются более или менее настольными ставками для серьезного производственного использования. Swarm более готов к производству, но я бы никогда не инвестировал в Swarm в новом сценарии. Kubernetes выиграл битву за оркестровку, о чем свидетельствует его включение в Docker Desktop и его предложение всех основных облачных провайдеров. Kubernetes намного более способный и имеет намного больше сообщества и корпоративной поддержки.
Я бы порекомендовал окунуться в некоторые учебные пособия по Kubernetes, доступные в Pluralsight, Linux Academy и т. Д., И раскрутить кластер, чтобы поэкспериментировать с выбранной облачной платформой (EKS, AKS, GKE и т. Д.). Если вы пытаетесь раскрутиться на голом металле, взгляните на OpenShift, но осознайте, что в этой настройке вы теряете часть магии Кубернетов.
источник
Докер Составьте:
В
docker-compose.yml
файле каждая запись может при желанииdocker-compose
создать изображение. каждая запись может представлять отдельный контейнер, который мы хотим построить, и каждая запись определяет сетевые требования или порты.Kubernetes:
Kubernetes ожидает, что все образы уже созданы, и для каждого объекта, который мы хотим создать, есть один файл конфигурации, и мы должны вручную настроить все сети.
Поэтому мы гарантируем, что наш образ размещен на Docker Hub, создадим один файл конфигурации для создания контейнера и один файл конфигурации для настройки сети.
источник
Docker-Compose - это файл развертывания, который предопределил один или несколько контейнеров с его средой, такой как тома, сеть, команда для запуска и так далее.
Kubernetes, с другой стороны, представляет собой систему, которая управляет докерными контейнерами и другими микросервисами и делает их масштабируемыми и надежными на нескольких узлах.
источник
Docker compose: контейнеры docker можно запускать напрямую без помощи любого файла yaml. Но с помощью Docker compose свойства контейнера могут быть определены внутри файла с именем docker-compose.yml file. пожалуйста, найдите приведенный ниже пример файла yml для более подробной информации.
имя изображения, количество реплик и т. д. можно настроить через файл yml.
Kubernetes: это платформа управления контейнерами, запущенная поверх Docker, созданная Google. Docker swam - это еще одна платформа управления контейнерами, созданная самим Docker. Kubernetes также предоставляет возможность сохранять конфигурацию, связанную с модулями (соответствуют контейнеру в Docker) в файле yaml, например, в docker compose. пример файла yaml
здесь также могут быть предоставлены изображения, порты, которые должны быть открыты, и сопоставления портов с хостом и т. д. подобно docker compose, kubectl apply -f - это команда для запуска этого файла.
источник