Способ, устройство и система входа в unix-подобный виртуальный контейнер

Иллюстрации

Показать все

Изобретение относится к технологиям облачных вычислений, в частности к способу, устройству и системе для входа в облачный контейнер. Технический результат заключается в обеспечении возможности входа и отправки команд в Unix-подобный виртуальный контейнер. Указанный результат достигается за счет выполнения этапов способа, на которых: устанавливают соответствующую взаимосвязь между виртуальным контейнером типа Unix и портом хоста, на котором запущен виртуальный контейнер типа Unix, причем виртуальный контейнер типа Unix конфигурируют для изоляции приложения на хосте; устанавливают канал между виртуальным контейнером типа Unix и портом хоста на основе соответствующей взаимосвязи, а также устанавливают первое соединение между виртуальным контейнером типа Unix и портом хоста на основе канала; и получают команду скрипта через порт хоста и отправляют команду скрипта в виртуальный контейнер типа Unix согласно первому соединению. 3 н. и 13 з.п. ф-лы, 13 ил.

Реферат

[0001] Данная заявка испрашивает приоритет патентной заявки КНР "СПОСОБ, УСТРОЙСТВО И СИСТЕМА ВХОДА В UNIX-ПОДОБНЫЙ ВИРТУАЛЬНЫЙ КОНТЕЙНЕР" №201210345405Х, поданной 17 сентября 2012 г., раскрытие которой включено в настоящую заявку в полном объеме путем ссылки.

Область техники, к которой относится изобретение

[0002] Варианты осуществления настоящего изобретения относятся к технологии облачных вычислений, в частности, к способу, устройству и системе для входа в Unix-подобный облачный контейнер.

Уровень техники

[0003] Облачные вычисления в основном включают в себя режимы увеличения, использования и доставки, основанные на относящихся к Интернету сервисах. Обычно облачные вычисления включают в себя предоставление динамичных и расширяемых виртуализированных ресурсов через Интернет. Появление облачных вычислений означает, что вычислительные возможности могут рассматриваться в качестве продукта, который распространяется через Интернет. Облачные вычисления в узком смысле включают в себя режимы доставки и использования инфраструктуры информационных технологий (IT), что означает получение требуемых ресурсов по запросу через сеть с возможностью легкого их расширения. Облачные вычисления в широком смысле включают в себя режимы доставки и использования сервисов, что означает получение требуемых сервисов по запросу через сеть с возможностью легкого их расширения. Требуемый сервис может быть связан с IT, программным обеспечением, сетью Интернет, или относиться к другим услугам.

[0004] Обычно платформы облачных вычислений можно разделить на три категории, а именно: облачные платформы типа хранилища, в основном используемые для хранения данных; облачные платформы вычислительного типа, в основном используемые для обработки данных; и полноценные платформы облачных вычислений, используемые для хранения данных и обработки данных, например, для вычислений.

Раскрытие изобретения

[0005] Варианты осуществления настоящего изобретения описывают способ, устройство и систему входа в Unix-подобный виртуальный контейнер, при этом обеспечивается возможность входа в Unix-подобный виртуальный контейнер и отправки команды скрипта в Unix-подобный виртуальный контейнер.

[0006] Различные варианты осуществления настоящего изобретения описывают способ входа в Unix-подобный виртуальный контейнер, содержащий следующие этапы:

устанавливают соответствующую взаимосвязь между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер;

устанавливают прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста на основе указанной соответствующей взаимосвязи, а также устанавливают первое соединение между Unix-подобным виртуальным контейнером и портом хоста на основе прозрачного канала, и

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

[0007] Различные варианты осуществления настоящего изобретения описывают устройство входа в Unix-подобный виртуальный контейнер, содержащее:

модуль установления прозрачного канала, конфигурированный для

установления соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер, и установления прозрачного канала между Unix-подобным виртуальным контейнером и портом хоста на основе указанной соответствующей взаимосвязи;

