freeCodeCamp/guide/russian/containers/index.md

53 lines
11 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
title: Containers
localeTitle: Контейнеры
---
## Контейнеры
Контейнеры - это решение проблемы обеспечения надежной работы программного обеспечения при переносе из одной вычислительной среды в другую. Это может быть от ноутбука разработчика до тестовой среды, от промежуточной среды до производства и, возможно, от физической машины в центр данных на виртуальную машину в частном или общедоступном облаке.
Другими словами, Контейнер состоит из целой среды выполнения: приложения, а также всех его зависимостей, библиотек и других двоичных файлов и файлов конфигурации, необходимых для его запуска, в комплекте в один пакет. Конкурируя платформу приложений и ее зависимости, различия в распределении ОС и базовой инфраструктуре отвлекаются.
Контейнеры - это виртуализация на уровне операционной системы - функция операционной системы, в которой ядро ​​допускает существование нескольких изолированных экземпляров пользовательского пространства. Такие экземпляры, называемые контейнерами, могут выглядеть как настоящие компьютеры с точки зрения запущенных в них программ.
## Виртуальные машины
Виртуальная виртуальная машина по существу является эмуляцией реального компьютера, который выполняет такие программы, как настоящий компьютер. Виртуальные машины запускаются поверх физической машины с использованием «гипервизора». Гипервизор, в свою очередь, работает либо на главной машине, либо на «голом-металле».
_Гипервизор_ - это часть программного обеспечения, прошивки или аппаратного обеспечения, на котором работают виртуальные машины. Гипервизоры сами запускаются на физических компьютерах, называемых «главной машиной». Хост-машина обеспечивает виртуальные машины ресурсами, включая оперативную память и процессор. Эти ресурсы делятся между виртуальными машинами и могут быть распределены по вашему усмотрению. Поэтому, если на одной виртуальной машине работает более ресурсоемкое приложение, вы можете выделить больше ресурсов для этого, чем другие виртуальные машины, запущенные на одном и том же хост-компьютере.
Виртуальная машина, запущенная на главной машине (опять же, используя гипервизор), также часто называется гостевой машиной. Этот гостевой компьютер содержит как приложение, так и все, что ему нужно для запуска этого приложения (например, системные двоичные файлы и библиотеки). Он также включает в себя весь собственный виртуализированный аппаратный стек, включая виртуализированные сетевые адаптеры, хранилище и процессор, что означает, что у него также есть собственная полноценная гостевая операционная система. Изнутри гостевая машина ведет себя как свое подразделение с собственными выделенными ресурсами. Извне мы знаем, что это VM-ресурсы совместного доступа, предоставляемые хост-машиной.
Как упоминалось выше, гостевая машина может работать либо на размещенном гипервизоре, либо на гипервизоре с белым металлом. Между ними есть некоторые важные различия.
Во-первых, размещенный гипервизор виртуализации работает на операционной системе хост-машины. Например, на компьютере с OSX может быть установлена ​​виртуальная машина (например, VirtualBox или VMware Workstation 8) поверх этой ОС. У VM нет прямого доступа к аппаратным средствам, поэтому она должна проходить через операционную систему хоста (в нашем случае - OS OS Mac).
Преимущество размещенного гипервизора заключается в том, что базовое оборудование менее важно. Операционная система хоста отвечает за аппаратные драйверы вместо самого гипервизора и поэтому считается более «совместимой с оборудованием». С другой стороны, этот дополнительный уровень между аппаратным обеспечением и гипервизором создает больше ресурсов, что снижает производительность виртуальной машины.
Негабаритная гипервизорная среда устраняет проблему производительности, устанавливая и запуская с аппаратного обеспечения хост-машины. Поскольку он напрямую взаимодействует с базовым оборудованием, для его работы не требуется операционная система хоста. В этом случае первым, установленным на сервере хост-машины в качестве операционной системы, будет гипервизор. В отличие от размещенного гипервизора, гипервизор с белым металлом имеет свои собственные драйверы устройств и взаимодействует с каждым компонентом напрямую для любых задач ввода-вывода, обработки или ОС. Это приводит к повышению производительности, масштабируемости и стабильности. Компромисс заключается в том, что аппаратная совместимость ограничена, потому что в гипервизоре может быть встроено столько драйверов устройств.
После всех этих разговоров о гипервизорах вам может быть интересно, почему нам нужен этот дополнительный «гипервизор» между виртуальной машиной и главной машиной.
Ну, поскольку виртуальная машина имеет собственную виртуальную операционную систему, гипервизор играет важную роль в обеспечении виртуальных машин платформой для управления и выполнения этой гостевой операционной системы. Он позволяет хост-компьютерам делиться своими ресурсами между виртуальными машинами, которые работают в качестве гостей поверх них.
## Контейнер
В отличие от виртуальной машины, которая обеспечивает аппаратную виртуализацию, контейнер обеспечивает виртуализацию на уровне операционной системы путем абстрагирования «пространства пользователя». Вы увидите, что я имею в виду, когда мы распаковываем термин контейнер.
Для всех целей и задач контейнеры выглядят как виртуальная машина. Например, они имеют личное пространство для обработки, могут выполнять команды как root, иметь частный сетевой интерфейс и IP-адрес, разрешать настраиваемые маршруты и правила iptable, монтировать файловые системы и т. Д.
Одно большое различие между контейнерами и виртуальными машинами заключается в том, что контейнеры _совместно_ используют ядро ​​хост-системы с другими контейнерами.
## оркестровка
В производстве задействовано несколько каркасов для оркестровки: докер-рой и кубернеты
## Список поставщиков контейнеров
Bellow - это небольшой список наиболее используемых поставщиков контейнеров, которые можно использовать.
* [докер](https://www.docker.com/)
* [Kubernetes](https://kubernetes.io/)
* [Amazon AWS ECS](https://aws.amazon.com/ecs/?nc1=h_ls)
* [РКТ](https://github.com/rkt/rkt)
* [Лазурная ткань](https://azure.microsoft.com/en-us/services/service-fabric/)