Поддерживаемая платформа: Linux® только.
В этом примере показано, как упаковать MATLAB® автономное приложение в Docker® изображение.
Проверьте, что на вашем компьютере с Linux установлен Docker, введя docker
в консоли. Если у вас нет установленного Docker, можно следовать инструкциям на веб-сайте Docker для установки и настройки Docker.
Убедитесь, что установщик 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, вызываемой 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, содержит информацию о сборке.
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 с помощью 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.
Откройте консоль 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 +
xhost
программа управляет доступом к серверу отображения X, что позволяет отображать графики и графики. The +
Опция указывает, что каждый имеет доступ к серверу X отображения. Если вы запускаете xhost
программа со +
опция перед запуском приложений, которые не генерируют графики или графики, сообщение No protocol specified
больше не отображается.Вы можете делиться своим изображением Docker различными способами.
Переместите изображение в центральный реестр DockerHub или в частный реестр. Это самый распространенный рабочий процесс.
Сохраните изображение как архив дегтя и поделитесь им с другими. Этот рабочий процесс подходит для немедленной проверки.
Для получения дополнительной информации о перемещении вашего изображения в центральный реестр Docker или ваш частный реестр, смотрите документацию Docker.
Чтобы сохранить изображение Docker в виде архива tar, откройте консоль Linux, перейдите в папку контекста Docker и введите следующее.
$ docker save mymagic-standalone-app -o mymagic-standalone-app.tar |
Файл с именем mymagic-standalone-app.tar
создается в текущей папке. Установите соответствующие разрешения с помощью chmod
до совместного использования тарболом с другими пользователями.
Загрузите изображение, содержащееся в тарболе на машине конечного пользователя, и запустите его.
$ docker load --input mymagic-standalone-app.tar |
Проверьте, что изображение загружено.
$ docker images |
$ xhost + $ docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app 5 |
compiler.build.standaloneApplication
| compiler.package.docker
| compiler.package.DockerOptions
| compiler.runtime.download