本教程展示如何从 Docker 容器内部运行 SUMO GUI。
Caution
SUMO 只能使用 X Window System 从容器中运行。
如果您使用的是 Linux,请确保您的桌面环境支持 X11。
如果您使用的是 Windows,您需要一个独立的 X 服务器(例如 VcXsrv)。
简介#
本教程演示如何在不将软件安装到本地机器的情况下使用 SUMO GUI。
获取 Docker 镜像#
您可以通过以下命令从 SUMO Docker 注册表获取最新的 Docker 镜像:
docker pull ghcr.io/eclipse-sumo/sumo:latest
或者,通过检出 SUMO 仓库 并执行以下命令来构建您自己的本地版本镜像:
cd build_config/docker
docker build -t ghcr.io/eclipse-sumo/sumo:latest -f Dockerfile.ubuntu.git .
启动容器#
本节描述如何启动容器。
只需启动一个容器即可。然后我们将从命令行启动所需的应用程序。
Linux#
本节假设您正在运行 X11 作为主要窗口系统,或者运行兼容 X11 的 Wayland 合成器(例如 Weston)。SUMO 目前不支持 Wayland,需要与 X11 的某种兼容性(另请参见 flathub/org.eclipse.sumo#15)。
大多数发行版默认满足此要求,如果您不确定,请尝试继续操作。
为了允许从 Docker 容器内部运行图形应用程序,我们需要做两件事:
- 传输要使用的显示信息:
-e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw - 传输授权到容器的信息:
-e XAUTHORITY=$XAUTHORITY -v $XAUTHORITY:$XAUTHORITY
我们还需要一个目录来持久化存储我们的结果。在此示例中,我们使用 ~/sumo-projs。
因此,启动容器的完整命令如下所示:
mkdir -p ~/sumo-projs/
docker run \
-e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-e XAUTHORITY=$XAUTHORITY -v $XAUTHORITY:$XAUTHORITY \
-v ~/sumo-projs/:/sumo-projs \
--workdir /sumo-projs \
-it \
ghcr.io/eclipse-sumo/sumo:latest bash
然后您将获得一个 shell,您可以在其中启动 GUI 应用程序。例如,输入 netedit 或 sumo-gui。
Windows#
启动您的 X 服务器(例如 VcXsrv)并检查“禁用访问控制”设置(通过此设置,安装过程会变得更加简单)。然后,为了告诉容器中的应用程序使用此 X 服务器,我们在命令行中添加 -e DISPLAY=host.docker.internal:0。
我们还需要一个目录来持久化存储我们的结果。在此示例中,我们使用 C:\sumo-projs。
因此,启动容器的完整命令如下所示:
docker run \
-e DISPLAY=host.docker.internal:0
-v C:\sumo-projs:/sumo-projs \
--workdir /sumo-projs \
-it \
ghcr.io/eclipse-sumo/sumo:latest bash
然后您将获得一个 shell,您可以在其中启动 GUI 应用程序。例如,输入 netedit 或 sumo-gui。
创建和运行仿真#
按照 Hello SUMO 中的步骤使用此 GUI,并将生成的文件保存在 /sumo-projs 中,以便它们保存在持久化位置。
延伸阅读#
您可以使用 Docker 镜像尝试更多的教程。
