[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Creating a docker image with Guix
From: |
Ricardo Wurmus |
Subject: |
Re: Creating a docker image with Guix |
Date: |
Tue, 3 Jan 2017 11:45:59 +0100 |
User-agent: |
mu4e 0.9.16; emacs 25.1.1 |
Ludovic Courtès <address@hidden> writes:
> Ricardo Wurmus <address@hidden> skribis:
>
>> I just played around with Docker and built up a command to create a
>> Docker image for Emacs.
>
> Fun!
>
>> Can anyone find a more elegant way to do this?
>>
>> guix environment --ad-hoc \
>> coreutils bash emacs-no-x-toolkit -- \
>> sh -c 'tar -c $(guix gc --requisites $GUIX_ENVIRONMENT) | \
>> docker import -c "ONBUILD RUN [\"$GUIX_ENVIRONMENT/bin/ln\",
>> \"-s\", \"$GUIX_ENVIRONMENT/bin\", \"/bin\"]" - emacs-base' \
>> && echo -e "FROM emacs-base\nCMD [\"/bin/emacs\"]" | \
>> docker build -
>
> What does the resulting image look like?
It’s very hard to tell because this command doesn’t spit out a file that
fully represents the image. Instead it modifies some state in
/var/lib/docker.
> Would it be enough to generate an “Image JSON Description” in this
> format: <https://github.com/docker/docker/blob/master/image/spec/v1.md>?
No. On Fedora (where I ran the above command) Docker uses the
devicemapper backend. “docker build” appears to have created an XFS
file system in a file. Different installations use different backends
(e.g. direct-lvm or aufs) — this probably means that we should not try
to build an image for a particular backend directly.
However, there is a “docker save” command to export an image as a tar
archive (which can be imported by a docker instance), and the format of
the resulting archive looks pretty simple: It contains a couple of JSON
files and two “layer.tar” archives. The first contains the files of the
base image (i.e. all the /gnu/store stuff), the second contains the
added symlink from “/bin” to “/gnu/store/.../bin” (and “/run/secrets”).
> I’m not familiar enough with Docker but I’m under the impression that we
> should be able to generate an image without even using Docker. :-)
Absolutely! Now that I know about “docker save” I’ll give it another
try.
~~
- Creating a docker image with Guix, Ricardo Wurmus, 2017/01/02
- Re: Creating a docker image with Guix, David Craven, 2017/01/02
- Re: Creating a docker image with Guix, Hartmut Goebel, 2017/01/02
- Re: Creating a docker image with Guix, Pjotr Prins, 2017/01/02
- Re: Creating a docker image with Guix, John Darrington, 2017/01/02
- Re: Creating a docker image with Guix, Ludovic Courtès, 2017/01/02
- Re: [PATCH] Creating a docker image with Guix, Ludovic Courtès, 2017/01/04
- Re: [PATCH] Creating a docker image with Guix, Ricardo Wurmus, 2017/01/05
- Re: [PATCH] Creating a docker image with Guix, Thompson, David, 2017/01/05
- Re: [PATCH] Creating a docker image with Guix, Ludovic Courtès, 2017/01/05
- [PATCH] guix archive: '-f docker' supports package names as arguments., Ludovic Courtès, 2017/01/06
- Re: [PATCH] guix archive: '-f docker' supports package names as arguments., Ricardo Wurmus, 2017/01/07