модуль установления соединения, конфигурированный для

установления первого соединения между Unix-подобным виртуальным контейнером и портом хоста на основе прозрачного канала, и

модуль отправки команд скрипта, конфигурированный для

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

[0008] Различные варианты осуществления настоящего изобретения описывают систему входа в Unix-подобный виртуальный контейнер, содержащую веб-браузер, устройство входа в Unix-подобный виртуальный контейнер, а также хост; причем на хосте запущен Unix-подобный виртуальный контейнер, а между веб-браузером и устройством входа в Unix-подобный виртуальный контейнер существует соединение по протоколу передачи гипертекста (HTTP);

при этом

веб-браузер конфигурирован для

получения команды скрипта и отправки указанной команды скрипта в устройство входа в Unix-подобный виртуальный контейнер через соединение HTTP; а

устройство входа в Unix-подобный виртуальный контейнер конфигурировано для

установления соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста и установления прозрачного канала между Unix-подобным виртуальным контейнером и портом хоста на основе

указанной соответствующей взаимосвязи; установления первого соединения между Unix-подобным виртуальным контейнером и портом хоста на основе прозрачного канала,

получения команды скрипта, посланной из веб-браузера через порт хоста, а также

отправки команды скрипта в Unix-подобный виртуальный контейнер согласно первому соединению.

[0009] Как видно из вышеописанной технической схемы, в соответствии с различными вариантами осуществления настоящего изобретения, устанавливают соответствующую взаимосвязь между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер. На основе указанной соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста устанавливают прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста. На основе прозрачного канала устанавливают первое соединение между Unix-подобным виртуальным контейнером и портом хоста. Согласно первому соединению осуществляют получение команды скрипта через порт хоста и отправку указанной команды скрипта в Unix-подобный виртуальный контейнер. При использовании различных вариантов осуществления настоящего изобретения вход в Unix-подобный виртуальный контейнер можно осуществлять через соединение между портом хоста и Unix-подобным виртуальным контейнером, а отправку команды скрипта в Unix-подобный виртуальный контейнер можно осуществлять снаружи хоста. Таким образом, информацию в пределах Unix-подобного виртуального контейнера, например, файлы, информацию о центральном процессоре (CPU), ввод-вывод дисковых данных, ввод-вывод сетевых данных и т.д., можно легко просматривать согласно команде скрипта, что важно для различных операций, в том числе интерактивной отладки, просмотра журналов, управления ресурсами устройств в реальном времени и так далее. Кроме того, вход в Unix-подобный виртуальный контейнер через порт хоста может гарантировать безопасность информации в Unix-подобном виртуальном контейнере. Кроме того, за счет асинхронного доступа можно улучшить эффективность доступа.

Краткое описание чертежей

[0010] На фиг. 1 показана блок-схема, иллюстрирующая способ входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0011] На фиг. 2 показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0012] На фиг. 2А показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0013] На фиг. 2В показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0014] На фиг. 2С показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0015] На фиг. 2D показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0016] На фиг. 2Е показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0017] На фиг. 2F показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0018] На фиг. 2G показана блок-схема, иллюстрирующая структуру аппаратных средств устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0019] На фиг. 2Н показана блок-схема, иллюстрирующая структуру аппаратных средств устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0020] На фиг. 3 показана блок-схема, иллюстрирующая структуру системы входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0021] На фиг. 4 показана схема, иллюстрирующая интерфейс входа в Unix-подобный виртуальный контейнер через планшетный компьютер в соответствии с различными вариантами осуществления настоящего изобретения.

[0022] На фиг. 5 показана схема, иллюстрирующая интерфейс входа в Unix-подобный виртуальный контейнер через персональный компьютер в соответствии с различными вариантами осуществления настоящего изобретения.

Осуществление изобретения

[0023] Данное изобретение описано более подробно ниже со ссылками на прилагаемые чертежи и иллюстративные варианты осуществления.

