12+
Виртуализация и контейнеризация

Бесплатный фрагмент - Виртуализация и контейнеризация

Учебное пособие

Введите сумму не менее null ₽, если хотите поддержать автора, или скачайте книгу бесплатно.Подробнее

Объем: 152 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Предисловие

Всё, что мы обсуждаем в данном пособии, Вам предстоит сделать в рамках лабораторной работы. Вам нужно научиться это делать. Вы потренируетесь и должны быть готовы выполнить любое действие с пониманием. Работаем — желательно — дома, не спеша, разобравшись, натренировавшись.

Напомним, что в учебном плане предусмотрено много часов для самостоятельной работы студентов (СРС). В рамках СРС вам предлагается самостоятельно освоить материал лабораторных работ. Тогда на занятиях с преподавателем у вас будет время продемонстрировать свои познания и умения — каждому студенту индивидуально.

Операционная система — это инструмент, это вещь для работы, для использования. Это кнопки, которые каждый должен уметь нажимать. Вот это от вас требуется, и этим наш предмет отличается от всех остальных.

Введение

В данном пособии мы разберём тему, которая стала модной в последние лет пять. Всё начиналось с виртуальных машин. То, что мы имеем сегодня, называется словом «контейнеры». Это развитие идеи виртуальных машин.

Нас будут интересовать четыре технологии в области виртуализации и контейнеризации:

— Hyper-V;

— Sandbox;

— WSL

— Docker.

В качестве заданий мы предлагаем просмотреть некоторые статьи в интернете и выполнить простые упражнения на компьютере.

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

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

Вариант первый. В интернете есть готовые бесплатные сервисы по переводу веб-страниц: Яндекс, Гугл и прочие.

А вот и первое задание. Просмотрите в Википедии статью под названием «Ложные друзья переводчика». Выясните, в чем заключается проблема перевода, если английское слово звучит очень похоже на русское.

Переключитесь на английский вариант этой статьи и просмотрите автоматический перевод сайта на сервисах Яндекс и Google:

Яндекс — Переводчик — Перевод сайтов — Введите адрес сайта

Google — Переводчик — Сайты — Сайт

Вариант второй. Некоторые браузеры уже интегрировали сервис автоматического перевода. Здесь достаточно попросить перевести страницу или же отказаться от перевода и просмотреть оригинал страницы. Яндекс Браузер и Google Chrome могут нам помочь именно таким образом.

В дальнейшем, когда мы предлагаем читателю «просмотреть» статью, требуется получить самое общее представление о выбранной теме. Нужно извлечь из длинного текста только основную идею. Технические подробности мы обсуждаем при выполнении практических заданий.

Традиционное выполнение программы

Как происходит выполнение программ на компьютере?

Чаще всего, в обычной жизни рядовой пользователь запускает программу на своём персональном компьютере. Это может быть настольный (Desktop) компьютер, или ноутбук (Notebook), или какое-нибудь мобильное устройство (Mobile Device).

ПОЛЬЗОВАТЕЛЬ (user) — по определению — если понимать это название буквально — ПОЛЬЗУЕТСЯ компьютером, использует (use) его. Чтобы получить «пользу» для себя. То есть занимается своим делом, своей работой или своими развлечениями.

А для работы ему нужна ПРИКЛАДНАЯ программа — Application Software. Или короче — Application. То есть «приложение». Или совсем коротко — просто App. Опять же «приложение».

Но программу не удаётся просто так взять и запустить на «голом железе», на оборудовании компьютера — Hardware. Вначале нужно загрузить операционную систему (ОС) — Operating System (OS).

Так и получается схема из трёх уровней: Оборудование — Операционная система — Прикладная программа, см. рис.

Рис. Традиционное выполнение программы

Итак, обычно программа выполняется с помощью операционной системы. Чтобы запустить прикладную программу, нужно включить компьютер и дождаться, пока загрузится операционная система.

Внизу у нас имеется то, что называется «железо» или hardware. Выше находится операционная система.

Но есть ситуации, когда операционная система входит в состав прикладной программы. Это может быть в простых встраиваемых системах. Что такое «встраиваемая»? Это означает, что процессор установлен внутри какого-то устройства. Это может быть микроволновка, холодильник или что-нибудь ещё со словами «умный» или «смарт». Если в этом устройстве хватает памяти, то запускается операционная система. Если это маленькое устройство, то там всё реализовано в одной программе — и функции операционной системы, и функции прикладной программы.

Итак, обычная схема «железо — ОС — приложение» хорошо работает для небольших задач.

Изоляция приложений

Описанная вше «традиционная» схема хорошо работала и пока ещё работает, если у нас всего одна программа. Или всего несколько программ. И если эти программы не мешают друг другу.

Со временем выяснилось, что разработчики регулярно выпускают новые версии прикладных программ. При этом пользователи не просто привыкают к «своей» версии. Они нарабатывают множество файлов определённого формата. А потом в новой версии эти форматы немного меняются, потом ещё немного, потом меняются до неузнаваемости.

А на предприятии уже всё было отлажено, и всё работало. И любые изменения в работающей системе приводят к неприятностям. Поэтому, например, до сих на промышленных предприятиях есть системы управления производством на Windows XP (это реальный пример!). И на эту ОС даже не ставят обновления и исправления. Иначе конвейер или реактор просто перестанет работать.

Студентам интересно работать с «новой» версией, быть в курсе, быть в тренде. А для предприятия важно, чтобы производство шло без остановок и без перебоев.

Можно, конечно попытаться установить на один компьютер несколько версий одной программы. Чаще всего, это вообще невозможно — они будут «затирать» друг друга. Или, по крайней мере, одна версия будет мешать нормальной работе остальных.

Есть ещё и проблемы совместимости разных программ — ведь создают разные команды, разные фирмы-разработчики.

