What is a Container?
A container is an isolated unit of software that contains everything required to run a specific application, including code, libraries, dependencies, drivers and settings. Containers have several strengths, they are:
Consistent: Containers guarantee a consistent behavior regardless of where you deploy them. Since they package all the software dependencies necessary to run an application (including specific versions of runtimes and software libraries), containers run and produce the same output in any environment. Therefore, containers are ideal for running the same application in multiple environments. For example, you can use them to test your applications simultaneously, run multiple simulations, or to do reproducible research in different environments.
Portable: You can deploy containers in almost any operating system or platform. Containers can run on Linux®, Windows® and Mac operating systems and you can deploy them in a private data center, a public cloud (such as AWS® or Microsoft® Azure®) or in a local environment. This means that you can easily share a container image with your colleagues without worrying about software or platform dependencies.
Isolated, lightweight and efficient: Unlike a virtual machine, containers share part of the operating system (the kernel) of the host machine and multiple instances of the same container share common resources. This feature makes them lightweight and efficient, containerized applications can start in seconds. However, containers are isolated from each other and the host operating system. That is, they have read-only access to shared resources and can only change files inside the container itself. To extend functionality, you can mount additional files, folders, and devices into containers.
Virtualized: Containers virtualize the operating system including CPU, GPUs, memory and file system. Therefore, a containerized application thinks that it has access to a regular operating system. This means that you can use the same logic to program a containerized application that you would use for a regular application.
Using MATLAB with Containers
The main reason to dockerize MATLAB® is to integrate it with a continuous integration and continuous delivery (CI/CD) pipeline that is completely containerized. MATLAB has integrations with several CI platforms including CircleCI®, Jenkins®, and Travis CI. For more information, see Continuous Integration with MATLAB on CI Platforms (MATLAB).
Containers also allow you to take advantage of cloud computing resources. Cloud platforms have integrated container management workflows. Containers are often the easiest way to get software on your cloud of choice.
If your organization uses containers for most of their applications and services, you can also integrate a MATLAB application in a container with your existing business applications.
To learn more about running MATLAB in containers, see the video Running MATLAB in Docker Containers. For more information on licensing MATLAB in containers, see License Requirements for MATLAB on Cloud Platforms.
Tip
To get started with containers, you can start a container that includes MATLAB and all the software dependencies necessary to run it. For more information, see MATLAB Container on Docker Hub.
Explore MathWorks Container Offerings
Container Offering | Features | Links |
---|---|---|
MATLAB Container Image on Docker® Hub |
|
|
MATLAB Deep Learning Container Image on Docker Hub |
|
|
MATLAB Deep Learning Container Image on NVIDIA® GPU Cloud |
| |
MATLAB Dockerfile on GitHub® |
| |
Network License Manager Container |
| |
Deploying MATLAB Applications in Containers |
|
|