[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: official Emacs Docker image

From: Ricardo Wurmus
Subject: Re: official Emacs Docker image
Date: Fri, 06 Jan 2017 16:56:50 +0100
User-agent: mu4e 0.9.18; emacs 25.1.1

Elias Mårtenson <address@hidden> writes:

> On 1 January 2017 at 17:03, Ricardo Wurmus <address@hidden> wrote:
>> Elias Mårtenson <address@hidden> writes:
>> > Arguably there should be a fully free distribution that could be the base
>> > for more than just Emacs.
>> GuixSD is a fully free GNU distribution and it comes with the tools that
>> are needed to determine runtime dependencies that can then turned into a
>> Docker image.  Since Guix is a functional package manager and thus can
>> account for the full closure of a package it doesn’t require a base
>> image and can be the base itself.
> I have to admit that I don't fully know what Guix is, but based on what you
> say, it would still make sense to have a base (Guix, in this case) that
> other containers base themselves on. That way the storage can be shared
> between containers.

Guix is a functional package manager.  Given a package it can extract
the “closure” of the package, i.e. the package and all its dependencies,

Since commit 03476a23f Guix can build Docker images without requiring
Docker, simply by recursively exporting a package along with its
dependencies, all the way down to things like the glibc.

Here’s how to build a Docker image of Emacs (along with coreutils and
bash, so that M-x shell and a couple more things work out of the box):

    guix environment --ad-hoc emacs-no-x-toolkit coreutils bash
    guix archive --export -f docker $GUIX_ENVIRONMENT

The generated archive can the be loaded with “docker load”.  A user can
then run Emacs with the usual “docker run … $imageid /bin/emacs”

For simpler packages it would be sufficient to do something like this:

    guix archive --export -f docker $(guix build the-package)


GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC

reply via email to

[Prev in Thread] Current Thread [Next in Thread]