А ещё есть вопросы защиты и безопасности. Защита остальных приложений и самой операционной системы от запущенной программы. Не говоря уже про защиту компьютера от вредоносного программного обеспечения (ПО).

Все эти проблемы приходится как-то решать. И общий подход здесь называется «Изоляция приложений». Одно приложение работает, но оно изолировано от всего остального мира. Это похоже на изоляцию пациента от всего остального мира, если есть подозрение на какую-нибудь опасную, заразную болезнь. Или же это как изоляция преступника от остального общества, чтобы он не мог наносить вред окружающим.

Задание. Просмотрите статью «Application Isolation»:

https://devopsbootcamp.osuosl.org/application-isolation.html

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


Итак, на больших предприятиях появляются новые проблемы. Приходится держать несколько больших компьютеров для выполнения разных задач. Один сервер обслуживает электронную почту — это одна машина. Веб-сервер — это другая машина. Нужен какой-нибудь сервер для хранения файлов — это ещё одна машина. Для базы данных — ещё одна машина. И вот набирается несколько десятков отдельных компьютеров. Каждый для своей задачи.

Если нужно что-то обновить, возникает масса проблем. Чтобы увеличить оперативную память, нужно выключить машину, добавить память, включить, загрузить и так далее. В некоторых случаях вообще приходится полностью заменять «железо», если оно уже не справляется с новыми задачами и объёмами информации. Это традиционный подход.

Что ещё здесь интересного? Разные версии программ в рамках одного компьютера очень плохо ведут себя, если пытаться одновременно их держать на одной машине. Некоторые программы друг с другом плохо совместимы. Так появляется первый шаг: каким-то образом изолировать программы друг от друга. Эта проблема встала, как только на одном компьютере установили больше, чем одну программу.

Естественно, есть некоторые программы, которые называют «вредоносными». Программы пишут с разными целями. Хорошо бы, чтобы они не мешали всем остальным, и уж тем более не мешали работе операционной системы.

Динамические библиотеки

Программисты очень быстро обнаружили, что какие-то действия — и соответственно, какие-то части текста программы (его ещё называют словом «исходный код») используются много раз в разных программах. Одно и то же действие — одна и та же программа. Это вроде бы даже очевидно. Поэтому они почти сразу же придумали такое решение: то, что повторяется, вынести в отдельные «библиотеки». Это коллекция повторяющихся действий, часто используемых функций.

Примером таких библиотек является технология DLL. Это внешние файлы, из которых любая программа может вызвать нужную функцию. На первый взгляд, решение хорошее, удобное. Потом начали накапливаться неприятности — буквально как снежный ком.

Выясните, в чем состоит идея DLL, какие у этой технологии есть достоинства и недостатки, и что такое «зависимости».

Итак, существует такая технология как DLL — динамически подключаемая или динамически связываемая библиотека. Изначально технология была задумана, чтобы облегчить работу. Но потом оказалось, что все эти библиотеки складываются в одном большом каталоге, и там их несколько может набираться десятков тысяч. Они могут мешать друг другу. Всё это явление природы называется «DLL hell». Английское слово «hell» буквально означает «ад». Эта адская «свалка» файлов — огромная куча файлов, в которых разобраться очень сложно. К тому же они ещё и норовят друг друга перезаписать при установке новой версии программы. Плюс к этому есть такая вещь как «dependency», то есть «зависимость»: для работы одной программы может потребоваться установка дополнительных библиотек, дополнительных файлов или вообще дополнительных программных продуктов. И это тоже разрастается как снежный ком. Эта ситуация называется «dependency hell» — тоже в рамках одного компьютера.

Задание. Просмотрите в Википедии следующие статьи:

— Динамически подключаемая библиотека

— Dynamic-link library

— DLL Hell

— Dependency hell

Изоляция и администрирование

Существуют разные способы изоляции программ друг от друга. Один из таких способов называется «jail» — буквально переводится как «тюрьма». То есть программа буквально помещается в «тюремную камеру», откуда она не может вырваться, и не может никому помешать, и не может ни с кем общаться — буквально как преступник, заключённый в тюрьме.

Естественно, находятся любители взламывать системы. Эта технология называется «джейл брейк», то есть «побег из тюрьмы». Особенно это популярно для продукции компании Apple, потому что мобильное устройство Apple построено на основе операционной системы Unix. Здесь используют принципы «юникса», и в этом случае права пользователя очень сильно ограничены. И к тому же каждая прикладная программа (приложение, application) полностью отрезано от всех остальных. Для того, чтобы из одной программы передать данные в другую приходится использовать «обходные манёвры» — что-то типа экспорта и импорта.

Более того, мы фактически не можем обратиться к файловой системе iPhone напрямую. В лучшем случае, у нас есть фрагмент файлового дерева, доступный для пользователя. Причём для каждой прикладной программы –свой кусочек дерева, и эти части файловой системы могут и не пересекаться. Большие любители программирования придумали, как взламывать эту защиту и получать права доступа администратора к продукции компании Apple. Технология взлома защиты называется «джейлбрейк». После взлома можно записывать всё, что угодно и куда угодно. Можно устанавливать любые программы. Естественно, это кончается установкой пиратских, взломанных программ из пиратского же магазина приложений. Теперь уже ни о какой безопасности речи не идет. Мы устанавливаем неизвестно что и неизвестно откуда, к тому же с полными правами доступа. Тем не менее, такая технология есть.

Здесь упоминается системный администратор. Он может называться «root», то есть «корень». Может называться «superuser» — «супер-юзер» — «супер-пользователь». Может называться «админ». В юниксе может встретиться su — сокращение от «супер-юзер».

