This repository defines a Gramine-enabled container for FEDn. The container is intended to be used for running FEDn components on the Intel SGX platform.
For demonstration purposes you can run the whole stack on a single SGX machine using docker-compose. First clone and locate in the current repo and then run the following command.
docker-compose up -d
Notes
- You may need to login into Scaleout's GitHub registry to access ghcr.io/scaleoutsystems/tee-gc/fedn:latest
- The usual FEDn ports should be exposed on the machine. You can use these ports to access the UI.
To run reducer, combiner and client individually you can simply run the following Docker command:
docker run ghcr.io/scaleoutsystems/tee-gc/fedn -v config/settings-reducer.yaml:/app/config/settings-reducer.yaml --net=host --privileged -d reducer # start the reducer
docker run ghcr.io/scaleoutsystems/tee-gc/fedn -v config/settings-combiner.yaml:/app/config/settings-combiner.yaml --net=host --privileged -d combiner # start the combiner
docker run ghcr.io/scaleoutsystems/tee-gc/fedn -v config/settings-client.yaml:/app/config/settings-client.yaml --net=host --privileged -d client # start the client
- All the services run on
localhost
with the Docker containers attaching straight to the host network. - The container is not setup to run the compute package in the enclave (deps are missing).
- There is a compile error in the current version of Gramine with
debian-slim
. In the latest release there is a precompiled version of Gramine for Ubuntu. A possible solution is to try to install the "deb" package ondebian-slim
or to rebase the whole image on Ubuntu. The latter may break some dependencies on the other projects that are using this image.