From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Kitchin Subject: Re: Emacs+org-mode in a Docker? Date: Wed, 04 Nov 2015 06:07:55 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54004) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ztvv7-0001v3-EL for emacs-orgmode@gnu.org; Wed, 04 Nov 2015 06:08:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ztvv4-0005jT-27 for emacs-orgmode@gnu.org; Wed, 04 Nov 2015 06:08:01 -0500 Received: from mail-qg0-x229.google.com ([2607:f8b0:400d:c04::229]:36322) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ztvv3-0005jE-UY for emacs-orgmode@gnu.org; Wed, 04 Nov 2015 06:07:58 -0500 Received: by qgad10 with SMTP id d10so36863666qga.3 for ; Wed, 04 Nov 2015 03:07:57 -0800 (PST) In-reply-to: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: "briangpowell ." Cc: emacs-org list Thanks for all the notes! It looks like a not too trivial exercise that might have to be a summer project for me. briangpowell . writes: > * Here are some of my notes+URL links on some docker+emacs experiments thus > far: > > ** Last I checked some glimmering developments seem to be coming to light > in the docker+emacs realm: > > *** Believe some links below might be stepping-stones for your students, > Dr. Kitchin: > > ** Happily, below, I note coming across some work by one of our favorite > Elisp hackers of "elnode" fame: Nic Ferrier > > ** "docker.el" was in development too last I looked into this--see link > below. > > * Linux Containers: ###1 read and take advice here FIRST: > http://stackoverflow.com/questions/27083182/running-emacs-in-a-docker-container > > > ** These links are slightly tangential but I suggest them since they're > also stepping-stones to really what's going on under-the-docker-hood: > > ** https://en.wikipedia.org/wiki/Copy-on-write > ** > http://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment?page=0,0 > ** http://www.liquidweb.com/kb/how-to-install-docker-on-ubuntu-14-04-lts > ** http://aufs.sourceforge.net > ** https://linuxcontainers.org > > * Can run xampp on a docker--see notes and experiments below, here are > first checks and steps: > ** docker inspect garland/xampp-base docker > ** netstat -lnp|grep 8080" ; echo "=>" ; netstat -lnp | grep 8080 ; sleep 3 > * Now try to run the xampp container: > docker run -t -i -p 8080:80 garland/xampp-base /bin/bash & > > * /opt/lampp/lampp startapache > ** http://localhost:8080/xampp/splash.php > ** xterm -e docker run -i -t debian /bin/bash > ** xterm -e docker run -i -t ubuntu /bin/bash > ** docker run -i -t debian /bin/bash & > *** xampp on docker!?: > > * Enabling XAMPP Web Interface with docker: > > Start Docker in interactive mode > > [[shell:docker run -t -i -p 8080:80 garland/xampp-base /bin/bash &]] > > vim /opt/lampp/etc/extra/httpd-xampp.conf > Remove the bottom 4 lines.docker.el > **** Commented out the bottom 4 lines and then this got it semi-working > (returned "Object not found!" error) after I did this: > /opt/lampp/lampp startapache > google-chrome http://localhost:8080/:80 > ***** This worked!(after starting apache in the docker xterm): google > http://localhost:8080/xampp/splash.php > > ** https://github.com/Silex/docker.el > > * [[shell:echo * Put emacs in Docker(but remember all writes will be > lost--so to really keep things write to volume(s)):";cd;docker pull > biscarch/emacs &]] > > ** Just mounted a "volume" (to Docker: volumes are read-write(usually) dirs > and/or files outside the Union File system (aufs) and available to the host > AND the container) > docker run -it --name container-test -h CONTAINER -v /data debian /bin/bash > docker inspect -f {{.Volumes}} container-test => > map[/data:/var/lib/docker/vfs/dir/79d22ddf7a12b6e283c74df521289adb6b537883686eb43aa3c2405f0c6aacae] > date > > /var/lib/docker/vfs/dir/79d22ddf7a12b6e283c74df521289adb6b537883686eb43aa3c2405f0c6aacae/date.j > root@CONTAINER:/# cat /data/date.j => Mon Jul 20 09:08:33 EDT 2015 > ** http://container-solutions.com/understanding-volumes-docker/ "Quite > simply, volumes are directories (or files) that are outside of the default > Union File System and exist as normal directories and files on the host > filesystem." > In order to be able to save (persist) data and share data between > containers, Docker came up with the concept of volumes: > Quite simply, volumes are directories (or files) that are outside of the > default Union File System and exist as normal directories and files on the > host filesystem. > There are two ways to initialise volumes, with some subtle differences that > are important to understand. We can declare a volume at run-time with the > -v flag: >  > $ docker run -it --name container-test -h CONTAINER -v /data debian > /bin/bash > > root@CONTAINER:/# ls /data > root@CONTAINER:/# > This will make the directory /data inside the container live outside the > Union File System and directly accessible on the host. > *** Trying this but fails--may have to do before booting the container?: > docker run -v /home/b/data55:/data55 debian ls /data55 > ** Can also give access to a "volume" that is available in one container to > another > *** Can't you use FUSE with a container!? > ** "you can also mount a directory from your own host into a container:" > $ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp > training/webapp python app.py > *** The above will mount the local directory, /src/webapp, into the > container as the /opt/webapp directory. This is very useful for testing; > for example, > we can mount our source code inside the container and see our application > at work as we change the source code! > **** But with UNIONFS and AUFS this functionality has been available for > many years. > ** To test docker install > docker search debian > docker pull debian > docker run -i -t debian /bin/bash > *** And/or > docker pull ubuntu > docker run -i -t ubuntu /bin/bash > * Yet another emacs in a docker(which I've done successfully--see > above--but this is "dmacs"): [[https://github.com/bcbcarl/docker-emacs]] > docker pull bcbcarl/emacs > sudo curl -L > https://raw.githubusercontent.com/bcbcarl/docker-emacs/master/bin/dmacs -o > /usr/local/bin/dmacs > sudo chmod +x /usr/local/bin/dmacs > * This didn't quite work but very interestin'--nic the elnode man Nic > Ferrier at it again: https://github.com/nicferrier/emacs-in-a-docker > *** This didn't work; but, here's his plan: > > This puts Emacs into a docker! > > I am sure this is going to be useful for tests and things like that. > > Subdirectories > > Since there are an immediate load of things you might do with Dockers (run > a daemon, run a batch in various ways, etc...) I'll put subdirs here with > usable Dockerfiles for doing those things. > > emacsd > > A docker with an Emacs daemon in it. > > $ sudo docker.io run -d -v $(realpath sockets):/tmp/emacs1000 > nicferrier/emacsd > $ emacsclient -s sockets/sock/server -e '(+ 1 1)' > > * Other Emacs Dockerfiles > > Elnode has a few Dockerfiles to allow quick deployment. So far I've based > all the Emacs Dockerfiles I've built on emacsd. > ** Other sites: > https://github.com/nicferrier/emacs-lxc/blob/master/lxc.el > https://github.com/nicferrier > https://www.youtube.com/watch?v=eTeKDStj30Y > https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=nic%20ferrier%20emacs%20container > http://emacswiki.org/emacs/NicFerrier > https://libraries.io/github/nicferrier/emacs-lxc > http://nic.ferrier.me.uk/blog/2013_08/the-emacs-tapas > https://github.com/nicferrier/docker-shell-deploy/blob/master/README.md > http://www.emacswiki.org/emacs/TrampAndDocker > > * Docker Backups > > If you’re using a data-container, it’s pretty trivial to do a backup: > > $ docker run --rm --volumes-from dbdata -v $(pwd):/backup debian tar cvf > /backup/backup.tar /var/lib/postgresql/data > > ** Above should create a tarball of everything in the volume (the official > postgres Dockerfile defines a volume at /var/lib/postgresql/data). > > On Fri, Oct 30, 2015 at 3:57 PM, Matt Price wrote: > >> I don't have any thoughts but would love to see what you ocme upwith. >> Would be great not only for teaching but e.g. for pointing to a working >> environment for research results. >> >> On Fri, Oct 30, 2015 at 12:13 PM, John Kitchin >> wrote: >> >>> Has anyone tried setting up a Docker with an Emacs and org-mode setup? >>> >>> I am looking for some kind of solution like this to use with some >>> students. Any thoughts? >>> >>> Thanks, >>> >>> -- >>> Professor John Kitchin >>> Doherty Hall A207F >>> Department of Chemical Engineering >>> Carnegie Mellon University >>> Pittsburgh, PA 15213 >>> 412-268-7803 >>> @johnkitchin >>> http://kitchingroup.cheme.cmu.edu >>> >>> >> -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu