[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#35697] [PATCH 4/8] linux-container: Do not add %CONTAINER-FILE-SYST
From: |
Ludovic Courtès |
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 |
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
- [bug#35697] [PATCH 0/8] Make 'guix system docker-image' readily usable, Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 1/8] system: Export 'operating-system-default-essential-services'., Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 2/8] linux-container: Improve filtering of unnecessary file systems., Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 4/8] linux-container: Do not add %CONTAINER-FILE-SYSTEMS to Docker image OSes.,
Ludovic Courtès <=
- [bug#35697] [PATCH 3/8] services: 'gc-root-service-type' now has a default value., Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 6/8] system: Add 'operating-system-with-gc-roots'., Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 5/8] linux-container: Compute essential services for THIS-OPERATING-SYSTEM., Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 7/8] docker: 'build-docker-image' accepts an optional #:entry-point., Ludovic Courtès, 2019/05/12
- [bug#35697] [PATCH 8/8] vm: 'system-docker-image' provides an entry point., Ludovic Courtès, 2019/05/12
- bug#35697: [PATCH 0/8] Make 'guix system docker-image' readily usable, Ludovic Courtès, 2019/05/15