SSH 服务部署 + Docker(指定版本)完整安装 的一体化操作流程

SSH 服务部署 + Docker(指定版本)完整安装 的一体化操作流程(适配 Ubuntu 24.04,全程权限 / 兼容性优化,可直接复制批量执行):

核心说明

  • 整合 SSH 安装、Docker 指定版本(28.0.0)+ docker-compose-plugin(2.32.1)安装
  • 适配 Ubuntu 24.04(Noble),自动兼容系统架构(x86/arm)
  • 每步带日志输出,便于排查问题
bash 复制代码
#!/bin/bash
set -e  # 遇到错误立即退出,避免后续无效操作

# ==============================================
# 阶段1:基础环境准备 & SSH服务部署
# ==============================================
echo -e "\033[32m===== 阶段1:基础环境准备 & SSH服务部署 =====\033[0m"

# 步骤1:查询系统版本(确认系统类型/版本,适配Docker源)
echo -e "\n===== 1.1 查询系统版本 ====="
lsb_release -a 2>/dev/null || cat /etc/os-release
UBUNTU_CODENAME=$(lsb_release -cs 2>/dev/null || grep VERSION_CODENAME /etc/os-release | cut -d= -f2)
echo "当前Ubuntu版本代号:${UBUNTU_CODENAME}"

# 步骤1.2:更新系统软件源(确保包最新)
echo -e "\n===== 1.2 更新软件源 ====="
sudo apt update -y

# 步骤1.3:安装net-tools(兼容netstat端口查询)
echo -e "\n===== 1.3 安装net-tools工具包 ====="
sudo apt install net-tools -y

# 步骤1.4:安装OpenSSH服务端
echo -e "\n===== 1.4 安装OpenSSH服务端 ====="
sudo apt install openssh-server -y

# 步骤1.5:启动SSH服务 + 设置开机自启
echo -e "\n===== 1.5 启动并设置SSH开机自启 ====="
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh --no-pager

# 步骤1.6:验证SSH端口监听(双工具验证)
echo -e "\n===== 1.6 验证SSH端口监听 ====="
sudo ss -tnlp | grep ssh
sudo netstat -tnlp | grep ssh
ss -tuln | grep -E '22|ssh'

# 步骤1.7:防火墙放行SSH端口(关键)
echo -e "\n===== 1.7 防火墙放行SSH 22端口 ====="
sudo ufw status 2>/dev/null || echo "ufw未安装,跳过放行"
sudo ufw allow 22/tcp 2>/dev/null
sudo ufw reload 2>/dev/null

# 步骤1.8:SSH最终验证
echo -e "\n===== 1.8 SSH最终验证 ====="
echo "SSH服务状态:$(sudo systemctl is-active ssh)"
echo "SSH开机自启:$(sudo systemctl is-enabled ssh)"
echo "SSH监听端口:$(sudo ss -tnlp | grep ssh | awk '{print $4}')"

# ==============================================
# 阶段2:Docker(指定版本)+ docker-compose-plugin 安装
# ==============================================
echo -e "\n\n\033[32m===== 阶段2:Docker指定版本安装 =====\033[0m"

# 步骤2.1:安装Docker依赖包
echo -e "\n===== 2.1 安装Docker依赖 ====="
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 步骤2.2:添加Docker官方GPG密钥(适配新版APT密钥存储)
echo -e "\n===== 2.2 添加Docker GPG密钥 ====="
sudo mkdir -p /etc/apt/trusted.gpg.d
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg

# 步骤2.3:添加Docker APT源(适配当前Ubuntu版本)
echo -e "\n===== 2.3 添加Docker APT源 ====="
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://download.docker.com/linux/ubuntu ${UBUNTU_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 步骤2.4:更新APT缓存(使Docker源生效)
echo -e "\n===== 2.4 更新APT缓存 ====="
sudo apt-get update -y

# 步骤2.5:列出可安装的Docker版本(确认目标版本存在)
echo -e "\n===== 2.5 列出可安装的Docker CE版本 ====="
apt-cache madison docker-ce | grep 28.0.0

# 步骤2.6:安装指定版本Docker(28.0.0-1~ubuntu.24.04~noble)
echo -e "\n===== 2.6 安装Docker 28.0.0 ====="
DOCKER_VERSION="5:28.0.0-1~ubuntu.24.04~noble"
sudo apt-get install -y \
  docker-ce=${DOCKER_VERSION} \
  docker-ce-cli=${DOCKER_VERSION} \
  containerd.io

# 步骤2.7:设置Docker开机自启并启动服务
echo -e "\n===== 2.7 配置Docker服务 ====="
sudo systemctl enable docker
sudo systemctl enable containerd
sudo systemctl start docker
sudo systemctl status docker --no-pager

# 步骤2.8:列出可安装的docker-compose-plugin版本
echo -e "\n===== 2.8 列出可安装的docker-compose-plugin版本 ====="
apt-cache madison docker-compose-plugin | grep 2.32.1

# 步骤2.9:安装指定版本docker-compose-plugin(2.32.1)
echo -e "\n===== 2.9 安装docker-compose-plugin 2.32.1 ====="
COMPOSE_VERSION="2.32.1-1~ubuntu.24.04~noble"
sudo apt install -y docker-compose-plugin=${COMPOSE_VERSION}

# ==============================================
# 阶段3:最终验证(SSH + Docker)
# ==============================================
echo -e "\n\n\033[32m===== 阶段3:最终验证 =====\033[0m"

# SSH验证
echo -e "\n【SSH验证】"
echo "SSH服务状态:$(sudo systemctl is-active ssh)"
echo "SSH监听端口:$(sudo ss -tnlp | grep ssh | awk '{print $4}')"

# Docker验证
echo -e "\n【Docker验证】"
docker --version
docker compose version
sudo systemctl is-active docker
sudo systemctl is-enabled docker

# 最终提示
echo -e "\n\033[32m✅ 全部操作完成!\033[0m"
echo -e "1. SSH远程连接:ssh 用户名@服务器IP(默认端口22)"
echo -e "2. Docker验证命令:docker run --rm hello-world"
echo -e "3. Docker Compose使用:docker compose up -d"
相关推荐
xyz5999 分钟前
如何在 WSL 中删除指定版本的 Ubuntu 以及安装
linux·运维·ubuntu
linux修理工16 分钟前
Claude code与CC-switch安装使用
运维·人工智能
小叶lr19 分钟前
jenkins打包前端样式丢失/与本地不一致问题
运维·前端·jenkins
Agent产品评测局23 分钟前
互联网行业自动化平台选型,运营全流程提效指南:2026企业级智能体架构与实战全解析
运维·人工智能·ai·chatgpt·架构·自动化
亚空间仓鼠37 分钟前
OpenEuler系统常用服务(五)
linux·运维·服务器·网络
minji...2 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
the sun342 小时前
从 QEMU 直接启动到 U-Boot 引导:嵌入式 Linux 启动流程的本质差异
linux·运维·服务器
三思守心2 小时前
从 0 到 1 搭建自动化内容工厂:深度测评楼兰AI及其在全平台发帖中的表现
运维·服务器·自动化
草莓熊Lotso2 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·linux·运维·服务器·数据库·c++·mysql
ZKNOW甄知科技2 小时前
数智同行:甄知科技2026年Q1季度回顾
运维·服务器·人工智能·科技·程序人生·安全·自动化