Subject: [bug#38720] [PATCH] system: linux-container: Recommend guix container

From: Efraim Flashner <[email-masked]>
Date: Sun, 5 Jan 2020 20:27:29 +0200

On Mon, Dec 30, 2019 at 11:05:02PM +0100, Ludovic Courtès wrote:
> Hi!
> 
> Efraim Flashner <[email-masked]> skribis:
> 
> > I've been using guix containers on foreign systems to bring some Guixy
> > goodness to the unwashed sysadmins out there. When the container starts
> > up it displays a message like "Run 'sudo nsenter -a -t 65698' to get a
> > shell into it." Sometimes when I try to do that I'll get an error
> > message back about the system's nsenter not knowing about the '-a' flag.
> > I have found that using a 'guix container' command works well for me.
> 
> Oh.  I was conservative and thought that people would rather use
> “standard” tools.
> 
> > From f2cd59c9eb756e243a5a01e6cd3a6a6e58a02be6 Mon Sep 17 00:00:00 2001
> > From: Efraim Flashner <[email-masked]>
> > Date: Mon, 23 Dec 2019 16:05:04 +0200
> > Subject: [PATCH] system: linux-container: Recommend guix container.
> >
> > * gnu/system/linux-container.scm (container-script)[script]: Recommend
> > using 'guix container' to get a shell inside the running container.
> 
> [...]
> 
> > -              ;; XXX: Should we recommend 'guix container exec'?  It's more
> > -              ;; verbose and doesn't bring much.
> > -              (info (G_ "Run 'sudo nsenter -a -t ~a' to get a shell into it.~%")
> > +              (info (G_ "Run 'sudo guix container exec ~a /run/current-system/profile/bin/bash --login' to get a shell into it.~%")
> >                      pid)
> 
> The comment is still correct: “guix container exec” is more verbose.
> :-)

I can update the comment :)

> Should we change it so that “guix container exec PID” without additional
> arguments runs /bin/sh by default, or something like that?

I've never really used docker, but I'm pretty sure when you enter a
docker container you also need to give it the path to a binary you want
to run.

I've thought about it a bit and now it displays this:

(ins)efraim@E5400 ~/workspace/guix$ sudo /gnu/store/7l5qdb0lw4bbghd17cam8pzdaz86zd3l-run-container
system container is running as PID 13663
Run 'sudo guix container exec 13663 /run/current-system/profile/bin/bash --login'
or run 'sudo nsenter -a -t 13663' to get a shell into it.

making '/gnu/store/8rrwm6wdyzl5i4g38va29azxki412nkr-system' the current system...
setting up setuid programs in '/run/setuid-programs'...
populating /etc from /gnu/store/lvxrcy913ga9g4sg549kk06krb8bbq6m-etc...

I think I like it like this with both options.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
From 1e85542ad6de76f761a366ba8d83f61b63789384 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <[email-masked]>
Date: Mon, 23 Dec 2019 16:05:04 +0200
Subject: [PATCH] system: linux-container: Recommend guix container.

* gnu/system/linux-container.scm (container-script)[script]: Recommend
using 'guix container' to get a shell inside the running container.
---
 gnu/system/linux-container.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 2ab679ff3f..c8807398b3 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 David Thompson <[email-masked]>
 ;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <[email-masked]>
 ;;; Copyright © 2019 Arun Isaac <[email-masked]>
+;;; Copyright © 2020 Efraim Flashner <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -194,11 +195,13 @@ that will be shared with the host system."
             (define (explain pid)
               ;; XXX: We can't quite call 'bindtextdomain' so there's actually
               ;; no i18n.
+              ;; XXX: Should we really give both options? 'guix container exec'
+              ;; is a more verbose command.  Hard to fail to enter the container
+              ;; when we list two options.
               (info (G_ "system container is running as PID ~a~%") pid)
-              ;; XXX: Should we recommend 'guix container exec'?  It's more
-              ;; verbose and doesn't bring much.
-              (info (G_ "Run 'sudo nsenter -a -t ~a' to get a shell into it.~%")
+              (info (G_ "Run 'sudo guix container exec ~a /run/current-system/profile/bin/bash --login'\n")
                     pid)
+              (info (G_ "or run 'sudo nsenter -a -t ~a' to get a shell into it.~%") pid)
               (newline (guix-warning-port)))
 
             (call-with-container file-systems
-- 
2.24.1