guix system: 'docker-image' honors '--network'.

* gnu/system/vm.scm (system-docker-image): Add #:shared-network? and
pass it to 'containerized-operating-system'.
(qemu-image):
* guix/scripts/system.scm (system-derivation-for-action): Pass
 #:shared-network? to 'system-docker-image'.
* doc/guix.texi (Invoking guix system): Document it.
This commit is contained in:
Ludovic Courtès 2020-05-07 12:35:35 +02:00
parent 8d65a71e5f
commit d6c43d7bc1
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 18 additions and 8 deletions

View File

@ -27066,6 +27066,10 @@ example, if you intend to build software using Guix inside of the Docker
container, you may need to pass the @option{--privileged} option to
@code{docker create}.
Last, the @code{--network} option applies to @command{guix system
docker-image}: it produces an image where network is supposedly shared
with the host, and thus without services like nscd or NetworkManager.
@item container
Return a script to run the operating system declared in @var{file}
within a container. Containers are a set of lightweight isolation

View File

@ -419,13 +419,17 @@ system."
(define* (system-docker-image os
#:key
(name "guix-docker-image")
(register-closures? (has-guix-service-type? os)))
(register-closures? (has-guix-service-type? os))
shared-network?)
"Build a docker image. OS is the desired <operating-system>. NAME is the
base name to use for the output file. When REGISTER-CLOSURES? is true,
register the closure of OS with Guix in the resulting Docker image. By
default, REGISTER-CLOSURES? is set to true only if a service of type
GUIX-SERVICE-TYPE is present in the services definition of the operating
system."
base name to use for the output file. When SHARED-NETWORK? is true, assume
that the container will share network with the host and thus doesn't need a
DHCP client, nscd, and so on.
When REGISTER-CLOSURES? is true, register the closure of OS with Guix in the
resulting Docker image. By default, REGISTER-CLOSURES? is set to true only if
a service of type GUIX-SERVICE-TYPE is present in the services definition of
the operating system."
(define schema
(and register-closures?
(local-file (search-path %load-path
@ -442,7 +446,9 @@ system."
(let ((os (operating-system-with-gc-roots
(containerized-operating-system os '())
(containerized-operating-system os '()
#:shared-network?
shared-network?)
(list boot-program)))
(name (string-append name ".tar.gz"))
(graph "system-graph"))

View File

@ -700,7 +700,7 @@ checking this by themselves in their 'check' procedure."
(size image-size)
(operating-system os))))
((docker-image)
(system-docker-image os))))
(system-docker-image os #:shared-network? container-shared-network?))))
(define (maybe-suggest-running-guix-pull)
"Suggest running 'guix pull' if this has never been done before."