Nice! I tested on macosx. It works nicely. Two things:
1- It works without sudo, it does not work with sudo (errors of the type "dial unix /var/run/docker.sock: no such file or directory") 2- I do not have interactive display. I get this when running poisson demo root@1b624ffec241:~/Work/FEniCS/share/dolfin/demo/documented/poisson/python# python demo_poisson.py Solving linear variational problem. *** Warning: DISPLAY not set, disabling plotting *** Warning: Environment variable DOLFIN_NOPLOT set: Plotting disabled. Otherwise, you mentioned the use on clusters, where compiling all fenics dependencies with the correct settings is a main problem. However I cannot see how you can deal with job submission systems. Any hint or documentation on this? Thanks again for your work. Surely I will use it for teaching. Best, Corrado Le 12 juin 2014 à 13:20, Garth N. Wells <[email protected]> a écrit : > Hi Larry, > > Great work. I really like the approach. I'll try it out asap. > > Garth > > > On Thu, 12 Jun, 2014 at 6:39 AM, Lizao Li <[email protected]> wrote: >> I made a dockerized version of FEniCS (to be defined below). I would like to >> hear some comments and see if there is interest in adding this as yet >> another way of deploying FEniCS. >> Docker (http://www.docker.com/) is an open source lightweight virtual >> machine, popular among the cloud computing community. It has many advanced >> features but the only thing that matters here is that it is easy, fast, and >> runs almost everywhere (win, mac, linux, google cloud, amazon ec2, etc, but >> no, not yet android~). The result is a "FEniCS-in-a-box" with the following >> objectives achieved: >> - Get FEniCS running with <5 lines of command on most computers (I get >> FEniCS with 3 lines on ArchLinux). >> - Preferrably not compiling for hours. If it has to be compiled, it is >> guaranteed to succeed (even on a cluster with weird toolchains). >> - FEniCS is properly contained in a stable environment (unaffected by things >> like boost, gcc updates) and can be shared between computers (for checking >> and comparison). >> - Minimal loss of performance. >> To test it: >> 1. Go to http://docs.docker.com, find out how to install docker on your >> system (1 line command in ArchLinux, similar for most linux distros). >> 2. Deploy the FEniCS 1.4 image (1 line, download ~4GB, pretty fast, no >> compiling) >> sudo docker pull lzlarryli/fenics:test >> 2'. Alternatively, you can build FEniCS against a minimum Ubuntu (2 lines, >> ~1Gb download, ~30 min compiling): >> wget http://www.math.umn.edu/~lixx1445/fenics_docker/Dockerfile >> sudo docker build -t="lzlarryli/fenics:test" . >> 3. Run FEniCS (1 line): >> sudo docker run -t -i --name fenics -v /tmp:/tmp lzlarryli/fenics:test >> /bin/bash >> The above creates a virtual machine instance based on the FEniCS image: >> -t means attach a terminal >> -i means interactive >> --name gives a name to the machine >> -v /tmp:/tmp mounts the local /tmp to the /tmp in the virtual >> machine so files can be shared. >> After running that line, you end up in the FEniCS demo directory and can go >> ahead and run some demos (fenics.conf is souced already). >> 4. Once done, run exit. It is the same as ssh into another computer. >> To use FEniCS again, just run sudo docker start fenics >> sudo docker attach fenics >> [ctrl+c] >> Clean up >> Remove this virtual machine instance: >> sudo docker rm fenics >> Remove the downloaded image: >> sudo docker rmi lzlarryli/fenics:test >> Uninstall docker. >> How is this build? >> It is built from a simple Dockerfile >> (http://www.math.umn.edu/~lixx1445/fenics_docker/Dockerfile), which >> basically downloads a minimal Ubuntu (~80Mb) and then use Dorsal to compile >> a FEniCS in it. In fact with the same file, DockerHub (also free) can link >> repositories to Bitbucket, which completely automates the process of >> building images. DockerHub is free for binary repositoreis of arbitrary >> size, as long as it is public. This is one of Docker's advantage over other >> virtual machines, where images have to be produced by hand and hosted >> somewhere. >> Sudo? >> It is annoying that sudo is used all the time. This undesirable effect can >> be dealt with by installing sshd in the virtual machine and expose the port >> to the local machine (2 lines, see Docker docs). Then administrators (who >> not necessarily know how to compile FEniCS) can use sudo to install docker, >> FEniCS, and run the virtual machine as a daemon. Users can then ssh into it >> without sudo or anything else. The users are contained in the virtual >> machine, so it is safe. >> Performance? >> This is the part I was not able to test in a reasonable way. I have FEniCS >> 1.3 on various systems (none of them runs ubuntu) and FEniCS 1.4 on the >> virtual Ubuntu machine. The dockerized version runs enlarged FEniCS demo >> problems faster than the native on the same computer, which is ridiculous. I >> can only say that probably 1.4 is faster than 1.3 (good job, btw). Most >> modern (reads non-graduate-student-office) computers have virtualization, >> which makes the virtual machine performance comparable to the native one. >> You are welcome to test and show benchmark results. >> Trade-offs? >> Precompiled binaries or binaries compiled against standard libraries >> certainly performs worse than those compiled against hardware-specific >> optimized libraries. Yet there are quite many cases where performance is not >> critical but easy deployment is: (1) students, (2) new users, (3) code >> developement and testing, (4) cluster/system admins who are not familar with >> numerical software, (5) theoretical numerical analysts (use cluster only >> when memory outflows), (6) people who have to run FEniCS on many different >> platforms. Personally, I am (5)(6) and sometimes (4) breaks FEniCS on >> machines I want to use. This at least makes my life quite easier. >> More info about docker (can be interesting): >> http://www.docker.com/tryit/ >> https://docs.docker.com/userguide/ >> -- >> Lizao (Larry) Li >> Univeristy of Minnesota > > _______________________________________________ > fenics mailing list > [email protected] > http://fenicsproject.org/mailman/listinfo/fenics _______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
