From: "Ludovic Courtès" <ludo@gnu.org>
To: 35697@debbugs.gnu.org
Cc: Chris Marusich <cmmarusich@gmail.com>
Subject: [bug#35697] [PATCH 4/8] linux-container: Do not add %CONTAINER-FILE-SYSTEMS to Docker image OSes.
Date: Sun, 12 May 2019 12:37:58 +0200 [thread overview]
Message-ID: <20190512103802.17032-4-ludo@gnu.org> (raw)
In-Reply-To: <20190512103802.17032-1-ludo@gnu.org>
Previously, 'guix system docker-image' would end up providing an OS that
would try to mount all of %CONTAINER-FILE-SYSTEMS as well as /gnu/store,
which is bound to fail in unprivileged Docker.
This patch makes it so that 'guix system container' still gets those
file systems, but 'guix system docker-image' doesn't.
* gnu/system/linux-container.scm (containerized-operating-system): Add
#:extra-file-systems parameter and honor it. Do not import
%STORE-MAPPING.
(container-script): Add %STORE-MAPPING to MAPPINGS and pass
#:extra-file-systems.
---
gnu/system/linux-container.scm | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index ded5f279fe..5adec064f7 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -53,10 +53,12 @@ from OS that are needed on the bare metal and not in a container."
(return `(("locale" ,locale))))))
base))
-(define (containerized-operating-system os mappings)
+(define* (containerized-operating-system os mappings
+ #:key
+ (extra-file-systems '()))
"Return an operating system based on OS for use in a Linux container
environment. MAPPINGS is a list of <file-system-mapping> to realize in the
-containerized OS."
+containerized OS. EXTRA-FILE-SYSTEMS is a list of file systems to add to OS."
(define user-file-systems
(remove (lambda (fs)
(let ((target (file-system-mount-point fs))
@@ -88,15 +90,17 @@ containerized OS."
(memq (service-kind service)
useless-services))
(operating-system-user-services os)))
- (file-systems (append (map mapping->fs (cons %store-mapping mappings))
- %container-file-systems
+ (file-systems (append (map mapping->fs mappings)
+ extra-file-systems
user-file-systems))))
(define* (container-script os #:key (mappings '()))
"Return a derivation of a script that runs OS as a Linux container.
MAPPINGS is a list of <file-system> objects that specify the files/directories
that will be shared with the host system."
- (let* ((os (containerized-operating-system os mappings))
+ (let* ((os (containerized-operating-system
+ os (cons %store-mapping mappings)
+ #:extra-file-systems %container-file-systems))
(file-systems (filter file-system-needed-for-boot?
(operating-system-file-systems os)))
(specs (map file-system->spec file-systems)))
--
2.21.0
next prev parent reply other threads:[~2019-05-12 10:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-12 10:30 [bug#35697] [PATCH 0/8] Make 'guix system docker-image' readily usable Ludovic Courtès
2019-05-12 10:37 ` [bug#35697] [PATCH 1/8] system: Export 'operating-system-default-essential-services' Ludovic Courtès
2019-05-12 10:37 ` [bug#35697] [PATCH 2/8] linux-container: Improve filtering of unnecessary file systems Ludovic Courtès
2019-05-12 10:37 ` [bug#35697] [PATCH 3/8] services: 'gc-root-service-type' now has a default value Ludovic Courtès
2019-05-12 10:37 ` Ludovic Courtès [this message]
2019-05-12 10:37 ` [bug#35697] [PATCH 5/8] linux-container: Compute essential services for THIS-OPERATING-SYSTEM Ludovic Courtès
2019-05-12 10:38 ` [bug#35697] [PATCH 6/8] system: Add 'operating-system-with-gc-roots' Ludovic Courtès
2019-05-12 10:38 ` [bug#35697] [PATCH 7/8] docker: 'build-docker-image' accepts an optional #:entry-point Ludovic Courtès
2019-05-12 10:38 ` [bug#35697] [PATCH 8/8] vm: 'system-docker-image' provides an entry point Ludovic Courtès
2019-05-15 14:37 ` bug#35697: [PATCH 0/8] Make 'guix system docker-image' readily usable Ludovic Courtès
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://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190512103802.17032-4-ludo@gnu.org \
--to=ludo@gnu.org \
--cc=35697@debbugs.gnu.org \
--cc=cmmarusich@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/guix.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).