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

标签 docker ubuntu openmodelica

我已经设置了一个 docker 镜像并在其上安装了 ubuntu。您能告诉我如何在 ubuntu 中将 Openmodelica 安装到该 docker 镜像吗?
例如,如果我想在这个 docker 镜像上安装 node.js,我可以使用这个代码:

apt install nodejs
所以我需要一些类似的代码来在我的 docker 镜像上安装打开的 Modelica。
p.s:我的 docker 镜像是一个 ubuntu 镜像。

最佳答案

我碰巧为 OpenModelica 创建了一个 Docker 镜像来调试一些东西,所以我也可以在这里添加它。我们在 OpenModelica 中得到了这个问题论坛也是。
虽然@sjoelund.se 的答案将保持最新状态,但这个答案更加解释了。
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 .
使用方法omc从 docker 图像
让我们创建一个小的 helloWorld.mo模型模型:
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 运行,我需要在我的 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

关于docker - 如何在我的 docker 镜像中安装 openmodelica?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65954492/

相关文章:

docker - 如何将FTP客户端与Docker容器一起使用

amazon-web-services - 使用 docker-compose 在 ECS 中出现 ecs-searchdomain-sidecar 的问题

docker - 如何使用 docker-compose 构建 Dockerfiles?

python-2.7 - 无法安装 Tensorflow(内存错误)

arrays - Modelica mos 脚本中数组大小的预分配

当我重定向输出时,Python 程序不会在 docker 容器中的 shell 脚本中运行

linux - ODBCManageDataSourcesQ4、ODBCCreateDataSourceQ4 找不到 ODBCINSTGetProperties()

linux - zookeeper_server.pid : Permission denied FAILED TO WRITE PID

modelica - 小于或等于不等于模型中的小于或等于?

modelica - 将 1D 扭矩应用到 3D 旋转接头,而不会产生反作用