주요 콘텐츠

MATLAB 독립 실행형 애플리케이션을 Docker 이미지로 패키징하기

지원되는 플랫폼: Linux®만 해당.

이 예제에서는 MATLAB® 독립 실행형 애플리케이션을 Docker® 이미지로 패키징하는 방법을 보여줍니다.

이 옵션은 모든 종속 관계가 포함된 표준화된 형식으로 애플리케이션을 배포하거나 오케스트레이터에서 일괄 처리 작업을 실행하려는 개발자에게 가장 적합합니다. HTTP/HTTPS 엔드포인트를 제공하는 마이크로서비스 Docker 이미지를 생성하려면 Create Microservice Docker Image (MATLAB Compiler SDK) 항목을 참조하십시오.

선행 조건

  1. 터미널에 docker를 입력하여 Linux 컴퓨터에 Docker가 설치되어 있는지 확인합니다. Docker가 설치되어 있지 않으면 Docker 웹사이트에 나와 있는 지침에 따라 Docker를 설치하고 설정할 수 있습니다.

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

  2. 시스템 터미널에 다음을 입력하여 Docker 설치를 테스트합니다.

    docker run hello-world
    Docker 설치가 제대로 작동하는 경우 다음 메시지가 표시됩니다.
    Hello from Docker!
    This message shows that your installation appears to be working correctly.

  3. 컴퓨터에서 MATLAB Runtime 인스톨러를 사용할 수 있는지 확인합니다. MATLAB 명령 프롬프트에서 compiler.runtime.download 함수를 실행하여 이 인스톨러가 있는지 확인할 수 있습니다. 컴퓨터에 기존 인스톨러가 있는 경우 이 함수가 해당 위치를 반환합니다. 그렇지 않으면 명령이 실행된 MATLAB 버전과 업데이트 레벨과 매칭되는 MATLAB Runtime 인스톨러를 다운로드합니다.

    사용 중인 컴퓨터가 인터넷에 연결되어 있지 않으면 인터넷에 연결된 컴퓨터에서 MATLAB Runtime 인스톨러를 다운로드해야 합니다. MATLAB Runtime 인스톨러를 다운로드한 후에, 오프라인 컴퓨터로 인스톨러를 전송해야 합니다. MathWorks 웹사이트에서 인스톨러를 다운로드할 수 있습니다.

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

MATLAB에서 함수 만들기

mymagic이라는 MATLAB 함수를 작성하고 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

독립 실행형 애플리케이션 만들기

compiler.build.standaloneApplication 함수를 사용하여 mymagic 함수를 독립 실행형 애플리케이션으로 패키징합니다.

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

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

MATLAB 명령 프롬프트에서 반환된 Results 객체 res에 빌드에 대한 정보가 포함되어 있습니다.

빌드가 완료되면 함수는 현재 디렉터리에 mymagicstandaloneApplication이라는 폴더를 생성하여 독립 실행형 애플리케이션을 저장합니다.

독립 실행형 애플리케이션을 Docker 이미지로 패키징하기

DockerOptions 객체 만들기

Docker 이미지를 만들기 전에, compiler.package.DockerOptions 함수를 사용하여 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'
    AdditionalInstructions: {}
        AdditionalPackages: {}
        ExecuteDockerBuild: on
                 ImageName: 'mymagic-standalone-app'
             DockerContext: './mymagic-standalone-appdocker'

Docker 이미지 만들기

compiler.package.docker 함수를 사용하여 Docker 이미지를 만들고 Results 객체 resDockerOptions 객체 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 실행 명령을 사용하여 이미지가 올바르게 실행되는지 테스트할 수 있습니다. 애플리케이션에 입력 인수가 필요하면, 샘플 명령에 입력 인수를 추가하십시오.

패키징 절차 중에 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/r2025b/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

out =

    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 이미지로 실행할 수 있습니다.

참고

플롯이나 그래픽스를 생성하는 애플리케이션을 실행하는 경우, Docker 이미지를 실행하기 전에 + 옵션과 함께 xhost 프로그램을 실행하십시오.

xhost +
xhost 프로그램은 X 디스플레이 서버에 대한 액세스를 제어하여 플롯과 그래픽스를 표시할 수 있도록 합니다. + 옵션은 모든 사용자가 X 디스플레이 서버에 액세스할 수 있음을 나타냅니다. 플롯이나 그래픽스를 생성하지 않는 애플리케이션을 실행하기 전에 + 옵션과 함께 xhost 프로그램을 실행하면, 메시지 No protocol specified가 더 이상 표시되지 않습니다.

Docker 이미지 공유하기

다양한 방법으로 Docker 이미지를 공유할 수 있습니다.

  • 이미지를 Docker의 중앙 레지스트리 DockerHub 또는 사용자의 프라이빗 레지스트리로 밀어넣습니다(push). 이는 가장 일반적인 워크플로입니다.

  • 이미지를 tar 아카이브로 저장한 후 다른 사용자와 공유합니다. 이 워크플로는 즉각적인 테스트에 적합합니다.

이미지를 Docker의 중앙 레지스트리 또는 사용자의 프라이빗 레지스트리로 밀어넣는 방법에 대한 자세한 내용은 Docker 문서를 참조하십시오.

Docker 이미지를 Tar 아카이브로 저장하기

Docker 이미지를 tar 아카이브로 저장하려면 Linux 터미널을 열고 Docker 컨텍스트 폴더로 이동한 후 다음을 입력하십시오.

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

현재 폴더에 mymagic-standalone-app.tar이라는 파일이 생성됩니다. tarball을 다른 사용자와 공유하기 전에 chmod를 사용하여 적절한 권한을 설정하십시오.

Tar 아카이브에서 Docker 이미지 불러오기

tarball에 포함된 이미지를 최종 사용자의 컴퓨터에 불러온 다음 실행합니다.

$ 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

참고 항목

| | |

도움말 항목