[0024] В настоящее время существует техническая схема, согласно которой платформа облачных вычислений реализуется посредством использования виртуальных машин. Эта схема обладает такими преимуществами, как большие возможности настройки и комплексные облачные сервисы, однако высокая стоимость затрудняет ее распространение.

[0025] Кроме реализации платформы облачных вычисление с использованием виртуальных машин, существует также другая техническая схема, согласно которой система облачных вычислений реализуется с использованием Эластичного Облачного Механизма (Cloud Elastic Engine; СЕЕ). Согласно способу СЕЕ, контроллер группы ресурсов Linux (который можно называть cgroup) используется в качестве способа разделения ресурсов, а виртуальный контейнер Linux (который можно называть LXC) используется в качестве способа виртуализации. В данном случае cgroup поддерживается ядром Linux и обеспечивает механизм управления производительностью, а также средство разделения и ограничения ресурсов для процесса и последующего подпроцесса данного процесса. Виртуальный контейнер Linux представляет собой схему виртуализации, поддерживаемую ядром Linux, а также на уровне операционной системы. Согласно способу СЕЕ, кроме Linux можно использовать различные типы Unix-подобных виртуальных контейнеров, таких как FreeBSD, OpenBSD, Solaris, Minix, Linux и QNX.

[0026] В отличие от платформы облачных вычислений, реализованной с помощью виртуальных машин, система 'облачных вычислений, реализованная с помощью СЕЕ, не требует наличия загрузочных аппаратных средств, что влечет за собой сравнительно низкий уровень накладных расходов. Как правило, для обеспечения безопасности интрасетей Unix-подобный виртуальный контейнер не является независимым от главного хоста, при этом IP-адрес Unix-подобного виртуального контейнера не раскрывается, поэтому сеть Unix-подобного виртуального контейнера изолирована от внешнего мира. По этой причине прямой вход из внешнего мира в Unix-подобный виртуальный контейнер и отправка команды скрипта в Unix-подобный виртуальный контейнер невозможны. Поэтому невозможно получить информацию, содержащуюся в Unix-подобном виртуальном контейнере. Например, невозможно просмотреть такую содержащуюся в Unix-подобном виртуальном контейнере информацию, как файлы, информация о CPU, ввод-вывод дисковых данных, ввод-вывод сетевых данных и т.п. Однако подобная информация важна для различных операций, таких как интерактивная отладка, просмотр журналов, управление ресурсами устройств в реальном времени и т.д.

[0027] Поскольку сеть Unix-подобного виртуального контейнера изолирована от внешнего мира, то в соответствии с различными вариантами осуществления настоящего изобретения обеспечивается возможность входа в хост, на котором запущен Unix-подобный виртуальный контейнер, а также обеспечивается возможность установить соответствующую взаимосвязь между Unix-подобным виртуальным контейнером и портом хоста для установления соединения между Unix-подобным виртуальном контейнером и портом хоста. Таким образом обеспечивается возможность отправки в Unix-подобный виртуальный контейнер, запущенный на хосте, команды скрипта, принятой портом хоста снаружи хоста, для входа в Unix-подобный виртуальный контейнер.

[0028] На фиг. 1 показана блок-схема, иллюстрирующая способ входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0029] Как видно на фиг. 1, способ может включать в себя следующие операции.

[0030] В блоке 101 можно установить соответствующую взаимосвязь между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер.

[0031] В этом случае Unix-подобный виртуальный контейнер запущен на хосте. Unix-подобный виртуальный контейнер может поддерживаться ядром Linux.

В соответствии с различными вариантами осуществления настоящего изобретения Unix-подобный виртуальный контейнер представляет собой набор виртуализированных машиночитаемых команд, предназначенный для платформы облачных вычислений на уровне операционной системы. По сравнению с другими способами виртуализации на уровне операционной системы, Unix-подобный виртуальный контейнер интегрируется в ядро Linux без отдельного добавления патчей в ядро. Более того, Unix-подобный виртуальный контейнер является способом виртуализации на уровне операционной системы, который требует меньших накладных расходов на виртуализацию и который может быть быстрее развернут по сравнению с традиционными способами виртуализации на уровне аппаратных абстракций (HAL).

