- anton.vella
- martin.levesque
make
./out/mymoulette -I library/node:19-alpine /bin/sh- Files:
main.rs,parse.rs.
- Files:
cgroup.rs. - Difficulties: Writing to
/sys/fs/cgroup/as a standard user is forbidden. Resolved by granting theCAP_DAC_OVERRIDEcapability to the binary to bypass file permissions during configuration.
- Files:
capabilities.rs.
- Files:
Makefile. - Difficulties: We had added several capabilities which we then removed.
- Files:
chroot.rs. (unused, replaced by pivot_root)
- Files:
seccomp.rs.
- Files:
oci.rs. - Difficulties: Understanding how to retrieve layers via the manifest. Occasionally, a manifest list is returned in which we must search for the manifest related to the desired architecture (amd64/linux).
- Files:
namespace.rs.
Container execution without being root on the host machine.
- Files:
namespace.rs. - Difficulties: The configuration of maps (
uid_map,gid_map) is very sensitive to the order of operations. Writingsetgroups=denyis mandatory before GID mapping to avoid anEPERMerror. We encountered problems because we had to leave a capability in theMakefile, otherwise we could not create the cgroups. The problem is that when setting capabilities, the DUMPABLE flag is set to0, and if it is not reset to1later, we cannot write touid_map,gid_map.
- Files:
mounts.rs.
- Files:
mounts.rs.
- Files:
namespace.rs.
Root replacement via pivot_root (more secure than chroot).
- Files:
chroot.rs.
We did not implement this level.
We mounted the rootfs in overlayfs to prevent changes to the image from persisting between runs. We were trying to approximate the behavior of docker.
- Files:
mount.rs.