【Linux系统管理】从Shell脚本到容器云:Linux运维学习心得

📅 2026/7/7 9:57:32
【Linux系统管理】从Shell脚本到容器云:Linux运维学习心得
前言《Linux系统管理》是我这学期投入时间最多的课程之一。从最基础的Shell脚本语法一路学到云计算平台搭建和Docker容器化部署14个章节、18份课件完整覆盖了Linux运维从入门到进阶的全链路知识。这篇文章按课程三大模块梳理核心知识点和实验心得每个模块都附上实验中用到的关键命令和踩坑记录。适合正在学Linux运维的同学参考也可以作为入门学习路线的参考指南。实验环境CentOS 7.5 VMware Workstation 阿里云ECS Docker CE文章目录前言一、课程总览二、模块一Shell脚本编程第1~5章2.1 Shell入门与重定向管道2.2 变量、判断与循环三、模块二云计算技术第6~12章3.1 云计算概念与虚拟化基础3.2 主流云平台AWS与OpenStack3.3 公有云实战阿里云ECS LAMP网站部署四、模块三容器技术第13~14章4.1 容器基础Docker核心概念4.2 容器化部署与运维五、总结与学习建议一、课程总览整个课程划分为三个递进模块从会用Linux命令行到能管云平台再到会容器化部署层层递进模块覆盖章节核心内容实验重点Shell脚本编程第1~5章重定向/管道 → 常用命令 → 变量 → 判断 → 循环与分支编写可复用的自动化脚本云计算技术第6~12章虚拟化 → AWS/OpenStack → 私有云 → 公有云ECS/LAMP云主机环境搭建与网站部署容器技术第13~14章容器基础 → 容器应用 → 容器化部署与运维Docker部署完整Web应用三个模块之间的关系可以用下面的图来呈现——Shell是地基云平台是上层建筑容器是现代化的应用交付手段Shell脚本编程地基命令行基本功云计算技术平台虚拟化云服务容器技术交付Docker镜像与编排自动化运维能力学完整门课回头看Shell基础是最值得反复练习的部分。后面无论是SSH到云主机上操作、编写Dockerfile里的RUN指令、还是写自动化运维脚本本质上都是在写Shell命令。前面5章学得越扎实后面越轻松。二、模块一Shell脚本编程第1~5章2.1 Shell入门与重定向管道课程从Shell最基础的概念讲起——Shell是用户与Linux内核之间的翻译官负责把人类输入的命令翻译成内核能理解的系统调用。课程统一使用bash系统中可用的Shell可以通过cat /etc/shells查看常见的有sh、bash、csh、ksh等。第一节课就接触了两个贯穿全课程的核心概念——重定向和管道。这两个操作符是Shell脚本的基石# 重定向控制命令的输入输出流向 ls-loutput.txt# 标准输出覆盖写入文件覆盖追加echo追加一行output.txt# 追加到文件末尾不会覆盖已有内容command21# 将标准错误(2)重定向到标准输出(1)合并输出# 管道把前一个命令的输出作为后一个命令的输入 psaux|grepnginx# 从所有进程中过滤出nginx相关进程cat/etc/passwd|wc-l# 统计Linux系统中有多少用户dmesg|tail-20# 查看最近20条内核启动日志编写第一个Shell脚本的实验步骤虽然只用了三行命令但创建→赋权→执行这个标准流程是后续所有脚本操作的基本模板# ① 用vi编辑器创建脚本文件vifirst.sh# 脚本内容——逐条命令按执行顺序编写cd/boot/pwdls-lhvml*# ② 赋予可执行权限chmod xchmodx first.sh# 验证ls -l first.sh 应该显示 -rwxr-xr-x 权限# ③ 执行脚本——两种常用方式./first.sh# 相对路径执行.表示当前目录shfirst.sh# 用Shell解释器执行不需要x权限也能跑踩坑记录第一次写脚本时写完就./first.sh结果反复报Permission denied。排查了几分钟才发现忘了chmod x。后来养成肌肉记忆写完脚本先ls -l检查权限chmod x一步到位再执行。这个习惯在后面的所有实验里都帮了大忙。2.2 变量、判断与循环第4~5章进入Shell编程的核心地带。变量、判断、循环三个概念让Shell从逐条敲命令进化到写程序自动执行。变量是脚本存储和传递数据的灵魂#!/bin/bash# 变量定义——等号两边绝对不能有空格这是最常见的初学者错误 nameLinuxversion7.5# 引用变量的三种写法各有用途 echo系统:$name, 版本:$version# 双引号中$name会被解析为变量值echo系统: $name# 单引号中$name原样输出不解析echo路径:${name}_home# 花括号明确变量边界防止歧义# 命令替换把命令执行结果赋给变量 current_date$(date%Y-%m-%d)# 推荐使用$()语法file_count$(ls|wc-l)echo今天是$current_date当前目录有$file_count个文件# 位置参数从脚本外部接收参数 echo脚本名称:$0echo第一个参数:$1, 第二个参数:$2echo参数总数:$#echo所有参数列表:$判断语句让脚本有了决策能力。这块学完后就可以写带逻辑判断的运维脚本了#!/bin/bash# if-elif-else 多分支判断 read-p请输入分数(0-100): scoreif[$score-ge90];thenecho优秀elif[$score-ge60];thenecho及格elseecho不及格fi# 常用测试条件速查表 # 数值比较-eq(等于) -ne(不等于) -gt(大于) -lt(小于) -ge() -le()# 文件测试-f(是普通文件) -d(是目录) -r(可读) -w(可写) -x(可执行)# 字符串测试-z(为空) -n(非空) str1 str2(相等) str1 ! str2(不等)# 注意[ ] 内侧必须有空格否则语法报错循环与分支是实现批量操作的核心#!/bin/bash# for循环——遍历列表批量处理 foruserinuser1 user2 user3;douseradd$userecho用户$user创建完成家目录: /home/$userdone# while循环——满足条件时持续执行 count1while[$count-le5];doecho第$count次循环((count))# 计数器自增必须有退出条件否则死循环done# case多分支匹配——比多个if-elif更清晰易读 read-p选择操作(start/stop/restart): actioncase$actioninstart)echo正在启动服务...;;stop)echo正在停止服务...;;restart)echo正在重启服务...;;*)echo无效操作请输入start/stop/restart;;esac核心细节提醒Shell语法中两个最常见的坑——变量赋值nameLinux等号两边不能有空格跟Python/Java完全相反判断语句[ $a -eq $b ]中括号内侧必须有空格。这些细节光看PPT是记不住的必须亲手敲一遍、看到报错信息才能形成条件反射。三、模块二云计算技术第6~12章3.1 云计算概念与虚拟化基础第6~7章建立了云计算的理论框架从虚拟化技术的起源讲起。IBM在20世纪60年代就开发了支持14个虚拟机同时运行的CP-40系统但真正让虚拟化走向大众的是后来的VMware和AWS。虚拟化解决了传统IT的最大痛点一台物理服务器只跑一个应用CPU利用率常年不到20%。通过虚拟化技术一台物理机可以运行数十个虚拟机每个虚拟机独立运行不同的操作系统和应用资源利用率大幅提升。云计算的三种服务模型是课程重点和考试常考点模型全称核心含义代表产品IaaSInfrastructure as a Service提供虚拟化基础设施虚拟机、存储、网络阿里云ECS、AWS EC2PaaSPlatform as a Service提供应用开发和运行平台阿里云ACE、HerokuSaaSSoftware as a Service直接提供成品软件服务Office 365、钉钉学习体会刚开始总觉得IaaS/PaaS/SaaS这些概念很抽象记不住。后来在阿里云上实际租了一台ECS实例SSH连上去自己装软件搭环境才真正理解——IaaS就是给你一台空白虚拟机操作系统往上你全权负责PaaS是你只写代码不用管服务器SaaS是软件直接给你用。3.2 主流云平台AWS与OpenStack第8章介绍了两个代表性的云平台——AWS是公有云标杆OpenStack是私有云标杆两者代表了云计算的两种部署模式。AWS亚马逊云底层存储架构Dynamo采用完全分布式、去中心化设计使用一致性哈希算法实现海量数据的均衡分布和高可用。核心服务包括EC2弹性计算、S3对象存储、RDS关系数据库、Lambda无服务器计算等。AWS是目前全球市场份额最大的云服务商。OpenStack开源私有云相当于在自有数据中心搭建一个迷你AWS。课程重点讲了它的六大核心组件理解这些组件的分工是掌握OpenStack的关键组件功能定位公有云类比Nova计算服务管理虚拟机的创建、调度和销毁AWS EC2Neutron网络服务管理虚拟网络、子网、路由和IPAWS VPCCinder块存储服务为虚拟机提供持久化数据盘AWS EBSSwift对象存储服务存储非结构化数据AWS S3Keystone身份认证服务统一管理用户和权限AWS IAMHorizonWeb管理界面管理员通过浏览器操作所有资源AWS Console第9章进行了OpenStack网络环境配置实验# 编辑NAT模式网卡配置文件vi/etc/sysconfig/network-scripts/ifcfg-ens33# 配置DNS——修改后立刻生效vi/etc/resolv.conf# VMware中设置本地网卡共享到vmnet8虚拟交换机# 验证网络连通ping-c3www.baidu.com3.3 公有云实战阿里云ECS LAMP网站部署第11~12章是整个课程中最贴近实际工作的部分从零开始在公有云上搭建一个完整的Web服务。第11章——云服务租赁在阿里云控制台完成ECS实例的选购选择地域、规格、镜像、网络、设置SSH密钥对、获取公网IP、通过FTP上传网站文件到云主机。阿里云ECS属于典型的IaaS服务优势包括按需付费不用不花钱、弹性伸缩流量高峰自动扩容、分钟级交付。第12章——LAMP网站部署在ECS实例上搭建完整的Web服务栈# LAMP环境搭建完整流程CentOS 7# 第一步安装Apache MariaDB PHP三件套yuminstall-yhttpd mariadb-server php php-mysql# 第二步启动服务并设置开机自启systemctl start httpd systemctl start mariadb systemctlenablehttpd systemctlenablemariadb# 第三步配置防火墙放行Web端口firewall-cmd --add-port80/tcp--permanentfirewall-cmd--reload# 第四步上传网站文件到 /var/www/html/ 目录# 第五步浏览器访问 http://你的ECS公网IP 验证部署结果重要踩坑——双重防火墙在系统里用firewall-cmd放行了80端口但从外网浏览器还是访问不了。排查半天才意识到阿里云控制台还有一个安全组规则也需要放行80端口。公有云的安全模型是云平台安全组 操作系统防火墙两层防护做任何网络配置都要检查这两层是否都放行了。这个经验在后面所有云平台实验中都反复用到。四、模块三容器技术第13~14章4.1 容器基础Docker核心概念第13章是课程最具现代化色彩的部分。容器和虚拟机有本质区别——虚拟机每个实例都跑完整的操作系统内核而容器共享宿主机内核所以启动速度从分钟级变成秒级磁盘和内存占用也大幅降低。课程从Docker的三个核心概念展开镜像Image容器的静态模板类似于虚拟机的ISO镜像。镜像是只读的分层文件系统。容器Container镜像的运行实例。一个镜像可以启动多个容器类比镜像是类容器是实例对象。仓库Registry存储和分发镜像的地方。Docker Hub是最大的公共仓库类似于GitHub存放代码、Registry存放镜像。# Docker基本操作课程实验# 从Docker Hub拉取官方Nginx镜像dockerpull nginx:latest# 后台运行容器-d后台模式 --name自定义名称 -p端口映射(宿主机:容器)dockerrun-d--namemy-nginx-p8080:80 nginx:latest# 查看当前运行的容器dockerps# 进入容器内部Shell环境-it交互模式dockerexec-itmy-nginx /bin/bash# 停止并删除容器dockerstop my-nginxdockerrmmy-nginx4.2 容器化部署与运维第14章是课程的收官之作——用Docker将前面的LAMP应用打包成镜像实现一次构建、到处运行。# Dockerfile将应用环境固化为镜像 # 创建文件名为 Dockerfile 的文件内容如下FROM centos:7 RUN yuminstall-yhttpd php php-mysql COPY ./webapp /var/www/html/ EXPOSE80CMD[httpd,-D,FOREGROUND]# 构建镜像-t指定镜像名和标签最后的.表示当前目录dockerbuild-tmy-webapp:v1.# 运行容器dockerrun-d-p80:80--namewebapp my-webapp:v1# 验证浏览器访问 http://宿主机IP核心感悟学完Shell脚本再回头看Dockerfile会发现RUN后面的每一条指令本质上都是在容器中执行Shell命令。Dockerfile就是把之前手工安装LAMP环境的步骤用脚本化的方式固化下来——之前要SSH到ECS上逐条敲命令现在定义好Dockerfile一行docker build全自动完成这就是容器带来的效率革命。五、总结与学习建议完成整门课程后我把18个章节的核心收获凝练为三点Shell是所有操作的底层语言无论是SSH到云主机上敲命令、编写Dockerfile的RUN指令、还是写自动化运维脚本本质上都是在写Shell。前5章的Shell基础是整个课程的基石建议把常用命令grep、awk、sed、find练到肌肉记忆的程度对整个运维生涯都受益无穷。从虚拟化到容器是运维思维的代际升级虚拟化解决的是硬件资源利用率问题一台机器跑多个系统容器解决的是应用交付效率问题一个应用秒级部署和弹性伸缩。理解了第6章的虚拟化原理再学第13章的Docker就是水到渠成的过程——容器是进程级隔离的轻量虚拟化这句话背后有扎实的理论支撑。云运维的双重防护思维公有云安全组 系统防火墙、镜像仓库权限 容器运行时安全——每一层都有独立的访问控制。做云运维不能只看操作系统层面必须从云平台和虚拟机两个维度同时思考安全问题。推荐的学习资源Linux命令行与Shell脚本编程大全 —— Shell入门必读经典Docker从入门到实践 —— 开源Docker中文教程从安装到编排全覆盖阿里云ECS帮助文档 —— 公有云实战操作指南本地实验环境推荐VMware Workstation CentOS 7.5 Docker CE