mbox

[bug#35697,0/8] Make 'guix system docker-image' readily usable

Message ID 20190512103055.16832-1-ludo@gnu.org
Headers show

Message

Ludovic Courtès May 12, 2019, 10:30 a.m. UTC
Hello Guix,

On current master, ‘guix system docker-image’ produces an image without
an entry point, so one has to carefully follow the “GUIX_NEW_SYSTEM hack”
described in the manual.

Furthermore, due to other issues, the resulting image doesn’t properly
boot because it tries to mount file systems that it cannot mount, such as
/dev/shm and /dev/pts.

These patches fix both issues, such that one can just do ‘docker create’
and ‘docker start’ to get Guix System up and running in the container.
I think that’s a nice improvement.  :-)

We discussed this Friday on IRC and people said that it’s quite unusual
to provide a “full OS” (with PID 1) as a Docker image; instead, people
would rather do one image per (micro)service.  But anyway, that’s
the purpose of ‘guix system docker-image’, and I can imagine it has
use cases too.  For example, it’s a simple way to get Guix set up in
a container, for people who want to perform Guix builds in a container.

Thoughts?

Ludo’.

Ludovic Courtès (8):
  system: Export 'operating-system-default-essential-services'.
  linux-container: Improve filtering of unnecessary file systems.
  services: 'gc-root-service-type' now has a default value.
  linux-container: Do not add %CONTAINER-FILE-SYSTEMS to Docker image
    OSes.
  linux-container: Compute essential services for THIS-OPERATING-SYSTEM.
  system: Add 'operating-system-with-gc-roots'.
  docker: 'build-docker-image' accepts an optional #:entry-point.
  vm: 'system-docker-image' provides an entry point.

 doc/guix.texi                  |  18 +++--
 gnu/services.scm               |   5 +-
 gnu/system.scm                 |  18 ++++-
 gnu/system/linux-container.scm |  30 ++++++---
 gnu/system/vm.scm              |  18 ++++-
 gnu/tests/docker.scm           | 118 ++++++++++++++++++++++++++++++++-
 gnu/tests/install.scm          |  11 ---
 guix/docker.scm                |  15 +++--
 8 files changed, 195 insertions(+), 38 deletions(-)

Comments

Ludovic Courtès May 15, 2019, 2:37 p.m. UTC | #1
Hi,

Ludovic Courtès <ludo@gnu.org> skribis:

> Ludovic Courtès (8):
>   system: Export 'operating-system-default-essential-services'.
>   linux-container: Improve filtering of unnecessary file systems.
>   services: 'gc-root-service-type' now has a default value.
>   linux-container: Do not add %CONTAINER-FILE-SYSTEMS to Docker image
>     OSes.
>   linux-container: Compute essential services for THIS-OPERATING-SYSTEM.
>   system: Add 'operating-system-with-gc-roots'.
>   docker: 'build-docker-image' accepts an optional #:entry-point.
>   vm: 'system-docker-image' provides an entry point.

Pushed!

I had to rebase and adjust to changes made over the last couple of days
in that area of the code.

Feedback welcome!

Ludo’.