fix(docker): auto-run repair_docker.sh and retry docker start; disable docker if unrecoverable
This commit is contained in:
@@ -123,7 +123,41 @@ install_docker() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
handle_error sudo systemctl enable docker
|
handle_error sudo systemctl enable docker
|
||||||
handle_error sudo systemctl start docker
|
|
||||||
|
# Try to start docker; if starting fails, attempt automated repair and retry.
|
||||||
|
# If still failing after retries, disable Docker for the remainder of the setup
|
||||||
|
# to avoid aborting the whole installation (docker-dependent services will be skipped).
|
||||||
|
local _start_retries=2
|
||||||
|
local _attempt=0
|
||||||
|
local _started=false
|
||||||
|
local _repair_script="${SCRIPT_DIR:-$(pwd)}/scripts/repair_docker.sh"
|
||||||
|
|
||||||
|
while [[ $_attempt -lt $_start_retries ]]; do
|
||||||
|
if sudo systemctl start docker; then
|
||||||
|
_started=true
|
||||||
|
log_success "docker.service started successfully"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
log_warning "docker.service failed to start (attempt $(( _attempt + 1 ))/$_start_retries)"
|
||||||
|
if [[ -x "$_repair_script" ]]; then
|
||||||
|
log_info "Running repair script $_repair_script to fix docker configuration..."
|
||||||
|
sudo bash "$_repair_script" || log_warning "Repair script exited with non-zero status"
|
||||||
|
else
|
||||||
|
log_info "Repair script not found at $_repair_script; attempting local repair via configure_docker_daemon if available"
|
||||||
|
if declare -F configure_docker_daemon >/dev/null 2>&1; then
|
||||||
|
configure_docker_daemon || log_warning "configure_docker_daemon returned non-zero"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
_attempt=$((_attempt + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$_started" != true ]]; then
|
||||||
|
log_error "docker.service failed to start after $_start_retries attempts. Disabling Docker for remainder of setup to continue other tasks."
|
||||||
|
# Prevent subsequent steps from attempting Docker-dependent installs
|
||||||
|
INSTALL_DOCKER=false
|
||||||
|
fi
|
||||||
|
|
||||||
# Configure Docker data directory and optimization
|
# Configure Docker data directory and optimization
|
||||||
if [[ "$DOCKER_DATA_DIR" != "$DEFAULT_DOCKER_DATA_DIR" ]]; then
|
if [[ "$DOCKER_DATA_DIR" != "$DEFAULT_DOCKER_DATA_DIR" ]]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user