[0032] Unix-подобный виртуальный контейнер может использоваться для изоляции конкретного приложения на хосте. Поскольку Unix-подобный виртуальный контейнер установлен на хосте, можно использовать относящуюся к Unix-подобному виртуальному контейнеру команду для создания и запуска контейнера с целью обеспечения виртуальной среды исполнения для приложения. В традиционном способе виртуализации сначала создают виртуальную машину, устанавливают систему, а затем разворачивают приложения.

[0033] Посредством установления соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста можно назначить порт хоста для Unix-подобного виртуального контейнера для обеспечения, таким образом, базы для последующего установления соединения с Unix-подобным виртуальным контейнером. В этом случае на хосте может быть запущено множество Unix-подобных виртуальных контейнеров, при этом каждому Unix-подобному виртуальному контейнеру можно назначить соответствующий порт хоста.

[0034] В соответствии с различными вариантами осуществления настоящего изобретения Unix-подобный виртуальный контейнер может относиться к различным типам Unix-подобных виртуальных контейнеров, например, к виртуальному контейнеру Linux (LXC), FreeBSD, OpenBSD, Solaris, Minix, Linux, QNX и т.д., однако без ограничения данным описанием.

[0035] В блоке 102 можно установить прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста на основе указанной соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста, а также можно установить первое соединение между Unix-подобным виртуальным контейнером и портом хоста на основе прозрачного канала.

[0036] После установления указанной соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста можно установить прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста. На основе прозрачного канала можно установить первое соединение между Unix-подобным виртуальным контейнером и портом хоста.

[0037] В этом случае прозрачный канал в основном используется для передачи больших объемов информации. Прозрачный канал можно использовать для коммуникации между процессами, выполняющимися между Unix-подобным виртуальным контейнером и портом хоста, которые при этом принадлежат одному пользователю и имеют одного предка. Прозрачный канал может использоваться в качестве коммуникационной среды для конвейеризации передачи информации между процессами на двух концах. Обычно процесс может быть конфигурирован для записи информации в прозрачный канал, а другой процесс может быть конфигурирован для считывания информации из указанного прозрачного канала. Таким образом, прозрачный канал представляет собой битовый поток, доступ к которому осуществляют через обычные интерфейсы ввода-вывода. После создания прозрачного канала операции чтения и записи в/из прозрачного канала можно осуществлять путем вызова любой системы ввода-вывода чтения и записи, входящей в состав операционной системы. В различных типах UNIX-подобных сред (в том числе в среде Linux) для вызова системы ввода-вывода обычно используют такие команды, как read() и write().

[0038] В различных вариантах осуществления настоящего изобретения первое соединение между портом хоста и UNIX-подобным виртуальным контейнером можно установить посредством прозрачного канала на основе протокола безопасной оболочки (SSH) или протокола безопасной оболочки 2 (SSH2). При использовании протокола SSH первое установленное соединение представляет собой соединение SSH. При использовании протокола SSH2 первое установленное соединение представляет собой соединение SSH2.

[0039] Путем установления первого соединения между портом хоста и UNIX-подобным виртуальным контейнером можно осуществить вход в Unix-подобный виртуальный контейнер, а также можно осуществить получение UNIX-подобным виртуальным контейнером команды скрипта снаружи хоста через порт хоста, соответствующий UNIX-подобному виртуальному контейнеру.

[0040] В блоке 103 порт хоста может получать команду скрипта и отправлять указанную команду скрипта в Unix-подобный виртуальный контейнер согласно первому соединению.

[0041] В этом случае порт хоста может получать команду скрипта снаружи хоста и отправлять команду скрипта в UNIX-подобный виртуальный контейнер согласно первому соединению. В этом случае хост может получать команду скрипта от внешнего браузера через соединение по протоколу передачи гипертекста (HTTP) с внешним браузером.

