首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在我的docker镜像中安装openmodelica?

如何在我的docker镜像中安装openmodelica?
EN

Stack Overflow用户
提问于 2021-01-29 20:28:52
回答 2查看 200关注 0票数 0

我已经设置了一个docker镜像,并在上面安装了ubuntu。你能告诉我如何在ubuntu中安装Openmodelica到那个docker镜像吗?

例如,如果我想在这个docker镜像上安装node.js,我可以使用以下代码:

代码语言:javascript
运行
复制
apt install nodejs

所以我需要一些这样的代码来在我的docker镜像上安装open Modelica。附言:我的docker镜像是一个ubuntu镜像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-12 00:15:44

我碰巧为OpenModelica创建了一个Docker镜像来调试一些东西,所以我可能也会在这里添加它。我们在OpenModelica论坛上也遇到了这个问题。虽然@sjoelund.se的答案是最新的,但这个更有说服力。

Dockerfile

代码语言:javascript
运行
复制
FROM ubuntu:18.04

# Export DISPLAY, so a XServer can display OMEdit
ARG DEBIAN_FRONTEND=noninteractive
ENV DISPLAY=host.docker.internal:0.0

# Install wget, gnupg, lsb-release
RUN apt-get update \
    && apt install -y wget gnupg lsb-release

# Get the OpenModelica stable version
RUN for deb in deb deb-src; do echo "$deb http://build.openmodelica.org/apt `lsb_release -cs` stable"; done | tee /etc/apt/sources.list.d/openmodelica.list
RUN wget -q http://build.openmodelica.org/apt/openmodelica.asc -O- | apt-key add -

# Install OpenModelica
RUN apt-get update \
    && apt install -y openmodelica

# Install OpenModelica libraries (like all of them)
RUN for PKG in `apt-cache search "omlib-.*" | cut -d" " -f1`; do apt-get install -y "$PKG"; done

# Add non-root user for security
RUN useradd -m -s /bin/bash openmodelicausers
USER openmodelicausers
ENV HOME /home/openmodelicausers
ENV USER openmodelicausers
WORKDIR $HOME

# Return omc version
CMD ["omc", "--version"]

让我们构建并标记它:

代码语言:javascript
运行
复制
docker build --tag openmodelica:ubuntubionic .

如何在docker镜像中使用omc

让我们创建一个小型helloWorld.mo Modelica模型:

代码语言:javascript
运行
复制
model helloWorld
  Real x(start=1.0, fixed=true);
equations
  der(x) = 2.5*x;
end helloWorld;

和一个模拟它的MOS脚本,称为runHelloWorld.mos

代码语言:javascript
运行
复制
loadFile("helloWorld.mo"); getErrorString();
simulate(helloWorld); getErrorString();

现在,我们可以使用-v flag让docker容器访问我们的文件,并使用以下命令运行我们的小示例:

代码语言:javascript
运行
复制
docker run \
  --rm \
  -v $(pwd):/home/openmodelicausers \
  openmodelica:ubuntubionic \
  omc runHelloWorld.mos

请注意,-v需要一个绝对路径。我添加了--rm来进行清理。

在图形用户界面中使用OMEdit

我在WSL2上使用Windows + Docker。因此,为了让OMEdit运行,我需要在我的Windows主机系统上安装一个XServer。它们的设置并不容易,但我使用的是VcXsrv,到目前为止,它对我来说是有效的。在Linux上,这当然要简单得多。我正在使用这个配置来启动XLaunch:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="-1" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="True" ExtraParams="" Wgl="True" DisableAC="True" XDMCPTerminate="False"/>

但是当XServer运行时,你可以像在Linux操作系统中一样使用OMEdit,只需挂载一些包含你的文件的目录就可以了:

代码语言:javascript
运行
复制
docker run \
  --rm \
  -v $(pwd):/home/openmodelicausers \
  openmodelica:ubuntubionic \
  OMEdit
票数 2
EN

Stack Overflow用户

发布于 2021-01-29 20:59:24

您可以从用于生成OpenModelica docker图像的docker文件中获得一些灵感。例如:https://github.com/OpenModelica/OpenModelicaDockerImages/tree/v1.16.2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65954492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档