exponenta event banner

Упаковка автономных приложений MATLAB в образы Docker

Поддерживаемая платформа: только Linux ®.

В этом примере показано, как упаковывать автономное приложение MATLAB ® в образ Docker ®.

Предпосылки

  1. Убедитесь, что на компьютере с Linux установлен Docker, введя docker в консоли. Если Docker не установлен, можно следовать инструкциям на веб-сайте Docker для установки и настройки Docker.

    https://docs.docker.com/engine/install/

  2. Убедитесь, что программа установки среды выполнения MATLAB доступна на компьютере. Можно проверить его существование, выполнив команду compiler.runtime.download в командной строке MATLAB. Если на компьютере существует установщик, функция возвращает сообщение о том, что установщик среды выполнения MATLAB существует и указывает его местоположение. В противном случае загружается установщик среды выполнения MATLAB, соответствующий версии и уровню обновления MATLAB, откуда выполняется команда.

    Если используемый компьютер не подключен к Интернету, необходимо загрузить программу установки MATLAB Runtime с компьютера, подключенного к Интернету. После загрузки программы установки MATLAB Runtime необходимо перенести программу установки на компьютер, не подключенный к Интернету. Программу установки можно загрузить с веб-сайта MathWorks.

    https://www.mathworks.com/products/compiler/matlab-runtime.html

Создание функции в MATLAB

Запись функции MATLAB с именем mymagic и сохраните его с именем файла mymagic.m.

function mymagic(x)
y = magic(x);
disp(y)

Проверьте функцию в командной строке MATLAB.

mymagic(5)
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Создание автономного приложения

Сделать mymagic в автономное приложение с использованием compiler.build.standaloneApplication функция.

res = compiler.build.standaloneApplication('mymagic.m', 'TreatInputsAsNumeric', true)
res = 
  Results with properties:

    BuildType: 'standaloneApplication'
        Files: {3×1 cell}
      Options: [1×1 compiler.build.StandaloneApplicationOptions]

После завершения построения функция создает папку с именем mymagicstandaloneApplication в текущей папке для хранения автономного приложения. Results объект res в командной строке MATLAB содержится информация о построении.

Установка автономного приложения в образ Docker

Создать DockerOptions Объект

Перед созданием образа Docker создайте DockerOptions с использованием compiler.package.DockerOptions и передать Results объект res и имя изображения mymagic-standalone-app в качестве входных аргументов. compiler.package.DockerOptions функция позволяет настроить упаковку изображений Docker.

opts = compiler.package.DockerOptions(res,'ImageName','mymagic-standalone-app')
opts = 
  DockerOptions with properties:

            EntryPoint: 'mymagic'
    ExecuteDockerBuild: on
             ImageName: 'mymagic-standalone-app'
         DockerContext: './mymagic-standalone-appdocker'

Создать изображение Docker

Создание образа Docker с помощью compiler.package.docker и передать Results объект res и DockerOptions объект opts в качестве входных аргументов.

compiler.package.docker(res, 'Options', opts)
Generating Runtime Image
Cleaning MATLAB Runtime installer location. It may take several minutes...
Copying MATLAB Runtime installer. It may take several minutes...
...
...
...
Successfully built 6501fa2bc057
Successfully tagged mymagic-standalone-app:latest

DOCKER CONTEXT LOCATION:

/home/user/MATLAB/work/mymagic-standalone-appdocker

SAMPLE DOCKER RUN COMMAND:

docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app

После завершения упаковки функция создает папку с именем mymagic-standalone-appdocker в текущем каталоге. Эта папка является контекстом Docker и содержит файл Dockerfile. compiler.package.docker функция также возвращает местоположение контекста Docker и пример команды выполнения Docker. Для проверки правильности выполнения образа можно использовать пример команды Docker run.

В процессе упаковки необходимые биты для среды выполнения MATLAB упаковываются как родительское изображение Docker, а автономное приложение упаковывается как дочернее изображение Docker.

Тестовое изображение Docker

Откройте консоль Linux и перейдите в папку контекста Docker. Убедитесь, что mymagic-standalone-app Образ Docker указан в списке изображений Docker.

$ docker images
REPOSITORY                                      TAG           IMAGE ID            CREATED             SIZE
mymagic-standalone-app                          latest        6501fa2bc057        23 seconds ago      1.03GB
matlabruntime/r2020b/update0/4000000000000000   latest        c6eb5ba4ae69        24 hours ago        1.03GB

После проверки, что mymagic-standalone-app Образ Docker указан в списке изображений Docker, выполните команду sample run с входным аргументом 5:

$ docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app 5
No protocol specified

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Автономное приложение упаковано и теперь может быть запущено как образ Docker.

Примечание

При запуске приложений, генерирующих графики или графики, выполните команду xhost программы с + перед запуском образа Docker.

xhost +
xhost программа управляет доступом к серверу X-дисплея, тем самым позволяя отображать графики и графику. + указывает, что каждый имеет доступ к экранному серверу X. Если запустить xhost программы с + перед запуском приложений, не генерирующих графики или графики, сообщение No protocol specified больше не отображается.

Общий доступ к образу Docker

Изображение Docker можно совместно использовать различными способами.

  • Поместите изображение в центральный реестр DocureHub или в частный реестр Docker. Это наиболее распространенный рабочий процесс.

  • Сохраните изображение как архив смол и поделитесь им с другими пользователями. Этот поток операций подходит для немедленного тестирования.

Дополнительные сведения о перемещении образа в центральный реестр Docker или частный реестр см. в документации Docker.

Сохранить образ Docker как архив Tar

Чтобы сохранить образ Docker как архив дегтей, откройте консоль Linux, перейдите в папку контекста Docker и введите следующее.

$ docker save mymagic-standalone-app -o mymagic-standalone-app.tar

Файл с именем mymagic-standalone-app.tar создается в текущей папке. Задайте соответствующие разрешения с помощью chmod до совместного использования тарбола с другими пользователями.

Загрузить образ Docker из архива Tar

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

$ docker load --input mymagic-standalone-app.tar

Убедитесь, что изображение загружено.

$ docker images

Запустить образ Docker

$ xhost +
$ docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app 5

См. также

| | |