OOD Template: vnc_container won't run properly; “failed to connect to dbus”

Hello, we have an app defined to use template: vnc_container. We have found that it won’t launch unless we login to the node first as the user and restart the user dbus service

When it fails, in the output.log it shows:

Starting instance…

WARNING: group: unknown groupid XXX

INFO: Terminating squashfuse after timeout

INFO: Timeouts can be caused by a running background process

ERROR: container cleanup failed: no instance found with name XXXXXXXXXX

FATAL: container creation failed: while applying cgroups config: while creating cgroup manager: failed to connect to dbus (hint: for rootless containers, maybe you need to install dbus-user-session package, see runc/docs/cgroup-v2.md at main · opencontainers/runc · GitHub ): could not execute `busctl --user --no-pager status` (output: “Failed to connect to bus: No such file or directory\n”): exit status 1

FATAL: while executing starter: failed to start instance: while running /usr/local/libexec/apptainer/bin/starter: exit status 255

If we ssh into the node as the user and run

systemctl --user restart dbus.service

Then launch the app, it will work normally. We can see that the user dbus.service is running before restarting it.

We tried adding:
before_script: |

systemctl --user start dbus.service

but the template fails to launch the vnc apptainer image before it runs the before script.

We also tried installing the ubuntu-desktop group and setting graphical target as default, but that didn’t help either.

Does anyone have any other suggestions?

Hi and welcome!

Not sure what could cause this. Can I see the mounts you’re using? I’ve found that /var pretty much always needs to mount, but have never seen this error.

Hello,

In our submit.yml.erb we have

container_path: “<%= (cpath == ‘custom’) ? container_image_custom : cpath %>”
container_bindpath: “/var,/usr”
container_module: “apptainer”
container_command: “apptainer”
container_start_args:
websockify_cmd: “/usr/local/bin/websockify”
before_script: |
systemctl --user start dbus.service