[0042] В различных вариантах осуществления настоящего изобретения, с целью обеспечения безопасности команды скрипта, после получения портом хоста команды скрипта и до передачи портом хоста команды скрипта в UNIX-подобный виртуальный контейнер, способ может также включать в себя описанные ниже операции. Команду скрипта можно разбить согласно заданному маркеру. В отношении разбитой команды скрипта можно выполнить расширение символами для получения дополненной символами команды скрипта. Можно определить, содержится ли расширенная символами команда скрипта в заданном белом списке команд скрипта. В ответ на определение того факта, что расширенная символами команда скрипта содержится в заданном белом списке команд скрипта, расширенная символами команда скрипта может быть отправлена в Unix-подобный виртуальный контейнер согласно первому соединению. В противном случае может выдаваться подсказка о недопустимости команды.

[0043] В соответствии с различными вариантами осуществления настоящего изобретения команду скрипта можно сперва разбить с помощью маркера (например, маркер может содержать точку с запятой, символ конвейеризации и т.д.). В отношении команды скрипта можно выполнять различные типы расширения символами (например, расширение фигурными скобками и т.д.) для получения расширенной символами команды скрипта. В отношении расширенной символами команды скрипта можно выполнять фильтрацию по белому списку. Например, команда содержит символ конвейеризации "⎮", т.е., команда имеет вид ls⎮grep "аа", в этом случае соответственно получают команды, включающие в себя ls и grep, путем идентификации символа конвейеризации "⎮". Затем выполняют фильтрацию по белому списку. В другом примере команда содержит круглые скобки, как, например, команда awk '{for(i=0;i<NF;i++) print $i}' /proc/net/tcp. Три группы символьных строк разделены пробелами и кавычками, при этом первая группа - это awk, а вторая группа - это '{for(i=0;i<NF;i++) print $i}'. В отношении второй группы сначала находят и продвигают в стек левую фигурную скобку "{", а затем осуществляют поиск правой фигурной скобки "}". В течение процесса поиска находят и продвигают в стек левую круглую скобку "(", а затем осуществляют поиск правой круглой скобки ")". После нахождения правой круглой скобки ")" получают содержимое команды между "(" и ")", и выполняют над содержимым команды операционный процесс, описанный в первом примере.

[0044] В соответствии с различными вариантами осуществления настоящего изобретения символы, которые могут поддерживаться в белом списке, могут включать в себя буквы в нижнем и верхнем регистрах, пробел, числа, "⎮", "-", "_", "*", "~", ".", ";", "/", '' и т.д.

[0045] В соответствии с различными вариантами осуществления настоящего изобретения, команды скрипта, которые могут поддерживаться в белом списке, могут включать в себя "ls", "tail", "cd", "pwd", "head", "cat", "ps", "free", "vmstat", "iostat", "uptime", "lsof", "ipcs", "mpstat", "grep", "wc", "uniq", "sort", "md5sum" и т.д.

[0046] Несмотря на то, что выше были перечислены некоторые типичные символы и команды скрипта, специалисту в данном области техники понятно, что эти символы и команды скрипта перечислены исключительно в качестве примеров и не должны использоваться для ограничения объема правовой охраны различных вариантов осуществления настоящего изобретения.