Как мы уже говорили, изоляция приложений больше всего похожа на изоляцию заразного пациента или опасного преступника от общества. Поэтому и название программисты использовали готовое: «jail», то есть «тюрьма». Ситуация, когда программа может вырваться из этой «тюрьмы», тоже получила соответствующее готовое название. С общими подходами и общепринятыми названиями вам предстоит ознакомиться самостоятельно.

Задание. Просмотрите в Википедии следующие статьи:

— chroot

— FreeBSD jail

— Privilege_escalation#Jailbreaking

— iOS jailbreaking

— Rooting (Android)

— Superuser — root, admin

— su (Unix)

— sudo

В этих статьях встречаются разные названия для одного и того же человека — администратор, админ, суперпользователь, admin, superuser, roor. Это пользователь, имеющий полные права доступа к вычислительной системе. В некоторых упражнениях нам потребуются именно такие права.

Portable Applications

Один из популярных подходов к «изоляции» приложений — это так называемые «переносимые приложения» — Portable Applications. Здесь «переносимость» означает, что программы не нужно устанавливать, а достаточно просто скопировать файлы. Обычно это выглядит так: скачиваем в интернете архив и затем распаковываем его в любом каталоге. Запускаем программу из этого каталога — и всё работает!

С этим подходом к изоляции приложений мы постепенно знакомимся в рамках лабораторных работ. Это так называемые «переносимые» приложения или Portable Apps — Portable applications.

В простейшем, бытовом понимании «переносимость приложения» означает, что программу можно просто скопировать: взять одну папку, скопировать на другой диск, или на флешку, или на другой компьютер. Можно скачать архив и развернуть в любом каталоге — и оттуда начинать работать. Работа без установки — это главный фокус переносимых приложений — Portable Applications. Мы скачиваем, разворачиваем, запускаем. Если программа нам надоела, мы её стираем — и никаких следов в самой операционной системе. При этом все файлы лежат в одном каталоге, и они никак не пересекаются с файлами, которые лежат в другом каталоге. Нет общих папок между этими переносимыми приложениями. Так организована изоляция приложений — как разграничения на уровне файловой системы.

Переносимые приложения не участвуют в «свалке DLL», которая обычно находится в каталоге C:\Windows\System32. Здесь всё сложено в одной папочке и

На второй лабораторной работе мы используем Portable версию для файлового менеджера FAR Manager:

FAR Manager Portable:

https://www.farmanager.com/download.php

Рис. Варианты загрузки FAR Manager

Предлагаем самостоятельно посмотреть Portable версию для Libre Office:

LibreOffice Portable

https://www.libreoffice.org/download/portable-versions/


Есть целый сайт под названием Portable Apps. Здесь имеется целый комплект самых разных программ, см. рис.

https://portableapps.com/

Рис. Portable Apps

Главная хитрость в том, что не всегда это слово Portable появляется на сайтах. Например, если мы заходим на сайт FAR Manager, у нас есть несколько вариантов скачивания. Здесь есть «архив» и MSI. Слово «Архив» подразумевает, что всё упаковано в одном файле. Это и есть Portable приложение. Мы разворачиваем этот архив в отдельный каталог, откуда оно и запускается без установки. Если говорить про MSI, это Microsoft Installer, то есть установочная версия.

Итак, Portable — это одна из попыток разделить зоны влияния и изолировать программы друг от друга.

Задание. Просмотрите в Википедии следующие статьи:

— Переносимое приложение

— Portable application

— Software portability

Виртуальные машины

Виртуализация. Гипервизор — Hypervisor

Следующим шагом было полностью изолировать целые операционные системы со всем комплектом программ. Это называется «виртуальные машины». С ними мы знакомимся в рамках 4, 5 и 6 лабораторных работ, когда запускаем Linux внутри операционной системы Windows. Если у кого-то есть Макинтош, здесь тоже можно в рамках виртуальной машины «покрутить» что-нибудь другое — Windows, или Linux, или Unix.

Здесь внизу имеется «железо». Дальше работает основная операционная система или Host OS. Английское слово «хост» означает «гостеприимный хозяин», то есть «тот, кто принимает гостей». Следующий вспомогательный слой называется «гипервизор» или «менеджер виртуальных машин». На наших лабораторных работах это программа VirtualBox. С помощью этого гипервизора мы запускаем другую операционную систему. Она будет называться гостевая ОС — Guest OS. Мы в отдельном окне получаем другую операционную систему. В неё мы можем установить всё, что хотим. Эта система может работать сама по себе, независимо от основной ОС. Можно развернуть несколько виртуальных машин на одном физическом «железе». Каждая виртуальная машина «живёт» сама по себе, и она не мешает никому. Так что в рамках виртуальной машины мы имеем гостевую операционную систему и любые прикладные программы — какие захотим установить.

Рис. Виртуальная машина

Виртуализация (Bare metal hypervisor)

Есть и другой вариант виртуализации — когда у нас нет основной операционной системы. Есть только «голое железо». На него сразу ставится программа под названием hypervisor. По сути, это урезанная операционная система, которая нужна только для запуска виртуальных машин. Такие варианты тоже есть. Они так и называются: «Bare metal hypervisor» — «гипервизор, который работает на голом железе».

Рис. Bare metal hypervisor

Гипервизор — Hypervisor

Итак, слово «гипервизор» означает «менеджер виртуальных машин» или «монитор виртуальных машин» — Virtual Machine Monitor (VMM). Это программа, которая позволяет запускать гостевые операционные системы. Пример гипервизора: Oracle Virtual Box, который мы используем на лабораторных работах. Это может быть встроенный Microsoft Hyper-V и бесплатный VMware Workstation Player. На компьютерах Макинтош это Parallels Desktop. Таких программ существуют десятки, а то и сотни

Задание. Просмотрите в Википедии следующие статьи:

