Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support apps that run in Docker (or other) containers #5825

Closed
davidpanderson opened this issue Sep 30, 2024 · 0 comments · Fixed by #5855
Closed

Support apps that run in Docker (or other) containers #5825

davidpanderson opened this issue Sep 30, 2024 · 0 comments · Fixed by #5855

Comments

@davidpanderson
Copy link
Contributor

davidpanderson commented Sep 30, 2024

Design notes on proposed Docker features.
Related issues: #5617, #5512

The basic idea is to make a cross-platform "Docker wrapper" that interfaces the BOINC client to the Docker engine.
The wrapper uses the docker CLI program (e.g. docker run foo) to create and control containers.

An app version would consist of:

  • the wrapper
  • a Docker file, which defines the image (which may use images from public or private registries)
  • Additional files, e.g. executable

Issues:

Input/output files

Goal: no copying of large files.
To do this: the wrapper mounts the slot and project dirs in the container.
The main script uses resolve.sh to map logical to physical names.

Suspend/resume

Use 'docker run --stop name'

CPU throttling

Does Docker have a feature for this? Don't want to use BOINC's stop/start approach.

Checkpointing

Can we use 'docker commit'?

Fraction done

Do this using a file in slot dir; app writes it.

Cleaning up old images

When and how?

Getting stderr output

Use a file in slot dir? or does Docker have a feature for this?

Finish file and exit code

How does wrapper know if app really finished?

Getting CPU time and working set size

Can the wrapper run ps in container, like WSL wrapper?

Windows issues

What WSL image should the wrapper use?

Other container systems

Docker is free only for organizations with < 250 employees and $10M revenue.
These parameters can change at any time.
Maybe we should design things so that we could also use
Singulariy
or Podman.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants