В этом репозитории показано, как создать и настроить контейнер Docker® для MATLAB® и его наборов инструментов с помощью диспетчера пакетов MATLAB ( mpm ).
Вы можете использовать этот образ контейнера как масштабируемый и воспроизводимый метод для развертывания и тестирования вашего кода MATLAB.
Используйте Dockerfile в этом репозитории верхнего уровня, если вам нужен легкий и простой способ создания образа контейнера MATLAB. Вы также можете скачать готовые образы на основе этого Dockerfile отсюда.
Альтернативные ресурсы см. в папке альтернатив , которая содержит следующие файлы Dockerfile:
mpm
для установки MATLAB в контейнер. Это позволяет вам устанавливать наборы инструментов, которые в настоящее время не поддерживаются mpm. Используйте этот Dockerfile, если вы предпочитаете использовать рабочий процесс установщика MATLAB вместо mpm
.mathworks/matlab
. Этот файл Dockerfile содержит функции образа MATLAB в Docker Hub, что позволяет вам получить доступ к закрепленному MATLAB через браузер, пакетный режим или интерактивную командную строку.Дополнительные ресурсы, связанные с Docker, см. в разделе Дополнительные ресурсы MATLAB Docker.
Получите доступ к этому Dockerfile, загрузив этот репозиторий напрямую с GitHub® или клонировав этот репозиторий и затем перейдя в соответствующую папку.
git clone https://github.com/mathworks-ref-arch/matlab-dockerfile.git
cd matlab-dockerfile
Создайте контейнер с именем и тегом по вашему выбору.
docker build -t matlab:R2024b .
Запустите контейнер. Протестируйте контейнер, запустив пример команды MATLAB, например ver.
docker run --init --rm -e MLM_LICENSE_FILE=27000@MyServerName matlab:R2024b -batch ver
По умолчанию Dockerfile создает контейнер для MATLAB R2024b.
Команда ver
в качестве примера отображает номер версии MATLAB и других установленных продуктов. Для получения дополнительной информации см. вер. Дополнительную информацию о запуске контейнера см. в разделе «Запуск контейнера».
Примечание
Использование флага
--init
в командеdocker run
гарантирует корректную остановку контейнера при выдаче командыdocker stop
илиdocker kill
. Для получения дополнительной информации см. следующие ссылки:
- Справочная страница запуска Docker.
- Сообщение в блоге об использовании init.
По умолчанию Dockerfile устанавливает MATLAB для последней доступной версии MATLAB без каких-либо дополнительных наборов инструментов или продуктов в папке /opt/matlab/${MATLAB_RELEASE}
.
Используйте параметры ниже, чтобы настроить свою сборку.
Dockerfile поддерживает следующие переменные времени сборки Docker:
Имя аргумента | Значение по умолчанию | Описание |
---|---|---|
MATLAB_RELEASE | Р2024б | Релиз MATLAB для установки, например, R2023b . |
MATLAB_PRODUCT_LIST | МАТЛАБ | Продукты для установки в виде списка, разделенного пробелами. Для получения дополнительной информации см. MPM.md. Например: MATLAB Simulink Deep_Learning_Toolbox Fixed-Point_Designer |
MATLAB_INSTALL_LOCATION | /opt/matlab/R2024b | Путь для установки MATLAB. |
ЛИЦЕНЗИЯ_СЕРВЕР | не установлен | Порт и имя хоста компьютера, на котором работает диспетчер сетевых лицензий, с использованием синтаксиса port@hostname . Например: 27000@MyServerName |
Используйте эти аргументы с командой docker build
, чтобы настроить образ. Альтернативно вы можете изменить значения по умолчанию для этих аргументов непосредственно в Dockerfile.
Например, чтобы создать изображение для MATLAB R2019b, используйте эту команду.
docker build --build-arg MATLAB_RELEASE=R2019b -t matlab:R2019b .
Например, чтобы построить изображение с помощью MATLAB и Simulink®, используйте эту команду.
docker build --build-arg MATLAB_PRODUCT_LIST= ' MATLAB Simulink ' -t matlab:R2024b .
Например, чтобы создать образ с MATLAB, установленным в /opt/matlab, используйте эту команду.
docker build --build-arg MATLAB_INSTALL_LOCATION= ' /opt/matlab ' -t matlab:R2024b .
Включение информации о сервере лицензий в команду docker build
означает, что вам не нужно передавать ее при запуске контейнера.
# Build container with the License Server.
docker build --build-arg LICENSE_SERVER=27000@MyServerName -t matlab:R2024b .
# Run the container, without needing to pass license information.
docker run --init --rm matlab:R2024b -batch ver
Для этого контейнера требуется сетевой менеджер лицензий для лицензирования и запуска MATLAB. Вам понадобится либо порт и имя хоста Network License Manager, либо файл network.lic
.
Шаг 1. Обратитесь к своему системному администратору, который может предоставить одно из следующих действий:
Адрес вашего сервера и порт, на котором он работает. Например: [email protected]
Файл network.lic
, содержащий следующие строки:
# Sample network.lic
SERVER MyServerName.example.com < optional-mac-address > 27000
USE_SERVER
Файл license.dat
. Откройте файл license.dat
, найдите строку SERVER
и либо извлеките port@hostname
, либо создайте файл network.lic
, скопировав строку SERVER
и добавив под ней строку USE_SERVER
.
# snippet from sample license.dat
SERVER MyServerName.example.com < mac-address > 27000
Шаг 2. Используйте port@hostname
или файл network.lic
либо с docker build
, либо с командой docker run
.
С помощью команды docker build
можно:
Укажите аргумент сборки LICENSE_SERVER
.
# Example
docker build -t matlab:R2024b --build-arg LICENSE_SERVER=27000@MyServerName .
Используйте файл network.lic
:
network.lic
в ту же папку, что и файл Dockerfile.COPY network.lic /opt/matlab/licenses/
в файле Dockerfile.LICENSE_SERVER
: # Example
docker build -t matlab:R2024b .
С помощью команды docker run
используйте переменную среды MLM_LICENSE_FILE
. Например:
docker run --init --rm -e MLM_LICENSE_FILE=27000@MyServerName matlab:R2024b -batch ver
Если вы не предоставили информацию о сервере лицензий при создании образа, укажите ее при запуске контейнера. Задайте переменную среды MLM_LICENSE_FILE
с помощью флага -e
, указав местоположение диспетчера сетевых лицензий в формате port@hostname
.
# Start MATLAB, print version information, and exit:
docker run --init --rm -e MLM_LICENSE_FILE=27000@MyServerName matlab:R2024b -batch ver
Вы можете запустить контейнер без указания MLM_LICENSE_FILE
, если вы предоставили информацию о сервере лицензий при создании образа, как показано в примерах ниже.
Чтобы запустить контейнер и запустить MATLAB в интерактивной командной строке, выполните:
docker run --init -it --rm matlab:R2024b
Чтобы запустить контейнер, запустите команду MATLAB, а затем выйдите, выполните:
# Container runs the command RAND in MATLAB and exits.
docker run --init --rm matlab:R2024b -batch rand
Чтобы переопределить поведение контейнера по умолчанию и запустить MATLAB с любым набором аргументов, например -logfile
, выполните:
docker run --init -it --rm matlab:R2024b -logfile " logfilename.log "
Дополнительную информацию см. в документации: Часто используемые параметры запуска.
Изучите готовые Docker-контейнеры MATLAB в Docker Hub: https://hub.docker.com/r/mathworks
Включите дополнительные возможности с помощью репозитория зависимостей MATLAB. Для некоторых рабочих процессов и наборов инструментов необходимо указать зависимости. Это необходимо сделать, если вы хотите выполнить любую из следующих задач:
В репозитории matlab-deps перечислены файлы Dockerfile для различных выпусков и платформ. Чтобы просмотреть Dockerfile для R2024b, нажмите здесь.
Эти файлы Dockerfile содержат закомментированные строки с библиотеками, которые поддерживают эти дополнительные возможности. Скопируйте и раскомментируйте эти строки в свой Dockerfile.
Вы можете помочь улучшить MATLAB, предоставив информацию о том, как вы используете продукты MathWorks. Ваше участие гарантирует, что вы будете представлены, и поможет нам разрабатывать более качественные продукты. Чтобы отказаться от этой службы, удалите следующую строку в Dockerfile:
ENV MW_DDUX_FORCE_ENABLE=true MW_CONTEXT_TAGS=MATLAB:DOCKERFILE:V1
Чтобы узнать больше, см. документацию: Помогите сделать MATLAB еще лучше — часто задаваемые вопросы.
Мы рекомендуем вам опробовать этот репозиторий в своей среде и оставить отзыв. Если вы столкнулись с технической проблемой или у вас есть запрос на улучшение, создайте проблему здесь.
Авторские права: The MathWorks, Inc., 2021–2024 гг.