如何在我的 docker 图像中安装 openmodelica?
How could I Install openmodelica in my docker image?
我已经设置了一个 docker 映像并在其上安装了 ubuntu。你能告诉我如何在 ubuntu 内将 Openmodelica 安装到那个 docker 图像吗?
例如,如果我想在此 docker 图像上安装 node.js,我可以使用此代码:
apt install nodejs
所以我需要一些类似的代码来在我的 docker 图像上安装打开的 Modelica。
p.s:我的 docker 图片是 ubuntu 图片。
您可以从用于生成 OpenModelica docker 图像的 Dockerfile 中获得一些灵感。例如:https://github.com/OpenModelica/OpenModelicaDockerImages/tree/v1.16.2
我碰巧为 OpenModelica 创建了一个 Docker 图像来调试某些东西,所以我也可以在这里添加它。我们也在 OpenModelica 论坛中收到了这个问题。
虽然 @sjoelund.se 的答案会保持最新,但这个更能说明问题。
Docker文件
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
flag 和 运行 我们的小示例使 docker 容器可以访问我们的文件:
docker run \
--rm \
-v $(pwd):/home/openmodelicausers \
openmodelica:ubuntubionic \
omc runHelloWorld.mos
注意-v
需要一个绝对路径。我添加了 --rm
来清理。
通过 GUI 使用 OMEdit
我在 WSL2 中使用 Windows + Docker。因此,为了获得 OMEdit 运行ning,我需要在我的 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 运行ning 时,您可以使用与 Linux OS 几乎相同的方式使用 OMEdit,只需将文件挂载到某个目录即可:
docker run \
--rm \
-v $(pwd):/home/openmodelicausers \
openmodelica:ubuntubionic \
OMEdit
我已经设置了一个 docker 映像并在其上安装了 ubuntu。你能告诉我如何在 ubuntu 内将 Openmodelica 安装到那个 docker 图像吗?
例如,如果我想在此 docker 图像上安装 node.js,我可以使用此代码:
apt install nodejs
所以我需要一些类似的代码来在我的 docker 图像上安装打开的 Modelica。 p.s:我的 docker 图片是 ubuntu 图片。
您可以从用于生成 OpenModelica docker 图像的 Dockerfile 中获得一些灵感。例如:https://github.com/OpenModelica/OpenModelicaDockerImages/tree/v1.16.2
我碰巧为 OpenModelica 创建了一个 Docker 图像来调试某些东西,所以我也可以在这里添加它。我们也在 OpenModelica 论坛中收到了这个问题。 虽然 @sjoelund.se 的答案会保持最新,但这个更能说明问题。
Docker文件
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
flag 和 运行 我们的小示例使 docker 容器可以访问我们的文件:
docker run \
--rm \
-v $(pwd):/home/openmodelicausers \
openmodelica:ubuntubionic \
omc runHelloWorld.mos
注意-v
需要一个绝对路径。我添加了 --rm
来清理。
通过 GUI 使用 OMEdit
我在 WSL2 中使用 Windows + Docker。因此,为了获得 OMEdit 运行ning,我需要在我的 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 运行ning 时,您可以使用与 Linux OS 几乎相同的方式使用 OMEdit,只需将文件挂载到某个目录即可:
docker run \
--rm \
-v $(pwd):/home/openmodelicausers \
openmodelica:ubuntubionic \
OMEdit