Browse code

Merge pull request #42109 from AkihiroSuda/rootless-add-context-2010

[20.10 backport] dockerd-rootless-setuptool.sh: create CLI context "rootless"

Tibor Vass authored on 2021/04/08 08:58:09
Showing 1 changed files
... ...
@@ -23,6 +23,7 @@ ERROR() {
23 23
 # constants
24 24
 DOCKERD_ROOTLESS_SH="dockerd-rootless.sh"
25 25
 SYSTEMD_UNIT="docker.service"
26
+CLI_CONTEXT="rootless"
26 27
 
27 28
 # CLI opt: --force
28 29
 OPT_FORCE=""
... ...
@@ -350,6 +351,23 @@ install_nonsystemd() {
350 350
 	echo
351 351
 }
352 352
 
353
+cli_ctx_exists() {
354
+	name="$1"
355
+	"${BIN}/docker" context inspect -f "{{.Name}}" "${name}" > /dev/null 2>&1
356
+}
357
+
358
+cli_ctx_create() {
359
+	name="$1"
360
+	host="$2"
361
+	description="$3"
362
+	"${BIN}/docker" context create "${name}" --docker "host=${host}" --description "${description}" > /dev/null
363
+}
364
+
365
+cli_ctx_rm() {
366
+	name="$1"
367
+	"${BIN}/docker" context rm -f "${name}" > /dev/null
368
+}
369
+
353 370
 # CLI subcommand: "install"
354 371
 cmd_entrypoint_install() {
355 372
 	# requirements are already checked in init()
... ...
@@ -359,6 +377,14 @@ cmd_entrypoint_install() {
359 359
 		install_systemd
360 360
 	fi
361 361
 
362
+	if cli_ctx_exists "${CLI_CONTEXT}"; then
363
+		INFO "CLI context \"${CLI_CONTEXT}\" already exists"
364
+	else
365
+		INFO "Creating CLI context \"${CLI_CONTEXT}\""
366
+		cli_ctx_create "${CLI_CONTEXT}" "unix://${XDG_RUNTIME_DIR}/docker.sock" "Rootless mode"
367
+	fi
368
+
369
+	echo
362 370
 	INFO "Make sure the following environment variables are set (or add them to ~/.bashrc):"
363 371
 	echo
364 372
 	if [ -n "$XDG_RUNTIME_DIR_CREATED" ]; then
... ...
@@ -390,6 +416,11 @@ cmd_entrypoint_uninstall() {
390 390
 		INFO "Uninstalled ${SYSTEMD_UNIT}"
391 391
 	fi
392 392
 
393
+	if cli_ctx_exists "${CLI_CONTEXT}"; then
394
+		cli_ctx_rm "${CLI_CONTEXT}"
395
+		INFO "Deleted CLI context \"${CLI_CONTEXT}\""
396
+	fi
397
+
393 398
 	INFO "This uninstallation tool does NOT remove Docker binaries and data."
394 399
 	INFO "To remove data, run: \`$BIN/rootlesskit rm -rf $HOME/.local/share/docker\`"
395 400
 }