Преглед на файлове

Merge pull request #41697 from AkihiroSuda/improve-rootless-setuptool-error

dockerd-rootless-setuptool.sh: show more helpful error messages
Tibor Vass преди 4 години
родител
ревизия
f1b882a603
променени са 1 файла, в които са добавени 20 реда и са изтрити 2 реда
  1. 20 2
      contrib/dockerd-rootless-setuptool.sh

+ 20 - 2
contrib/dockerd-rootless-setuptool.sh

@@ -269,6 +269,16 @@ cmd_entrypoint_check() {
 	INFO "Requirements are satisfied"
 	INFO "Requirements are satisfied"
 }
 }
 
 
+show_systemd_error() {
+	n="20"
+	ERROR "Failed to start ${SYSTEMD_UNIT}. Run \`journalctl -n ${n} --no-pager --user --unit ${SYSTEMD_UNIT}\` to show the error log."
+	ERROR "Before retrying installation, you might need to uninstall the current setup: \`$0 uninstall -f ; ${BIN}/rootlesskit rm -rf ${HOME}/.local/share/docker\`"
+	if journalctl -q -n ${n} --user --unit ${SYSTEMD_UNIT} | grep -qF "/run/xtables.lock: Permission denied"; then
+		ERROR "Failure likely related to https://github.com/moby/moby/issues/41230"
+		ERROR "This may work as a workaround: \`sudo dnf install -y policycoreutils-python-utils && sudo semanage permissive -a iptables_t\`"
+	fi
+}
+
 # install (systemd)
 # install (systemd)
 install_systemd() {
 install_systemd() {
 	mkdir -p "${CFG_DIR}/systemd/user"
 	mkdir -p "${CFG_DIR}/systemd/user"
@@ -307,13 +317,21 @@ install_systemd() {
 		INFO "starting systemd service ${SYSTEMD_UNIT}"
 		INFO "starting systemd service ${SYSTEMD_UNIT}"
 		(
 		(
 			set -x
 			set -x
-			systemctl --user start "${SYSTEMD_UNIT}"
+			if ! systemctl --user start "${SYSTEMD_UNIT}"; then
+				set +x
+				show_systemd_error
+				exit 1
+			fi
 			sleep 3
 			sleep 3
 		)
 		)
 	fi
 	fi
 	(
 	(
 		set -x
 		set -x
-		systemctl --user --no-pager --full status "${SYSTEMD_UNIT}"
+		if ! systemctl --user --no-pager --full status "${SYSTEMD_UNIT}"; then
+			set +x
+			show_systemd_error
+			exit 1
+		fi
 		DOCKER_HOST="unix://$XDG_RUNTIME_DIR/docker.sock" $BIN/docker version
 		DOCKER_HOST="unix://$XDG_RUNTIME_DIR/docker.sock" $BIN/docker version
 		systemctl --user enable "${SYSTEMD_UNIT}"
 		systemctl --user enable "${SYSTEMD_UNIT}"
 	)
 	)