[0047] В соответствии с различными вариантами осуществления настоящего изобретения операцию получения команды скрипта портом хоста можно реализовать нижеописанным способом. Можно установить соединение HTTP между портом хоста и браузером по протоколу передачи гипертекста, и через это соединение HTTP может быть получена команда скрипта. В этом случае можно предварительно конфигурировать пороговое значение времени соединения и определить, превышает ли соединение HTTP между портом хоста и браузером пороговое значение времени соединения. Если соединение HTTP между портом хоста и браузером превышает пороговое значение времени соединения, то соединение HTTP можно разъединить. Если соединение HTTP между портом хоста и браузером не превышает пороговое значение времени соединения, то соединение HTTP можно сохранить. При этом сеанс соединения между портом хоста и браузером можно сохранить на период времени после установления соединения между браузером и портом хоста по протоколу передачи гипертекста. В этом случае выражение "превышает ли соединение HTTP пороговое значение времени соединения" может означать "превышает ли продолжительность соединения HTTP пороговое значение времени соединения". Например, пороговое значение времени соединения может быть конфигурировано равным 60 секундам. Если команда, связанная с соединением, не получена в течение 60 секунд с момента установления соединения, то можно определить, что соединение превышает конфигурированное пороговое значение времени соединения. В этом случае под продолжительностью соединения понимается период времени между моментом времени, когда последний раз была выполнена команда, связанная с соединением, и текущим моментом времени.

[0048] В соответствии с различными вариантами осуществления настоящего изобретения, когда браузер осуществляет выход из порта хоста нормальным образом, сеанс соединения между браузером и портом хоста может быть сброшен мгновенно. Когда браузер осуществляет выход из порта хоста непредвиденно, сеанс соединения HTTP между браузером и портом хоста может быть сброшен регулярным образом. В этом случае сброс соединения HTTP может означать разъединение соединения HTTP и очистку ресурсов, занимаемых соединением на сервере. Регулярный сброс соединения HTTP можно определить как сброс соединения не немедленно, а по истечении заданного периода времени.

[0049] В соответствии с различными вариантами осуществления настоящего изобретения можно конфигурировать пороговое значение времени соединения для первого соединения между портом хоста и Unix-подобным виртуальным контейнером. Можно определить, превышает ли первое соединение между портом хоста и Unix-подобным виртуальным контейнером пороговое значение времени соединения. Если первое соединение превышает пороговое значение времени соединения, то первое соединение можно разъединить. Если первое соединение не превышает пороговое значение времени соединения, то первое соединение можно сохранить. При этом сеанс, связанный с первым соединением и установленный между портом хоста и Unix-подобным виртуальным контейнером можно сохранять в течение некоторого периода времени после входа в Unix-подобный виртуальный контейнер. В этом случае способ определения того, превышает ли первое соединение пороговое значение времени соединения, может быть идентичен способу определения того, превышает ли соединение HTTP пороговое значение времени соединения, который здесь не рассматривается повторно.

[0050] В соответствии с различными вариантами осуществления настоящего изобретения, если пользователь осуществляет выход из Unix-подобного виртуального контейнера через порт хоста нормальным образом, то сеанс, связанный с первым соединением, можно сбросить немедленно. Если пользователь осуществляет непредвиденный выход из Unix-подобного виртуального контейнера, то сеанс, связанный с первым соединением, можно сбросить регулярным образом. В этом случае сброс сеанса, связанного с первым соединением, может означать разъединение первого соединения и очистку ресурсов, занимаемых первым соединением на сервере. Регулярный сброс сеанса, связанного с первым соединением, можно определить как сброс первого соединения не немедленно, а по истечении заданного периода времени.

[0051] В соответствии с различными вариантами осуществления настоящего изобретения может быть установлено множество соединений через прозрачный канал между портом хоста и Unix-подобным виртуальным контейнером, и поэтому ранее установленное соединение можно закрыть благодаря множественному характеру соединений канала.

[0052] Например, порт хоста может получить команду скрипта на прекращение операций, причем в команде скрипта на прекращение операций передается идентификатор (ID) первого соединения. Через прозрачный канал может быть установлено второе соединение между Unix-подобным виртуальным контейнером и портом хоста. Через второе соединение в Unix-подобный виртуальный контейнер может быть отправлена команда скрипта на прекращение операций. Unix-подобный виртуальный контейнер может выделять ID первого соединения из команды скрипта на прекращение операций и прекращать операции, связанные с первым соединением.

