53 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								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/)
							 |