Replies: 5 comments 1 reply
-
I already answered your email, but I'll copy the response here for future interested contributors: For the docker judge, you''ll need to supply us with a docker file for the container in which your judge will be run. You can add a new docker file by creating a pr here: https://github.com/dodona-edu/docker-images
From that moment on, your judge will be available in Dodona and we'll automatically pull the latest version of your default branch every time you update the judge. Anyway, I am pleased you've found a solution to the running docker within docker issue. Thanks again for your contribution, and sorry for leaving your discussion unanswered for a week. |
Beta Was this translation helpful? Give feedback.
-
Created dodona-edu/docker-images#332
Since I'm doing this as part of an internship I don't think it makes much sense to have the judge be kept associated with my personal GitHub account. Would the Dodona team be willing to take over stewardship of this judge?
The sudo rights are only required inside of the container, I don't think this presents significant security risks to your server, but I'm not a security expert. As far as I know this is the least privileged way to build an image inside of a container. |
Beta Was this translation helpful? Give feedback.
-
Thanks, approved and merged
We'll take over stewardship in our organisation. I'll do this later today and add the judge to Dodona. I'll let you know once it is available
As the rights are only granted within the container it seems fine indeed. |
Beta Was this translation helpful? Give feedback.
-
Wow, this went way faster than I was expecting. I was actually planning on refining the judge a bit more before actually including it. The stable branch which you've set as the default misuses the The master branch is a bit more refined, there I just wanted to change de default behavior, to not fail the solution for every notice the linter generates. |
Beta Was this translation helpful? Give feedback.
-
Your judge has now been added to Dodona. You can now create your own exercises to test it out. See https://docs.dodona.be/en/guides/exercises/new-exercise-repo/ for more info on how to add exercises to dodona. You can also keep working on your judge in https://github.com/dodona-edu/judge-docker Every change to the master branch will automatically be deployed to Dodona Thanks again for your contribution. Once your judge is ready and tested, you might also consider adding documentation and examples for other users. We can then add the judge to our overview here; https://docs.dodona.be/en/references/judges/ (This is not mandatory if the judge is only meant for internal use) |
Beta Was this translation helpful? Give feedback.
-
As part of my internship at VIB I'm working a Dodona judge for Docker.
So far the most challenging part was building the Dockerfiles inside of the container where the judge is run. After trying multiple solutions (Docker in Docker, Podman in Docker and buildah) I've settled on kaniko. The advantage of using kaniko is that it doesn't require any modifications to how Dodona runs containers, unlike the other solutions it doesn't need a more privileged container. The kaniko executable itself should be executed as root, for testing purposes I've added sudo to the container and replaced the executable with a script that calls the original using sudo. This way it's transparent to the judge itself.
I would appreciate any input on how to improve this.
The code can be found here: https://github.com/Bond-009/judge-docker/tree/stable
Beta Was this translation helpful? Give feedback.
All reactions