— Virtual Box

— Hyper-V

— VMware Workstation Player

— Parallels Desktop для Mac

Типы гипервизоров

Отметим, что различают два типа гипервизоров. Тип первый — «голое железо», второй — это гипервизор поверх основной операционной системы. Эти технологии существуют и очень широко используются. Вам предлагается просмотреть дополнительные материалы, чтобы прочувствовать общую идею по поводу гипервизоров.

Надо сказать, что приложение Hyper-V уже входит в состав операционной системы Windows 10 Professional. Нужно только включить эту возможность, и можно сразу использовать. А ещё есть Hyper-V как отдельный продукт, он называется Hyper-V сервер. Это как раз гипервизор поверх «голого железа». Эта программа ставится на голое железо вместо основной операционной системы, а поверх неё разворачивается несколько виртуальных машин. Аналогично работает ESXi. Это гипервизор первого типа.

Задание. Просмотрите в Википедии следующие статьи:

Виртуализация

Virtualization

Гипервизор

Hypervisor

Type-1, native or bare-metal hypervisors

Type-2 or hosted hypervisors

Hyper-V

Hyper-V Server

VMware ESXi

Bare machine

ЦОДы / Серверы / «Оркестрация»

Серьёзные технологии используются на крупных предприятиях, чтобы разместить сервисы в рамках одного очень большого компьютера. Такие большие компьютеры называются центры обработки данных (ЦОДы), или дата-центры. Эта установка может выглядеть как большой холодильник или может даже занимать отдельную комнату, а в каждой компьютерной стойке (шкафе) могут быть десятки материнских плат. Каждая такая плата будет называться словом «сервер» или «узел». Всё это вместе будет называться ЦОД или дата-центр.

В рамках одного большого ЦОДа разворачивают большое количество виртуальных машин, и они заменяют физические серверы. Такая технология называется «консолидация серверов». «Консолидация» означает, что отдельные серверы собрали в единое целое. Выясняется, что теперь можно на ходу, «на лету» менять количество ресурсов, которое выделяется разным серверам, разным виртуальным машинам — не выключая и не перезагружая большую машину. Если на почтовый сервер увеличилась нагрузка, можно сказать, что теперь он будет использовать 10,5 процессоров и у него будет 64 Гб оперативной памяти. Если нагрузка уменьшилась, можно сказать, что теперь у него будет 5,8 центральных процессоров и 16 Гб оперативной памяти.

Это всё происходит на ходу без выключения компьютера и называется «динамическая балансировка нагрузки» — перераспределение ресурсов в рамках одной большой машины. Каждая виртуальная машина получает столько ресурсов, сколько ей требуется для работы.

Предприятие может содержать свой собственный ЦОД либо арендовать у телекоммуникационной компании. Тогда даже не нужно тратиться на инженеров, там всё обслуживается — где-то там, в «облаке». Мы только получаем ресурсы и платим за такое количество ресурсов, которое требуется.

Слово «облако» сейчас становится всё более модным. «Облако» означает, что сервис находится «где-то там», на другой машине, «неизвестно где», а мы получаем доступ через интернет.

Кроме того, существует такая процедура как миграция виртуальных машин — опять же без выключения, без перезагрузки. Всё продолжает работать. Пользователь даже не заметит, что произошло. Фактически, виртуальная машина переехала с одной физической машины на другую.

Однако всё это все заканчивается одной большой проблемой: если у нас много виртуальных машин, то вручную этим заниматься становится тяжело. Когда несколько десятков или сотен виртуальных машин, то для управления таким «зоопарком» уже используют специальные программные средства. Эта вспомогательная технология называется новым словом — «оркестрация». Что такое оркестр? Это группа музыкантов, которые играют одно произведение. При этом каждый исполняет свою партию. Так вот, некоторое количество машин тоже будет называться «оркестром» — в больших кавычках. Управление таким «оркестром» и называется «оркестрация». Это уже из области системного администрирования.

Надо понимать, что для этого есть свои инструменты — для оркестрации. Например, компания VMware предлагает свои инструменты для оркестрации.

VMware Orchestrator

https://www.vmware.com/ru/products/vrealize-orchestrator.html

Microsoft Azure — облачный сервис майкрософта — там своя оркестрация. Предлагаем вам самостоятельно познакомиться с идеей оркестрации.

Azure VM Orchestration

https://youtu.be/CYCtKQhg4rU


VM orchestration with Azure

https://youtu.be/8Ug-GrOH3WU


Оркестрация виртуальных машин

https://youtu.be/5FytH4rKCnM


Задание. Просмотрите в Википедии следующие статьи:

— Hardware virtualization • server consolidation

— Load balancing (computing)

— Live migration

— Orchestration (computing

VirtualBox

В рамках наших лабораторных работ мы знакомимся с одним примером гипервизора — VirtualBox. Первоначально он был разработан одной компанией, потом её скупила другая. На сегодняшний день это компания Oracle. То, что у нас есть на https://www.virtualbox.org/, можно просто скачать и установить — Download.

Здесь же можно почитать, на каких платформах эта система работает:

Runs on… hosts

Мы обнаружим список из нескольких, разных операционных систем. То есть в разных основных операционных системах можно установить VirtualBox и в нём уже разворачивать виртуальную машину.

Плюс к этому существует некоторое количество готовых виртуальных машин. Это просто один большой файл — несколько гигабайт. Мы его скачиваем, и там всё настроено, установлено. Вам нужно только запустить эту виртуальную машину. Это называется Pre-built VirtualBox VMs. Фактически, это предварительно установленные и настроенные виртуальные машины.

Более того, сам этот проект уже раскрыл свои исходные тексты VirtualBox Sources. Исходные коды — Source code. Все желающие могут его посмотреть, использовать, модифицировать. Можно даже увидеть, где лежат эти «исходники» и на чём они написаны.

Другие компании этим воспользовались, и у нас есть продукт под названием Portable-VirtualBox: https://www.vbox.me/. Если вы не хотите устанавливать эту программу или если у нас нет прав администратора, то мы на компьютер заходим как пользователи. Теперь мы можем использовать переносимую версию Portable, которая работает без установки — в том числе, даже с флешки. В некоторых случаях это может быть полезно. После запуска переносимая версия ведёт себя абсолютно так же, как и установленная. Единственное, что она не требует прав администратора, и она не занимает никаких ресурсов на системном диске C:\ — там, где у нас находится основная операционная система.

Внешне всё выглядит очень просто. У нас есть основная операционная система — в данном случае Windows. В отдельном окошке у нас крутится что-нибудь другое, например, Linux.

Задание. Просмотрите в Википедии статью «VirtualBox».

Windows + Oracle VM VirtualBox + Ubuntu

На рисунке приводится пример запуска Linux. Этот вариант называется Ubuntu. У нас полноценный рабочий стол — все привычные окна, выход в Интернет — всё это работает.

Рис. VirtualBox + Ubuntu

При желании можно виртуальную машину развернуть во весь экран. Тогда будет полная иллюзия, что мы работаем в Linux. Для наших учебных задач это возможность познакомиться с другой операционной системой. У нас уже не та ОС, которая установлена на машине, а какая-нибудь другая.

Лет 20 назад на нашей кафедре на каждый компьютер в дисплейном классе устанавливали по две операционных системы: Windows и Linux. При включении компьютера человек выбирал вариант загрузки: либо Windows, либо Linux. Далее система загружалась, и в неё можно было работать. Но оказалось, что это очень сложно в обслуживании. Представьте себе несколько десятков машин, и каждые полгода нужно было это всё переустанавливать. Виртуальная машина гораздо проще.

Итак, устанавливаем VirtualBox либо запускаем его переносимую версию. Скачиваем какой-нибудь образ Linux, например, какой-нибудь вариант Ubuntu. Это файл с расширением *.ISO. Один-единственный файл, несколько гигабайт. Создаём виртуальную машину, делаем необходимые настройки и подключаем этот образ — как будто бы это компакт диск, который вставлен в дисковод. Далее запускаем гостувую ОС в «пробном» режиме: Try Ubuntu. Это режим работы без установки операционной системы. Начиная с четвертой лабораторной работы вы именно так и работаете. При желании можно даже использовать физический диск — компакт-диск или DVD — любой лазерный диск. Мы вставляем его в дисковод, а виртуальной машине говорим, что нужно загружаться с указанного диска. Да, мы можем даже такое производить: виртуальная машина грузится с физического диска или флешки.

Задание

— Установить VirtualBox

— Скачать образ Ubuntu *.iso

— Создать виртуальную машину

— Подключить образ *.iso

— Запустить Ubuntu в режиме Try Ubuntu

Hyper-V

Совершенно аналогично для пользователя выглядят и другие гипервизоры. Рассмотрим Hyper-V — продукт компании Microsoft. Само название вроде бы намекает на слово «гипервизор». С другой стороны, буква «V» может указывать на слово «Virtualization» — «виртуализация». «Гипер» + «виртуализация».

Чтобы эта функция заработала, придётся нужно нажать несколько кнопок и поставить галочку в настройках Windows — чтобы включить это вот функцию:

Параметры — Приложения — Программы и компоненты — Включение или отключение компонентов Windows

Здесь установка программ не потребуется, нужно именно активировать эту функцию в составе основной ОС. Это касается настольной версии. Если же у нас Windows Server, то нам потребуется включить соответствующую «роль» — Role. Каждый модуль серверной операционной системы Windows называется «роль» и нам нужно включить «роль».

Рис. Включение Hyper-V

Windows + Hyper-V + Ubuntu

После того, как мы эту функцию включили, повторяем те же самые действия: создаём виртуальную машину, выбираем параметры — сколько у нас будет места на жестком диске, сколько выделяем оперативной памяти. Затем подключаем образ и загружаемся с него. В результате в отдельном окошке мы получаем нашу гостевую операционную систему. В ней можно работать, и это никак не повлияет на основную ОС.

Кроме того, у нас есть возможность копировать, перебрасывать файлы из основной ОС в гостевую и обратно. Это дополнительная функция.

Вам тоже предлагается с этой технологией познакомиться. Используем тот же самый образ Ubuntu. Попробуйте подключить его в режиме виртуальной машины и загрузиться.

Единственное, что здесь иногда нужно знать сочетания клавиш. Если их не знаешь, то будет непонятно, как «вырваться» из этого гостевого окна. Мы щёлкаем мышкой внутри окна виртуальной машины, и теперь мышка перемещается только внутри окна. А чтобы выйти из него, нужна специальная комбинация клавиш. Так что желательно к этому подготовиться. Это может пригодиться.

Выход из окна ВМ:

[Ctrl + Alt + Left]

Выход из полноэкранного режима ВМ:

[Ctrl + Alt + Pause]

Рис. Hyper-V + Ubuntu

Задание

— Включить Hyper-V

— Создать виртуальную машину

— Подключить образ *.iso

— Запустить Ubuntu в режиме Try Ubuntu

— Использовать сочетания клавиш для выхода из окна

Песочница Windows

Развитие технологии виртуальных машин мы наблюдаем в форме Песочницы — SandBox. Это еще одна технология виртуализации. Вообще-то, «песочница» — это общее название для самых разных технологий и инструментов.

В буквальном понимании «песочница» — это огороженная, небольшая площадка, внутри которой сидят маленькие дети, играют с машинками, копают ямки в песочке. Их обычно наружу не выпускают, пусть дети в песочке играются.

Точно также существует «песочница» для разработки и внедрения информационных систем. «Песочница» — это изолированное окружение, либо изолированная машина, либо часть машины, внутри которой запускают очередную версию информационной системы. После обновлений её готовят к развёртыванию, проверяют — и это никак не влияет на работу предприятия. В песочнице поработали — убедились, что всё нормально. И после этого систему переносят на основную, работающую платформу.

Песочница Windows появилась в Windows 10, и в последующих версиях она тоже присутствует. Для использования этого инструмента нужно его включить. Не устанавливать, а именно включить: поставить галочку в разделе компоненты Windows — Песочница. После этого у нас в меню в меню пуск появляется возможность запускать Песочницу.

Рис. Включаем Песочницу

Задание. Просмотрите статью «Windows Sandbox» на сайте https://learn.microsoft.com


Задание. Просмотрите в Википедии следующие статьи:

Sandbox (computer security)

Sandbox (software development)

Википедия: Песочница


Задание. Изучите статью по адресу:

https://docs.microsoft.com/ru-ru/windows/security/threat-protection/windows-sandbox/windows-sandbox-overview


Мы запускаем Песочницу и получаем отдельное окно, внутри которого тоже выполняется ОС Windows. Но на этот раз это не просто гостевая операционная система. Фактически, это доступ к тому же самому ядру ОС, что и у основной операционной системы. Но есть отличие: в песочнице у нас «чистая» операционная система, в которой вообще ничего не установлено и не настроено. В основной операционной системе могут быть установлены прикладные программы, а в песочнице только «чистая», «голая» версия Windows.

Мы можем запустить Песочницу и поработать в ней. Но как только мы закрыли это окно, все наши данные стираются. Из этого окна у нас есть выход в интернет. В этом окне у нас все функции Windows. У нас полный доступ, у нас есть права администратора, и у нас есть все возможности делать всё, что угодно. Но эти изменения никак не повлияют на работу основной операционной системы. Это очень полезно для разных экспериментов, для опытов по установке программ — для временной установки. На полчаса установили программу, поработали и выключили — и никаких последствий для основной ОС и для компьютера.

Здесь можно запускать подозрительные программы и что-нибудь, связанное с вирусами. Всё это желательно делать в песочнице, чтобы не пострадал основной компьютер.

Вот простые задания: запустить песочницу, посмотреть свойства системы, менеджер устройств посмотреть, запустить программу и убедиться, что там ничего нет. И после этого мы можем через буфер обмена копировать текст или файлы между основной и гостевой операционными системами. У нас есть буфер обмена: [Ctrl+C], [Ctrl+V]. Можем также копировать правой кнопкой мыши. Пока это единственный инструмент для обмена данными — по умолчанию это единственный канал. Всё остальное полностью изолировано.

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

Рис. Песочница Windows

Задание

Включить Песочницу

Запустить Песочницу

Перейти в окно Песочницы

Запустить Диспетчер устройств / Device Manager

Нажать кнопку Пуск / Start

Изучить список установленных программ

Скопировать файлы между основной ОС и Песочницей через буфер обмена

Общая папка / Mapped Folder

Следующая возможность — это общая папка для обмена файлами между основной операционной системой и песочницей. Делается это через файл с расширением *.WSB. Мы создаём этот файл в Блокноте.

Рис. Конфигурация Песочницы

Тут есть раздел <Configuration> — «Конфигурация». Далее есть раздел <MappedFolders> — «Отображаемые папки» — во множественном числе. Внутри может быть несколько разделов <MappedFolder> — «Отображаемая папка» — в единственном числе. Английское слово «map» означает «отображение» или «соответствие». Здесь мы назначаем соответствие между папкой в основной операционной системе и папкой в песочнице. Так что из песочницы мы сможем обратиться к указанной папке на основном компьютере.

В нашем примере мы указали <HostFolder> — «папка в основной ОС». То есть это папка на «хосте». Мы можем указать здесь любой диск и любой каталог. Затем мы указываем каталог, который будет создан внутри песочницы <SandboxFolder> — «папка в песочнице». При включении песочницы этот каталог будет создан, но на самом деле он будет работать как указатель на физически существующую папку в основной системе. Через эту папку мы и сможем обмениваться файлами. Мы можем в основной системе туда положить какой-нибудь файл. Затем при включении песочницы эти файлы будут там доступны внутри гостевой ОС.

Обратим внимание, что каждый раздел оформляется в стиле меток HTML: есть открывающие и закрывающие метки.

Мы запускаем нашу песочницу, но не через меню Пуск, а путём открытия файла конфигурации с расширением *.WSB. Для запуска два раза щелкаем по иконке этого файла. Нас спрашивают, открыть ли его с помощью Песочницы. Мы соглашаемся, и песочница использует эту конфигурацию. Теперь мы получаем доступ к общей папке, где уже что-то лежит. Таким образом, мы можем перебрасывать любое количество файлов туда и обратно через общую папку. С этой технологией вам предстоит познакомиться и потренироваться.

Рис. Общая папка

Задание

— Создать файл *.WSB для работы с общей папкой

— Открыть файл *.WSB с помощью Песочницы

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

Новый браузер в Песочнице

У нас возможность автоматически запускать какие-то команды или программы при включении песочницы. Это тоже прописывается в файле *.WSB, см. рис.

Рис. Конфигурация Песочницы с автозапуском

В этом файле конфигурации появляется дополнительный раздел <LogonCommand> — «команда, выполняемая после регистрации пользователя в системе». Выражение «log on» означает регистрация пользователя в системе или вход в систему. Проще говоря, при включении песочницы будет выполнена указанная команда. Мы можем назначить любую команду, и она будет выполнена. Мы можем положить какой-то «установочный» файл в общую папку. Тогда при включении песочницы его можно запускать автоматически.

В нашем примере это установка браузера Opera. Первоначально его в песочнице, естественно, нет — потому что Windows использует свой браузер Edge. Мы в качестве эксперимента складываем установочный файл в общую папочку и прописываем эту команду. Мы указываем, где лежит этот файл и указываем ключи. Ключ /silent — «молча; без сообщений» — означает, что установка происходит «молча». Другими словами, во время установки никаких сообщений, никаких окошек не появляется. Мы просто включили песочницу, и через несколько секунд браузер установлен автоматически. Следующий ключ /launchbrowser=1 означает, что браузер запустится сразу после установки. Слово «launch» означает «запустить программу на выполнение». Мы включили песочницу, и через несколько секунд в ней уже открывается окошко браузера. Такой эксперимент вам тоже предстоит произвести. Мы скачиваем установочный файл, открываем песочницу через файл *.wsb и убеждаемся, что теперь у нас есть новый браузер и что он имеет выход в Интернет. По таким шагам можно пройтись и познакомиться с этой технологией.

Рис. Браузер Opera в Песочнице

Задание

— Скачать файл OperaSetup. exe на сайте

— https://www.opera.com/

— Разместить файл в общей папке

— Создать файл *.WSB для установки программы

— Открыть файл *.WSB с помощью Песочницы

— Убедиться в работе установленного браузера

— Перейти на сайт вуза

Windows Subsystem for Linux (WSL)

Следующий этап виртуализации — это полная интеграция гостевой операционной системы. Полное название: подсистема Windows для Linux — Windows Subsystem for Linux (WSL). Этот компонент появился в Windows 10. Он точно также включается через управление компонентами Windows, см. рис.

Рис. Включение WSL

Мы включаем этот компонент, и далее мы сможем параллельно работать в двух операционных системах.

Microsoft Store — Ubuntu

В качестве эксперимента мы устанавливаем Ubuntu. Это одна из самых популярных версий Linux, особенно для облачных приложений. Эта ОС устанавливается теперь через магазин приложений Microsoft Store. Мы устанавливаем Ubuntu именно через магазин приложений. Там уже есть несколько вариантов Linux — можно задать поиск и пересчитать доступные варианты. Можно почитать описание Ubuntu. Здесь говорится, что эта версия прежде всего предназначена для работы в терминале, то есть в командной строке. Это позволяет разрабатывать кроссплатформенные приложения, то есть программы, которые будут работать на нескольких разных платформах. Это бесплатная версия, и она ставится поверх WSL.

Рис. Установка Ubuntu

Microsoft Store — Windows Terminal

Дополнительно мы уставноим еще один бесплатный инструмент, который называется Windows Terminal. Слово «терминал» пришло из Unix и из Linux. Оно означает «командное окно». Сейчас оно проникло и в операционную систему Windows. Точно также через магазин приложений Microsoft Store мы устанавливаем Windows Terminal, см. рис. В описании программы мы видим символ приложения — иконку — приглашение к вводу командной строки.

Рис. Установка Terminal

Windows Terminal + Ubuntu

Как же работает Терминал Windows? По сути, это командное окно, в котором открывается несколько вкладок. В зависимости от того, что у нас уже установлено, мы можем выбрать нужный инструмент. Command Prompt — это обычная командная строка Windows. PowerShell — это командная строка с новыми возможностями, чаще всего для администратора. Теперь у нас есть возможность зайти в уже установленный вариант Ubuntu. Если установить систему управления версиями Git, то мы сможем выбрать эмулятор командной строки Git Bash.

То, что мы установим, то и появится в списке. В каждой вкладке будет свой вариант командного окна. Между ними можно будет переключаться.

На рис. показан пример. Мы зашли в одной из вкладок — в ту самую операционную систему Ubuntu. У нас появляется приглашение, оформленное уже в другом стиле. Это уже не Windows. Это Linux, и в этом окошечке мы сможем с ним с этим линуксом поработать.

Рис. Выбор оболочки в терминале

Создание скрипта

В качестве эксперимента мы проделаем примерно то же, что и на наших лабораторных работах. Мы создаём скрипт. Напомним, что такое скрипт. Беквально английское слово «script» означает «сценарий». В операционных системах это текстовый файл, в котором написаны команды ОС. В Линуксе это называется «скрипт», а в Windows — «пакетный файл». Итак, мы создаём скрипт и запускаем его на выполнение. Нам понадобится ввести несколько команд, и мы их сейчас поясним, см. рис.

Рис. Создание и запуск скрипта

Первое, что мы делаем: мы вводим с клавиатуры текст и отправляем его в текстовый файл. В Линуксе это делается так. Вводим команду cat.

Это сокращение английского слова «concatenate» — «провести конкатенацию», то есть «объединить несколько элементов в одну цепочку, последовательность». Эта команда позволяет выводить содержимое файла на экран, а также объединить несколько файлов и потом уже вывести всё это на экран. Отсюда и такое название.

Обычно команда cat выводит текст из файла на экран. Но здесь мы используем «стрелочку вправо», или «правую угловую скобочку», или значок «больше». Так мы перенаправляем вывод вместо экрана в текстовый файл hello.sh. Расширение *.sh означает Shell. Вообще-то Shell — это «оболочка ОС», то есть командная строка. Здесь имеется в виду название «shell file», или «Shell script», то есть сценарий для выполнения в командной строке / оболочке ОС.

Задание. Просмотрите статью «Shell script» в Википедии.


Итак, мы вводим с клавиатуры команду cat и перенаправляем её вывод в файл. По умолчанию в качестве входной информации она берёт то, что мы вводим с клавиатуры. Мы сделаем в нашем скрипте всего одну команду: echo пробел и какое-то сообщение. Эта команда будет выводить наш «привет» на экран.

Обычно по окончании ввода мы нажимаем комбинацию клавиш [Ctrl+Z] — это когда мы работаем в виртуальной машине — чтобы закончить ввод. А здесь используется комбинация [Ctrl+D]. И на экране ничего не появляется, просто выводится приглашение к вводу новой команды. Если этого не сделать, будут неприятности.

Итак, мы ввели текст, и у нас появляется «файл-сценарий». Его можно запустить на выполнение с помощью той самой оболочки Shell. Мы пишем sh, пробел и имя файла скрипта. Он выполняется и выводит своё сообщение.

В принципе, мы могли бы запустить этот файл на выполнение попроще. Достаточно написать его название и нажать Enter. Мы пишем название файла, нажимаем Enter, и нам сообщают: файл не найден. Хотя мы можем убедиться, что он есть. Это особенность Linux. Для того, чтобы использовать файлы в текущем каталоге, нужно сказать, что они находятся именно в текущем каталоге. Для этого мы пишем точка, наклонная черта, имя файла. Одна точка означает «текущий каталог». Две точки означают «родительский каталог», то есть каталог «одним этажом выше по файловому дереву». Вот теперь мы действительно запускаем файл на выполнение.

Однако, нам говорят: «permission denied» — «отказано в доступе», или «доступ запрещен». У нас пока нет доступа на выполнение. У нас имеется файл, но мы не можем его запустить на выполнение. Сначала нужно установить разрешение. Для этого мы используем команду chmod — «change mode» — «изменить режим доступа». Три семерки означают полный доступ для любого пользователя. Подробнее это разбирается у нас в разделе «Файловые системы». Итак: change mode, три семерки и имя файла.

Теперь мы можем запустить этот файл на выполнение, и он выполнится.

Мы можем посмотреть, какие атрибуты есть у этого файла. Здесь нас интересуют разрешения. На самом деле, есть разница между атрибутами и разрешениями, и в разных ОС это работает немного по-разному.

Мы вводим команду ls — то есть LIST — «список файлов». Дополнительные ключи –la говорят, что нужно вывести на экран все подробности — от слова all, то есть «всё». Символы rwx — это разрешения на Read-Write-eXecute, то есть на чтение, запись и выполнение файла. Это полный доступ к файлу для любого пользователя. Вот такой эксперимент вам нужно произвести в рамках Ubuntu который устанавливается поверх WSL.

Самое главное — не забываем: Shell Script — end of file: ^D.

Ubuntu + Midnight Commander

Следующий эксперимент — это уже файловый менеджер под названием Midnight Commander. По умолчанию он не входит в состав Ubuntu, и его нужно дополнительно установить. Тогда он будет работать. Для этого нам нужно будет ввести три команды, см. рис.

Рис. Установка MC

Первая команда update обновляет список ресурсов, откуда можно скачать установочную версию. APT — это приложение, которое занимается установкой программ. Причём программы в Линуксе называется словом «пакеты». В русском языке мы иногда тоже встречаем такое выражение: «пакет прикладных программ».

Вызываем пакетный менеджер apt или apt-get. Перед этим пишется SUDO. Это значит «запустить с правами администратора». А для этого у нас должны быть права администратора, у нас должен быть пароль администратора. Либо придется позвать лаборанта, чтобы он ввёл пароль. Итак, update обновляет базу данных адресов, откуда можно скачивать установщики.

Далее, во второй строчке мы устанавливаем программу — install и название программы.

После этого мы можем в командной строке написать название программы mc и нажать Enter. Теперь наша программа запустится, и мы получаем в рамках нашего терминала файловый менеджер Midnight Commander со всеми его возможностями, со всеми его функциями.

Перед нами файловая система Linux внутри операционной системы Windows. Это продолжение идеи виртуальных машин.

Здесь мы тоже можем получить доступ к жёстким дискам основной машины через каталог mnt — сокращение от слова MOUNT — «монтировать», то есть «подключить диск или каталог». Далее указываем букву диска и нужный каталог.

Рис. Файловый менеджер MC с доступом к диску E:

Нужно повторить все эти этапы, прочувствовать как это всё происходит: включаем WSL, устанавливаем Ubuntu и Терминал Windows, запускаем скрипт, запускаем Midnight Commander и убеждаемся, что всё работает.

Если мы запускаем программу из Midnight Commander, то она выводит сообщение и тут же это сообщение исчезает. Перед нами снова будут синие панели. Напомним: чтобы заглянуть за них, за эти «занавески», нужно открыть то самое «чёрное командное окно». «Открыть» по-английски будет «open». Поэтому используется комбинация клавиш [Ctrl+O]. Если всё это проделать, мы снова увидим чёрный экран, на котором будет тот самый «привет» от нашей программы-скрипта.

Задание

— Включить WSL

— Установить приложения из Microsoft Store:

— Ubuntu (пароль администратора)

— Windows Terminal

— Открыть Terminal

— Запустить окно Ubuntu

— Создать скрипт Hello, World!

— Установить разрешение на выполнение

— Запустить скрипт на выполнение

— Установить Midnight Commander

— Запустить Midnight Commander

— Запустить скрипт на выполнение

— Ctrl + O

Программа Hello, World! на языке Си

Составим программу на стандартном языке Си. Самая простая программа, которая выводит приветствие «Hello, World!». Мы снова используем команду cat, вводим текст с клавиатуры и перенаправляем вывод в файл. Либо мы можем ввести текст в Блокноте, сохранить его в файле и вывести на экран той же командой cat, см. рис.

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.

Введите сумму не менее null ₽, если хотите поддержать автора, или скачайте книгу бесплатно.Подробнее