[0053] В качестве примера можно рассмотреть операцию передачи данных. В соответствии с различными вариантами осуществления настоящего изобретения операция получения команды скрипта портом хоста может включать в себя следующие операции. Может быть установлено соединение HTTP между портом хоста и браузером по протоколу передачи гипертекста, при этом через соединение HTTP может быть получена команда скрипта. Для решения проблемы, заключающейся в том, что в настоящее время протокол передачи гипертекста может обеспечивать только одностороннюю связь, т.е. поток данных в пределах одного периода времени передается только в одном направлении, выполняющуюся операцию передачи данных между браузером и Unix-подобным виртуальным контейнером можно прекратить посредством установления множества соединений HTTP между браузером пользователя и портом хоста. Например, браузер пользователя получает данные из Unix-подобного виртуального контейнера через первое соединение HTTP между браузером и портом хоста и первое соединение между портом хоста и Unix-подобным виртуальным контейнером. В этот момент пользователь желает прекратить операцию передачи данных и не желает закрыть первое соединение HTTP. В этом случае пользователь вводит с клавиатуры соответствующую команду, например, путем сочетания нажатий клавиш ctrl+c, при этом между браузером и портом хоста устанавливается второе соединение HTTP. Браузер получает команду, введенную с клавиатуры пользователем, и отправляет запрос на прекращение операций передачи данных через второе соединение HTTP, причем в запросе передается ID первого соединения HTTP. После получения отправленного браузером запроса на прекращение операций передачи данных находят первое соединение HTTP согласно переданному в запросе ID первого соединения HTTP, при этом в порт хоста, соединенный с Unix-подобным виртуальным контейнером, отправляется команда скрипта на прекращение операций, так чтобы порт хоста отправил команду скрипта на прекращение операций в Unix-подобный виртуальный контейнер через первое соединение между Unix-подобным виртуальным контейнером и портом хоста. Unix-подобный виртуальный контейнер выполняет команду скрипта на прекращение операций и прекращает операции, связанные с первым соединением HTTP, то есть, операция передачи данных прекращается.

[0054] В соответствии с различными вариантами осуществления настоящего изобретения операцию получения команды скрипта портом хоста можно реализовать нижеописанным способом. Можно установить соединение HTTP между портом хоста и браузером по протоколу передачи гипертекста, при этом через это соединение HTTP может быть получена команда скрипта. Способ также может включать в себя следующие операции. Можно определить, разъединено ли соединение HTTP между портом хоста и браузером. В ответ на определение того факта, что соединение HTTP между портом хоста и браузером разъединено, можно отправить команду скрипта на прекращение операций в Unix-подобный виртуальный контейнер на основе первого соединения между Unix-подобным виртуальным контейнером и портом хоста, установленным на основе прозрачного канала. Unix-подобный виртуальный контейнер выполняет команду скрипта на прекращение операций, при этом операции, связанные с соединением HTTP, прекращаются.

[0055] В соответствии с различными вариантами осуществления настоящего изобретения аналоговый интерфейс, используемый для отображения различных команд скриптов и реакций на команды скриптов, можно реализовать с использованием различных библиотек с открытым исходным кодом (например, termlib). В соответствии с одним из вариантов реализации настоящего изобретения, при помощи библиотеки с открытым исходным кодом можно сгенерировать интерфейс отображения команд. При этом можно захватить операционный символ клавиатуры пользователя, который связан с командой скрипта, полученной портом хоста. Операционный символ клавиатуры пользователя может быть отображен на интерфейсе отображения команд.

[0056] Например, введенную пользователем с клавиатуры команду можно захватить с помощью JavaScript. Введенную с клавиатуры команду можно отобразить на интерфейсе отображения команд. Альтернативно введенная с клавиатуры команда может быть отправлена на интерфейс компьютерной графики (CGI) хоста для обработки, при этом возвращенный хостом результат обработки может быть отображен на интерфейсе отображения команд. Таким образом, можно отображать различные команды скриптов, в том числе автозаполнение, интерактивная операция и т.д.

