On Thu, Jun 12, 2014 at 8:31 AM, Corrado Maurini <[email protected]> wrote:
> 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") > Thanks for testing~ So it is more convenient for mac users (I guess for windows users as well, since there is no sudo). > > 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. > > To run a docker virtual machine is basically to "ssh" into it. It is intended as a server-side tool, so by default it is not "ssh -X". Actually I didn't even install xserver in that minimal ubuntu. Of course, we can install sshd and xserver (just apt-get) in the virtual machine and then run the real "ssh -X" into it. But then due to security concern, we will have to setup a password for the virtual machine (passwd) and login into it every time. We can even install vncserver or nomachine in it and login into the virtual machine as a fully-desktoped ubuntu (see for example *http://www.maketecheasier.com/set-up-nomachine-nx-between-two-linux-systems/ <http://www.maketecheasier.com/set-up-nomachine-nx-between-two-linux-systems/>). *This really depends on how much graphics the user wants to see. > 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? > > I am yet to try to run it in a cluster. MPI basically ssh into nodes and run the command. One solution is to install sshd (again) in the virtual machine and expose that to some nonstandard port on the real machine. Then when other computers talk to that port, they are really talking to the virtual machine. Finally we setup MPI to use that port instead of the default 22. Then it should run. I will try something along this line this weekend to see if it works. > 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 > > -- Lizao (Larry) Li Univeristy of Minnesota
_______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
