我已经设置了一个docker映像并在上面安装了ubuntu。你能告诉我如何在ubuntu中安装Openmodelica到docker镜像吗?
例如,如果我想在docker镜像上安装node.js,我可以使用以下代码:apt install nodejs
所以我需要一些像这样的代码来安装我的docker镜像上打开Modelica。注:我的docker镜像是ubuntu镜像。
我碰巧为OpenModelica创建了一个Docker映像来调试一些东西,所以我也可以在这里添加它。我们在OpenModelica论坛上也得到了这些问题。而@sjoelund的答案。我们会保持最新的,这是一个更多的解释。
Dockerfile
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"]
让我们构建并标记它:
docker build --tag openmodelica:ubuntubionic .
如何使用docker镜像中的omc
让我们创建一个小型helloWorld.mo
Modelica模型:
model helloWorld
Real x(start=1.0, fixed=true);
equations
der(x) = 2.5*x;
end helloWorld;
和一个模拟它的MOS脚本,称为runHelloWorld.mos
loadFile("helloWorld.mo"); getErrorString();
simulate(helloWorld); getErrorString();
现在,我们可以使用-v
标志使docker容器可以访问我们的文件,并运行我们的小示例:
docker run
--rm
-v $(pwd):/home/openmodelicausers
openmodelica:ubuntubionic
omc runHelloWorld.mos
注意-v
需要一个绝对路径。我添加了--rm
来清理。
在GUI中使用OMEdit
我使用Windows + Docker与WSL2。因此,为了使OMEdit运行,我需要在Windows主机系统上安装一个XServer。它们不是微不足道的设置,但我正在使用VcXsrv,到目前为止,它对我来说是有效的。在Linux上,这当然要简单得多。我使用这个配置来启动XLaunch:
<?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,只需挂载一些文件目录,就可以了:
docker run
--rm
-v $(pwd):/home/openmodelicausers
openmodelica:ubuntubionic
OMEdit
您可以从用于生成OpenModelica docker映像的Dockerfiles中获得一些灵感。例如:https://github.com/OpenModelica/OpenModelicaDockerImages/tree/v1.16.2