[0057] В соответствии с различными вариантами осуществления настоящего изобретения, Unix-подобный виртуальный контейнер реагирует на команду скрипта и возвращает ответ на команду скрипта в порт хоста посредством разбиения данных на порции. Порт хоста отправляет разбитые на порции данные на интерфейс браузера для синхронизированного отображения.

[0058] В соответствии с одним из вариантов осуществления настоящего изобретения хост с помощью функции BigPipe сервера QZHTTP может обеспечивать продолжение возврата данных командами скрипта, такими как "vmstat 1" и "tail-f. Хост может возвращать один фрагмент данных за раз, причем размер фрагмента данных может каждый раз изменяться. В соответствии с различными вариантами осуществления настоящего изобретения, каждый фрагмент может быть сжат и может быть немедленно выполнен и сделан доступным. Таким образом, хост может выводить фрагмент, причем этот фрагмент можно одновременно отображать на интерфейсе отображения, соответствующем порту хоста.

[0059] Кроме того, вход в Unix-подобный виртуальный контейнер осуществляют через порт хоста вместо непосредственных операций с Unix-подобным виртуальным контейнером, причем таким образом можно гарантировать безопасность информации Unix-подобного виртуального контейнера. Кроме того, порт хоста позволяет улучшить эффективность доступа за счет асинхронного доступа к Unix-подобному виртуальному контейнеру.

[0060] На основании вышеприведенного раскрытия различные варианты осуществления настоящего изобретения описывают устройство входа в Unix-подобный виртуальный контейнер.

[0061] На фиг. 2 показана блок-схема, иллюстрирующая структуру устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.

[0062] В соответствии с одним из вариантов осуществления настоящего изобретения это устройство может содержать модуль 201 установления прозрачного канала, модуль 202 установления соединения и модуль 203 отправки команд скрипта, как показано на фиг. 2А.

[0063] Модуль 201 установления прозрачного канала может устанавливать соответствующую взаимосвязь между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер, а также устанавливать прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста на основе указанной соответствующей взаимосвязи;

[0064] Модуль 202 установления соединения может устанавливать первое соединение между Unix-подобным виртуальным контейнером и портом хоста на основе прозрачного канала,

[0065] Модуль 203 отправки команд скрипта может получать команду скрипта через порт хоста и отправлять указанную команду скрипта в Unix-подобный виртуальный контейнер согласно первому соединению.

[0066] В одном из вариантов осуществления это устройство может также включать в себя модуль 204 предварительной обработки команд скрипта, как показано на фиг. 2В.

[0067] Модуль 204 предварительной обработки команд скрипта может разбивать команду скрипта согласно заданному маркеру и выполнять в отношении разбитой команды расширение символами для получения расширенной символами команды скрипта. Модуль 204 предварительной обработки команд скрипта может определять, содержится ли расширенная символами команда скрипта в заданном белом списке команд скрипта. В ответ на определение того факта, что расширенная символами команда скрипта содержится в заданном белом списке команд скрипта, модуль 204 предварительной обработки команд скрипта может разрешать модулю 203 отправки команд скрипта отправлять расширенную символами команду скрипта в Unix-подобный виртуальный контейнер согласно первому соединению. В противном случае модуль 204 предварительной обработки команд скрипта может выдавать подсказку о недопустимости команды.

[0068] В соответствии с различными вариантами осуществления настоящего изобретения команду скрипта можно сначала разбить с помощью маркера (например, маркер может содержать точку с запятой, символ конвейеризации и т.д.). В отношении команды скрипта можно выполнять различные типы расширения символами (например, расширение фигурными скобками и т.д.) для получения расширенной символами команды скрипта. В отношении расширенной символами команды скрипта можно выполнять фильтрацию по белому списку. Детальный процесс является таким же, как процесс, описанный в вариантах осуществления способа, поэтому он не описывается здесь повторно.

[0069] В соответствии с