Действительно ли Kubernetes отказался от Docker?
Действительно ли Kubernetes отказался от Docker?

Во-первых, давайте проясним: Kubernetes не сдался полностью Docker, но изменил Docker использование.

Это изменение главным образом связано с объявлением о прекращении поддержки Docker как среды выполнения контейнера, начиная с версии Kubernetes 1.20 (удаление Dockershim). Это означает, что, хотя образы контейнеров, созданные с помощью Docker, можно запускать в кластере Kubernetes, Kubernetes больше не будет использовать Docker в качестве среды выполнения контейнера.

1. Что такое Докер?

Docker — это механизм контейнеров приложений с открытым исходным кодом, который позволяет разработчикам упаковывать свои приложения и зависимости в портативный контейнер, а затем публиковать их на любой популярной машине Linux, которую также можно виртуализировать. Контейнеры полностью используют механизм «песочницы» и не имеют никаких интерфейсов друг с другом (как и в приложениях для iPhone). Что еще более важно, накладные расходы на производительность контейнера чрезвычайно низки. Docker использует модель архитектуры клиент-сервер (C/S) и использует удаленные API для управления и создания контейнеров Docker. Контейнеры Docker создаются из образов Docker. Изображения можно рассматривать как «шаблоны» для контейнеров, а контейнеры — это экземпляры объектов этих шаблонов. Docker предоставляет очень удобный способ использования изображений. Помимо использования локальных изображений, вы также можете загружать десятки тысяч изображений из Docker Hub.

2. Что такое Кубернетес?

Kubernetes (также известный как K8s) — это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями. Он был разработан Google и передан на поддержку Cloud Native Computing Foundation. Kubernetes предоставляет платформу для развертывания приложений, поддерживает масштабирование приложений и обработку сбоев, а также предоставляет ряд инструментов и сервисов для удовлетворения различных потребностей.

Основные возможности Kubernetes включают в себя

  • автоматизацияконтейнеризразвертыватьикопировать
  • в любое время Расширятьилиуменьшатьконтейнерколичество
  • Воляконтейнер Организуйте группы и предложитеконтейнермеждуизбалансировка нагрузки
  • Обнаружение сервисов и балансировка нагрузки
  • Автоматически монтировать систему хранения
  • Автоматические скользящие обновления
  • Самоисцеление,Если перезагрузка не удалась изконтейнер

3. В чем разница между Docker и Kubernetes?

  Хотя Docker и Kubernetes Оба являются инструментами, связанными с технологией контейнеризации, но в некоторых аспектах они существенно различаются. Область использования: Docker основнойсосредоточиться наиз — это пакет контейнеризации и запуска, который упрощает доставку приложений. и Kubernetes болеесосредоточиться найз - это управление координацией контейнера, включая автоматическое развертывание, расширение, запуск и планирование контейнера. Дизайн и архитектура: Docker Простой в использовании дизайн, простой в понимании и использовании. Его можно запустить на автономном компьютере или в сочетании с Docker Swarm Работайте вместе на нескольких машинах. Кубернетес Он более сложен, предоставляет больше функций и более высокую гибкость и предназначен для крупномасштабного запуска специализированных приложений на кластерах. Функции и возможности: Docker Непосредственно обрабатывает создание и запуск, в то время как Kubernetes Предоставляет более сложные инструменты планировщика и управления кластером. Кубернетес Он может планировать формирование нескольких контейнеров из приложений и имеет расширенные функции, такие как автоматическое расширение и самовосстановление. Экосистема и сообщество: Хотя Docker и Kubernetes оба имеют сильную поддержку сообщества, но Kubernetes Существующая сфера облачных вычислений и микросервисов в экосистеме богаче и поддерживает больше облачных платформ и интеграции продуктов.   В целом, Докер Сосредоточьтесь больше на жизненном цикле одного контейнера, в то время как Kubernetes Дажесосредоточиться кластер наконтейнеров из всего управляемого. В тренде микросервисы и облачные приложения, которые часто дополняют друг друга, Docker для контейнерных приложений, в то время как Kubernetes Используется для управления этими контейнерными приложениями.

