#!/usr/bin/env bash # 在 armv7/arm32 等远程主机上:若 docker info 已成功则跳过安装;否则拉取并执行官方 get.docker.com 脚本后再校验。 # 用法: # ARMV7_SSH='ssh -o BatchMode=yes user@arm-host' ./ansible/tools/armv7-docker-verify-install.sh # ./ansible/tools/armv7-docker-verify-install.sh 'ssh -o BatchMode=yes user@arm-host' # 参考:https://github.com/docker/docker-install (get.docker.com) set -euo pipefail SSH_CMD="${1:-${ARMV7_SSH:-}}" if [[ -z "${SSH_CMD}" ]]; then echo "[ERR] 未指定 SSH:请设置 ARMV7_SSH 或传入参数,例如:ARMV7_SSH='ssh -o BatchMode=yes user@host' $0" >&2 exit 2 fi # shellcheck disable=SC2086 remote() { $SSH_CMD "$@" } echo "[INFO] 探测远程 docker info …" if remote docker info >/dev/null 2>&1; then echo "[OK] docker info 可用,跳过安装(与 docs/01-03 验收一致)" remote docker info echo "[OC] doc_id=01-03 result=verified assertion=docker_info skip_install=1" exit 0 fi echo "[INFO] docker info 不可用,使用官方脚本安装 Docker CE(get.docker.com)…" # 远程 stdin 脚本:root 直接 sh;非 root 用 sudo(需免密或已交互配置) remote bash -s <<'REMOTE_INSTALL' set -euo pipefail curl -fsSL https://get.docker.com -o /tmp/get-docker.sh if [[ "$(id -u)" -eq 0 ]]; then sh /tmp/get-docker.sh else sudo sh /tmp/get-docker.sh fi REMOTE_INSTALL echo "[INFO] 安装后再次校验 docker info …" if ! remote docker info; then echo "[ERR] 安装后 docker info 仍失败" >&2 exit 1 fi echo "[OK] Docker 已就绪" echo "[OC] doc_id=01-03 result=verified assertion=docker_info skip_install=0" exit 0