СПОСОБ, УСТРОЙСТВО И СИСТЕМА ВХОДА В Unix-ПОДОБНЫЙ ВИРТУАЛЬНЫЙ КОНТЕЙНЕР
METHOD, DEVICE AND SYSTEM FOR ENTRANCE TO UNIX-LIKE VIRTUAL CONTAINER

[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). В соответствии с одним из вариантов реализации настоящего изобретения, при помощи библиотеки с открытым исходным кодом можно сгенерировать интерфейс отображения команд. При этом можно захватить операционный символ клавиатуры пользователя, который связан с командой скрипта, полученной портом хоста. Операционный символ клавиатуры пользователя может быть отображен на интерфейсе отображения команд.
[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] В соответствии с различными вариантами осуществления настоящего изобретения символы, которые могут поддерживаться в белом списке, могут включать в себя буквы в нижнем и верхнем регистрах, пробелы, числа, "⎮", "-", "_", "*", "~", ".", ";", "/", '' и т.д.
[0070] В соответствии с различными вариантами осуществления настоящего изобретения команды скрипта, которые могут поддерживаться в белом списке, могут включать в себя "ls", "tail", "cd", "pwd", "head", "cat", "ps", "free", "vmstat", "iostat", "uptime", "lsof", "ipcs", "mpstat", "grep", "wc", "uniq", "sort", "md5sum" и т.д.
[0071] Несмотря на то, что выше перечислены некоторые типичные символы и команды скриптов, специалисту в данном области техники понятно, что эти символы и команды скрипта перечислены исключительно в качестве примеров, при этом они не предназначены для ограничения объема правовой охраны различных вариантов осуществления настоящего изобретения.
[0072] В соответствии с одним из вариантов осуществления настоящего изобретения модуль 203 отправки команд скрипта может устанавливать соединение HTTP между портом хоста и браузером по протоколу передачи гипертекста и получать команду скрипта через соединение HTTP.
[0073] В соответствии с одним из вариантов осуществления настоящего изобретения устройство может также включать в себя модуль 205 сохранения времени соединения, в котором заранее конфигурируется пороговое значение времени соединения, как показано на фиг. 2С.
[0074] Модуль 205 сохранения времени соединения может определять, превышает ли соединение HTTP между портом хоста и браузером пороговое значение времени соединения. Если соединение HTTP превышает пороговое значение времени соединения, то модуль 205 сохранения времени соединения может разъединять соединение HTTP. Если соединение HTTP не превышает пороговое значение времени соединения, то модуль 205 сохранения времени соединения может сохранять соединение HTTP.
[0075] В соответствии с одним из вариантов осуществления настоящего изобретения устройство может также включать в себя модуль 206 разъединения соединения, как показано на фиг. 2D.
[0076] Модуль 206 разъединения соединения может получать команду скрипта на прекращение операций через порт хоста, причем в команде скрипта на прекращение операций передается ID первого соединения. Модуль 206 разъединения соединения может устанавливать второе соединение между портом хоста и Unix-подобным виртуальным контейнером через прозрачный канал и отправлять команду скрипта на прекращение операций в Unix-подобный виртуальный контейнер через второе соединение, так чтобы Unix-подобный виртуальный контейнер мог выделить ID первого соединения из команды скрипта на прекращение операций и прекратить операции, связанные с первым соединением.
[0077] В соответствии с одним из вариантов осуществления настоящего изобретения модуль 203 отправки команд скрипта может устанавливать первое соединение HTTP и второе соединение HTTP между браузером и портом хоста по протоколу передачи гипертекста. Модуль 206 разъединения соединения может получать, через второе соединение HTTP, отправленный из браузера запрос на прекращение операций, причем в этом запросе передается ID первого соединения HTTP. После получения отправленного браузером запроса на прекращение операций модуль 206 разъединения соединения может найти первое соединение HTTP согласно переданному в запросе ID первого соединения HTTP, и отправить в порт хоста, соединенный с Unix-подобным виртуальным контейнером, команду скрипта на прекращение операций, так чтобы порт хоста отправил команду скрипта на прекращение операций в Unix-подобный виртуальный контейнер через первое соединение между Unix-подобным виртуальным контейнером и портом хоста. Unix-подобный виртуальный контейнер выполняет команду скрипта на прекращение операций и прекращает операции, связанные с первым соединением HTTP.
[0078] В соответствии с одним из вариантов осуществления настоящего изобретения модуль 203 отправки команд скрипта может устанавливать соединение HTTP между портом хоста и браузером по протоколу передачи гипертекста и получать команду скрипта через соединение HTTP.
[0079] В соответствии с одним из вариантов осуществления настоящего изобретения устройство может также включать в себя модуль 207 определения соединения, как показано на фиг. 2Е.
[0080] Модуль 207 определения соединения HTTP может определять, разъединено ли соединение HTTP между портом хоста и браузером. В ответ на определение того факта, что соединение HTTP между портом хоста и браузером разъединено, модуль 207 определения соединения HTTP может отправлять команду скрипта на прекращение операций в Unix-подобный виртуальный контейнер на основе первого соединения между Unix-подобным виртуальным контейнером и портом хоста, которое установлено на основе прозрачного канала, так чтобы Unix-подобный виртуальный контейнер выполнил команду скрипта на прекращение операций, при этом операции, связанные с соединением HTTP, прекращаются.
[0081] В соответствии с одним из вариантов осуществления настоящего изобретения устройство может также включать в себя модуль 208 отображения команд, как показано на фиг. 2F.
[0082] Модуль 208 отображения команд может генерировать интерфейс отображения команд, захватывать операционный символ клавиатуры пользователя, связанный с принятой портом хоста командой скрипта, и отображать указанный операционный символ клавиатуры пользователя на интерфейсе отображения команд.
[0083] Вышеупомянутые модули в примерах осуществления настоящего изобретения могут быть развернуты в централизованной или распределенной конфигурации, причем могут быть либо объединены в единый модуль, либо быть далее разделены на множество субмодулей.
[0084] Вышеупомянутые модули в примерах осуществления настоящего изобретения могут представлять собой программное обеспечение (например, машиночитаемые команды, хранящиеся на энергонезависимом машиночитаемом носителе и исполняемые процессором), аппаратные средства (например, процессор на специализированной интегральной схеме (ASIC)), или же сочетание вышеперечисленного.
[0085] На фиг. 2G показана блок-схема, иллюстрирующая структуру аппаратных средств устройства входа в Unix-подобный виртуальный контейнер в соответствии с различными примерами осуществления настоящего изобретения. Как видно на фиг. 2G, устройство может включать в себя процессор 21, хранилище 22, по меньшей мере один порт 23 и шину 24. Процессор 21 и хранилище 22 соединяются шиной 24. Устройство может получать и передавать данные через порт 23.
[0086] В соответствии с различными вариантами осуществления настоящего изобретения в хранилище 22 могут храниться машиночитаемые команды. Процессор 21 может выполнять машиночитаемые команды для установления соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер, устанавливать прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста на основе указанной соответствующей взаимосвязи, устанавливать первое соединение между Unix-подобным виртуальным контейнером и портом хоста на основе прозрачного канала, получать команду скрипта через порт хоста и отправлять команду скрипта в Unix-подобный виртуальный контейнер согласно первому соединению.
[0087] В соответствии с различными вариантами осуществления настоящего изобретения процессор 21 может выполнять машиночитаемые команды, хранящиеся в хранилище 21, для реализации всех или части процедур вышеописанных вариантов осуществления способа, которые здесь не описываются повторно.
[0088] Как можно видеть из вышеприведенного описания, при выполнении процессором 21 машиночитаемых команд, хранящихся в хранилище 22, реализуются функции вышеописанных модуля 201 установления прозрачного канала, модуля 202 установления соединения, модуля 203 отправки команд скрипта, модуля 204 предварительной обработки команд скрипта, модуля 205 сохранения времени соединения, модуля 206 разъединения соединения, модуля 207 определения соединения HTTP и модуля 208 отображения команд. Пример структуры аппаратных средств устройства показан на фиг. 2Н.
[0089] На основе вышеприведенного описания различные варианты осуществления настоящего изобретения описывают ниже устройство входа в Unix-подобный виртуальный контейнер.
[0090] На фиг. 3 показана блок-схема, иллюстрирующая структуру системы входа в Unix-подобный виртуальный контейнер в соответствии с различными вариантами осуществления настоящего изобретения.
[0091] Как показано на фиг. 3, система может включать в себя веб-браузер 301, устройство 302 входа в Unix-подобный виртуальный контейнер и хост 303. На хосте 303 запущен Unix-подобный виртуальный контейнер 304. Между веб-браузером 301 и устройством 302 входа в Unix-подобный виртуальный контейнер имеется соединение HTTP.
[0092] Веб-браузер 301 может получать команду скрипта и отправлять указанную команду скрипта в устройство 302 входа в Unix-подобный виртуальный контейнер через соединение HTTP.
[0093] Устройство 302 входа в Unix-подобный виртуальный контейнер может устанавливать соответствующую взаимосвязь между Unix-подобным виртуальным контейнером 304 и портом хоста 303, а также устанавливать прозрачный канал между Unix-подобным виртуальным контейнером 304 и портом хоста на основе указанной соответствующей взаимосвязи; Устройство 302 входа в Unix-подобный виртуальный контейнер может устанавливать первое соединение между Unix-подобным виртуальным контейнером 304 и портом хоста на основе прозрачного канала и отправлять команду скрипта, принятую через веб-браузер 301, в Unix-подобный виртуальный контейнер 304 согласно первому соединению.
[0094] В одном из вариантов осуществления настоящего изобретения устройство 302 входа в Unix-подобный виртуальный контейнер может разбивать команду скрипта согласно заданному маркеру и выполнять в отношении разбитой команды скрипта расширение символами для получения расширенной символами команды скрипта. Устройство 302 входа в Unix-подобный виртуальный контейнер может определять, содержится ли расширенная символами команда скрипта в заданном белом списке команд. В ответ на определение того факта, что расширенная символами команда скрипта содержится в заданном белом списке команд скрипта, устройство 302 входа в Unix-подобный виртуальный контейнер может отправлять расширенную символами команду в Unix-подобный виртуальный контейнер 304 согласно первому соединению. В противном случае устройство 302 входа в Unix-подобный виртуальный контейнер может выдавать подсказку о недопустимости команды.
[0095] В одном из вариантов осуществления настоящего изобретения устройство 302 входа в Unix-подобный виртуальный контейнер может генерировать интерфейс отображения команд, захватывать операционный символ клавиатуры пользователя, связанный с принятой портом хоста командой скрипта, и отображать введенный операционный символ клавиатуры пользователя на интерфейсе отображения команд.
[0096] На практике способ и устройство входа в Unix-подобный виртуальный контейнер, раскрытые в вариантах осуществления настоящего изобретения, могут быть реализованы в различных формах. Например, устройство входа в Unix-подобный виртуальный контейнер может быть разработано с помощью стандартизованного интерфейса прикладного программирования в виде подключаемого модуля, который можно устанавливать в браузере. Альтернативно устройство входа в Unix-подобный виртуальный контейнер может быть инкапсулировано в виде приложения для загрузки и использования пользователем.
[0097] Способ и устройство входа в Unix-подобный виртуальный контейнер, раскрытые в вариантах осуществления настоящего изобретения, можно использовать с различными браузерами, например, IE, Chrome, Safari, Firefox и т.д. Кроме того, способ входа в Unix-подобный виртуальный контейнер, раскрытый в вариантах осуществления настоящего изобретения, можно использовать с различными объектами аппаратного обеспечения, например, с персональным компьютером (PC), планшетным компьютером (PAD), со смартфоном и т.д.
[0098] Например, на фиг. 4 показана схема, иллюстрирующая интерфейс входа в Unix-подобный виртуальный контейнер через планшетный компьютер в соответствии с различными вариантами осуществления настоящего изобретения. На фиг. 5 показана схема, иллюстрирующая интерфейс входа в Unix-подобный виртуальный контейнер через персональный компьютер в соответствии с различными вариантами осуществления настоящего изобретения.
[0099] Если способ и устройство входа в Unix-подобный виртуальный контейнер, раскрытые в вариантах осуществления настоящего изобретения, разрабатываются в виде подключаемого модуля, то эти способ и устройство можно реализовать в виде различных типов подключаемых модулей, таких как осх, dll, cab и т.д. Кроме того, способ и устройство входа в Unix-подобный виртуальный контейнер, раскрытые в вариантах осуществления настоящего изобретения, можно реализовать с помощью таких технологий, как подключаемый модуль Flash, подключаемый модуль RealPlayer, подключаемый модуль MMS, подключаемый модуль MIDI, подключаемый модуль ActiveX и т.д.
[0100] Способ и устройство входа в Unix-подобный виртуальный контейнер, раскрытые в вариантах осуществления настоящего изобретения, можно хранить на различных накопителях в форме команд или набора команд. Указанные накопители могут включать в себя, без ограничения, гибкие диски, CD, DVD, жесткие диски, флэш-память, U-диски, CF-карты, SD-карты, ММС-карты, SM-карты, Memory Stick, xD-карты и т.д.
[0101] Кроме того, способ и устройство входа в Unix-подобный виртуальный контейнер, раскрытые в вариантах осуществления настоящего изобретения, можно использовать с накопителями на основе NAND-флэша, напрмер, U-диски, CF-карты, SD-карты, SDHC-карты, ММС-карты, SM-карты, Memory Stick, xD-карты и т.д.
[0102] Как видно из вышеописанного, в соответствии с различными вариантами осуществления настоящего изобретения устанавливают соответствующую взаимосвязь между Unix-подобным виртуальным контейнером и портом хоста, на котором запущен Unix-подобный виртуальный контейнер. На основе указанной соответствующей взаимосвязи между Unix-подобным виртуальным контейнером и портом хоста устанавливают прозрачный канал между Unix-подобным виртуальным контейнером и портом хоста. На основе прозрачного канала устанавливают первое соединение между Unix-подобным виртуальным контейнером и портом хоста. Согласно первому соединению осуществляют получение команды скрипта через порт хоста и отправку команды скрипта в Unix-подобный виртуальный контейнер. При использовании различных вариантов осуществления настоящего изобретения вход в Unix-подобный виртуальный контейнер можно осуществлять через соединение между портом хоста и Unix-подобным виртуальным контейнером, а отправку команды скрипта в Unix-подобный виртуальный контейнер можно осуществлять снаружи хоста. Таким образом, информацию в пределах Unix-подобного виртуального контейнера, такие как файлы, информация о CPU, ввод-вывод дисковых данных, ввод-вывод сетевых данных и т.д., можно легко просматривать согласно команде скрипта, что важно для различных операций, в том числе интерактивной отладки, просмотра журналов, управления ресурсами устройств в реальном времени и так далее.
[0103] Кроме того, вход в Unix-подобный виртуальный контейнер через порт хоста может обеспечивать безопасность информации в Unix-подобном виртуальном контейнере. Кроме того, асинхронный доступ позволяет улучшить эффективность доступа.
[0104] Аппаратные модули или блоки в различных вариантах осуществления настоящего изобретения могут быть реализованы в механическом или электронном виде. Например, аппаратный модуль может содержать специализированные схемы или логику, жестко конфигурированные (например, в виде специализированного процессора, такого как программируемая пользователем вентильная матрица (FPGA) или ASIC) для выполнения определенных операций. Аппаратный модуль может также содержать программируемую логику или схемы (например, включенные в стандартном процессоре или другом программируемом процессоре), временно конфигурированные с помощью программного обеспечения для выполнения определенных операций. Специалисту в данной области техники очевидно, что решение о том, чтобы реализовать аппаратный модуль в механическом виде, посредством специализированных и жестко конфигурированных схем, или же посредством временно конфигурируемых схем (например, конфигурируемых с помощью программного обеспечения, может приниматься с учетом временных и финансовых затрат.
[0105] В соответствии с вышеприведенным описанием вариантов осуществления изобретения специалисту понятно, что варианты осуществления настоящего изобретения можно реализовать с помощью программного обеспечения, поддерживаемого стандартными аппаратными платформами, или с помощью аппаратных средств. Таким образом, существенные части вышеупомянутого технического решения настоящего изобретения или часть, относящуюся к уровню техники, можно реализовать в виде программного продукта. Программный продукт может храниться на носителе и содержит множество команд, обеспечивающих реализацию терминальным устройством (мобильным телефоном, персональным компьютером, сервером или сетевым устройством) способов, раскрытых в вариантах осуществления настоящего изобретения.
[0106] Специалисту в данной области понятно, что все или часть процедур способов в вышеописанных вариантах осуществления могут быть реализованы аппаратными модулями, выполняющими машиночитаемые команды. Машиночитаемые команды могут храниться на машиночитаемых носителях. При выполнении машиночитаемых команд могут быть реализованы процедуры вариантов осуществления способов. В качестве носителя можно использовать дискеты CD, постоянное запоминающее устройство (ROM) или оперативное запоминающее устройство (RAM) и т.д.
[0107] Чертежи представляют сбой лишь иллюстрации к примерам, причем модули или процедуры, показанные на рисунках, не обязательно являются существенными для реализации настоящего изобретения. Модули в вышеупомянутых примерах могут быть объединены в один модуль или далее разделены на множество субмодулей.
[0108] Приведенное выше раскрытие представляет собой несколько вариантов осуществления настоящего изобретения и не должно использоваться для ограничения объема правовой защиты настоящего изобретения. Любые изменения, эквиваленты, улучшения и т.д., осуществленные без отхода от принципов настоящего изобретения, должны включаться в объем правовой защиты настоящего изобретения.