4. Изменения в том, как Kubernetes использует Docker

  Во-первых, давайте проясним: Kubernetes не сдался полностью Docker, но изменил Docker использование.Это изменение главным образом связано с объявлением о прекращении поддержки Docker как среды выполнения контейнера, начиная с версии Kubernetes 1.20 (удаление Dockershim). Это означает, что, хотя образы контейнеров, созданные с помощью Docker, можно запускать в кластере Kubernetes, Kubernetes больше не будет использовать Docker в качестве среды выполнения контейнера.   Причиной этого изменения является Docker и Kubernetes технические различия между. Докер Это крупномасштабное приложение, содержащее множество функций, помимо среды выполнения контейнера, оно также включает в себя управление изображениями, хранилище, сеть и т. д. и Kubernetes Фактически, нужна только среда выполнения контейнера. Поэтому, чтобы облегчить Kubernetes бремя более эффективного управления контейнерами, Kubernetes Начните поддерживатьболеелегкийистандартизацияизконтейнеринтерфейс времени выполнения(CRI)。

5. Kuberetes не устранил Docker

 Это не означает, что Docker устарел, поскольку образы контейнеров, созданные Docker, по-прежнему могут работать в Kubernetes. Просто Kubernetes будет использовать другие среды выполнения контейнеров (например,Containerd или CRI-O) для прямого запуска этих образов. Сам образ Docker соответствует стандарту OCI (Open Container Initiative) и поэтому может использоваться любой стандартной средой выполнения контейнера.

6. Роль Docker в экосистеме Kubernetes

 В данном случае Docker — это скорее инструмент разработки, чем среда выполнения контейнера в производственной среде. Разработчики по-прежнему могут использовать Docker для создания, тестирования и развертывания образов контейнеров в кластерах Kubernetes. Фактически, это изменение делает Kubernetes более эффективным, поскольку он может напрямую взаимодействовать с базовым интерфейсом среды выполнения контейнера, сокращая ненужные промежуточные уровни.  Два примера кода, показывающих, как использовать контейнеры в среде Kubernetes. Первый пример — это файл Dockerfile, используемый для создания простого образа Docker; второй пример — это файл конфигурации развертывания Kubernetes (развертывание), используемый для развертывания этого образа в кластере Kubernetes. Эти два примера покажут, как развернуть контейнерное приложение Docker в кластере Kubernetes.

Пример 1: Dockerfile

В этом примере Dockerfile будет создан образ Docker простого приложения Node.js.

Язык кода:javascript
копировать
# Используйте официальный из Node.js Базовое зеркало как среда сборки
FROM node:14
# Установите рабочий каталог на /app
WORKDIR /app
# Воля package.json и package-lock.json копироватьприезжатьконтейнерсередина
COPY package*.json ./
# Установить зависимости приложения
RUN npm install
# Воляприложениеизисходный кодкопироватьприезжатьконтейнерсередина
COPY . .
# Приложение прослушивает порт во время работы
EXPOSE 8080
# Определите контейнер для запуска команды из при запуске
CMD ["node", "server.js"]

 В этом Dockerfile мы создаем новый образ на основе официального образа Node.js, устанавливаем зависимости приложения и устанавливаем команду, которая будет выполняться при запуске контейнера.

Пример 2. Файл конфигурации развертывания Kubernetes.

В этом примере файла YAML определяется развертывание Kubernetes для развертывания образа Docker, созданного выше.

Язык кода:javascript
копировать
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-app
  labels:
    app: nodejs-app
spec:
  replicas: 2  # Создать две копии
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
      - name: nodejs-container
        image: your-dockerhub-username/nodejs-app:latest  # обозначение Docker зеркало
        ports:
        - containerPort: 8080  # приложение-контейнер прослушивает порт

  в этом YAML файл, мы определяем файл с именем nodejs-app из Развертывание. Это Воляразвернуть две копии изконтейнера.,каждыйконтейнероба бегут your-dockerhub-username/nodejs-app:latest зеркало (здесь его нужно заменить на себя из Docker Hub пользовательимяизеркалоимя)。этотразвертывать Конфигурацияобозначение Понятноконтейнервнутреннийизприложение Прослушивающий порт 8080。   Объединив эти два примера, вы можете увидеть Docker и Kubernetes Как совместно создать приложение. Во-первых, используйте Docker Собери приложение иззеркало и пройди Kubernetes Конфигурация развертывания развертывает этот образ в кластере.

7、Подвести итог,Действительно ли Kubernetes отказался от Docker?

  Итак, мы можем сказать Kubernetes изменен на Docker использовать метод вместо того, чтобы полностью сдаваться Докер. Это изменение отражает больше Kubernetes Тенденция к стандартизации и развитию эффективности при сохранении Docker Существующиеконтейнер Технические области, основанные на основных ценностях, широко используются. верно Для разработчиков это означает, что они все равно могут использовать его во время разработки. Докер, в то время как Kubernetes В нем больше внимания уделяется организации контейнеризиурегулирования.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose