A dockerized version of Simgrid to run SimGrid everywhere Docker is available.
The aim of this project is to improve reproducibility of experiments based on simgrid.
How does this solution compare to other distribution means, such as ready to use linux distro packages or user installs?
Lots of pros:
- Fully Controlled Environment: in docker all all the software stack used for building simgrid is controlled. No hidden dependency.
- Automated full build: simgrid is automacally build from scratch. In docker, from scracth really means from scracth, including the OS install.
- OS Agnostic: Docker runs on Linux, MACOS and Windows. The same docker install can be used in any of those environmnt without change.
- Customizable build: Simply edit the Makefile to customize the build with your favourite SG build option enabled.
- Customizable Environment: Adjust the docker execution machine to your needs (number of CPUs cores, size of memory)
- Extensible: The layered approach of Docker allows anyone to contribute and test additions to the project incrementally, without compromising existing layers.
- Compact: Docker images are incredibly compact and easy to download or transfer. Nothing to compare with traditional virtualization.
Some Cons:
- Docker is still under development: Docker is pretty stable but still suffers some bugs, either directly or transitively (eg. AUFS bugs).
- Virtualized environment: Working with SG in a container is a constraint. Of course you can fit the container to your need and hook it to your working environment, but this is still a bit of a complication.
- Install docker and check that it works (hello world)
- Install gnumake on your OS if necessary
- Clone the content of the directory where you found this README:
git clone https://github.com/odalle/simgrid-docker.git- Edit the config section of the Makefile according to your needs (or keep defaults).
- run
maketo see makefile targets. - For example, run
make runto build all in one shot:- Create a new docker machine
- Install linux distribution in machine
- Install and compile simgrid
- Open a shell in newly creatyed image
As mentioned above, make run will build all from scratch and start a
new shell within the simgrid container.
The first time you run the command it takes quite a long time since it
triggers a full build from scratch. Subsequent executions make run are
instantaneaous, unless you destroy or switch docker-machine.
For convenience the image automatically mounts your homedir on the host so you can easily persist data on your user account.
Remember that everything you write elsewhere in the container will be lost when you exit. (Which is also helpful to quickly erase and restart from scratch, eg. for testing)
- Untested yet in Linux and Windows environment.
- Deploy images on docker hub
- Dockerize some examples and SG tutos