emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "briangpowell ." <briangpowellms@gmail.com>
To: Matt Price <moptop99@gmail.com>
Cc: emacs-org list <emacs-orgmode@gnu.org>,
	John Kitchin <jkitchin@andrew.cmu.edu>
Subject: Re: Emacs+org-mode in a Docker?
Date: Fri, 30 Oct 2015 19:58:02 -0400	[thread overview]
Message-ID: <CAFm0skGHZ3otWG0FC761GBCReoTx_MuYgw48g68Y76g1O1SwXA@mail.gmail.com> (raw)
In-Reply-To: <CAN_Dec9oZfLhCZthmPir1zJoStTE=22sQoN_hEP3t-K69uxm0w@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7718 bytes --]

* 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 <moptop99@gmail.com> 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 <jkitchin@andrew.cmu.edu>
> 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
>>
>>
>

[-- Attachment #2: Type: text/html, Size: 11523 bytes --]

  reply	other threads:[~2015-10-30 23:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-30 16:13 Emacs+org-mode in a Docker? John Kitchin
2015-10-30 19:57 ` Matt Price
2015-10-30 23:58   ` briangpowell . [this message]
2015-11-04 11:07     ` John Kitchin
2015-11-07  7:00       ` Grant Rettke
2015-11-07  8:17         ` Stelian Iancu
2015-11-17 12:51           ` Grant Rettke
2015-11-09 14:45         ` John Kitchin
2015-11-17 12:56           ` Grant Rettke
2015-11-17 20:46 ` joakim
2015-11-18  9:47   ` Alexey Lebedeff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAFm0skGHZ3otWG0FC761GBCReoTx_MuYgw48g68Y76g1O1SwXA@mail.gmail.com \
    --to=briangpowellms@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=jkitchin@andrew.cmu.edu \
    --cc=moptop99@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).