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

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

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

Необходимые условия

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

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

  2. Убедитесь, что установщик MATLAB Runtime доступен на вашем компьютере. Можно проверить его существование, выполнив compiler.runtime.download в командной строке MATLAB. Если на компьютере существует установщик, функция возвращает сообщение о том, что установщик MATLAB Runtime существует и задает его местоположение. В противном случае загружает установщик MATLAB Runtime, соответствующий версии и уровню обновления 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 в текущей директории для хранения автономного приложения. The 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 run. Можно использовать пример команды Docker run, чтобы проверить, правильно ли выполняется ваше изображение.

В процессе упаковки необходимые биты для MATLAB Runtime упаковываются как родительское изображение 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, выполните команду выборки запуска с входным параметром 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 +
The xhost программа управляет доступом к серверу отображения X, что позволяет отображать графики и графики. The + Опция указывает, что каждый имеет доступ к серверу X отображения. Если вы запускаете xhost программа со + опция перед запуском приложений, которые не генерируют графики или графики, сообщение No protocol specified больше не отображается.

Совместное использование изображения Docker

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

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

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

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

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

Чтобы сохранить изображение Docker в виде архива tar, откройте консоль 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

См. также

| | |