零基础Linux运维实战:从虚拟机安装到Docker容器部署

发布时间:2026/7/9 19:10:49
零基础Linux运维实战:从虚拟机安装到Docker容器部署 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近在后台收到不少读者的私信想转行或入门运维领域但面对Linux系统、各种命令和容器技术感到无从下手网上资料要么太零散要么直接跳到高级应用缺乏一条从零到一的清晰路径。本文正是为了解决这个问题为你梳理一套真正面向零基础、手把手教学的Linux运维实战教程。从虚拟机安装Linux开始到核心命令、文件系统管理再到当下必备的Docker容器技术每个环节都配有详细的步骤、可复现的代码和避坑指南。无论你是计算机专业学生、希望转行的开发者还是需要提升技能的IT从业者跟着本文一步步操作都能构建起扎实的运维基础并掌握足以应对初级岗位的核心技能。1. Linux运维核心概念与职业前景在开始动手之前我们有必要先理解“Linux运维”究竟是什么以及为什么它如此重要。1.1 什么是Linux与运维Linux是一个开源、免费的操作系统内核。我们常说的“Linux系统”如Ubuntu, CentOS是基于Linux内核加上GNU项目的大量工具软件所组成的完整操作系统。因其高稳定性、高安全性和出色的性能它成为了服务器领域的绝对霸主全球超过90%的公有云实例和绝大多数超级计算机都运行在Linux之上。运维Operations通常指网站、应用或服务的生命周期管理目标是保障系统稳定、高效、安全地运行。工作内容包括但不限于环境部署、配置管理、监控告警、故障排查、性能优化和安全加固。因此Linux运维工程师的核心工作就是在一个以Linux为基础的计算环境中执行上述所有任务。他们需要深入理解Linux系统本身并熟练运用各种工具和自动化技术。1.2 为什么选择Linux运维市场需求巨大且稳定互联网、金融、云计算、物联网等几乎所有技术驱动型行业都需要Linux服务器随之产生了持续且大量的运维岗位需求。技术栈深厚职业天花板高从基础的命令和脚本到自动化Ansible、容器化Docker/K8s、云计算AWS/Aliyun和监控Prometheus技术发展路径清晰不断学习就能获得更高的薪资和职位。入门相对明确相比算法或底层开发运维的入门路径更侧重于实践和工具的使用通过系统性的学习和大量的动手实验可以在较短时间内达到可就业的水平。开源生态丰富几乎你遇到的所有问题都能在开源社区找到成熟的解决方案或工具学习成本低社区支持好。1.3 本教程的学习路径与目标本教程将遵循“理论 - 实践 - 深化”的路径第一阶段基础奠基搭建实验环境熟悉Linux基本操作和文件管理。第二阶段核心技能掌握用户、权限、进程、网络管理和Shell脚本自动化。第三阶段进阶实战引入企业级必备的Docker容器技术实现环境标准化。学完本教程你将能够独立在虚拟机上安装和配置Linux系统。熟练使用数十个核心命令进行日常管理和故障排查。编写简单的Shell脚本完成自动化任务。使用Docker部署和管理常见的应用服务。具备初级Linux运维工程师上岗所需的核心技能。2. 环境准备创建你的第一个Linux实验室“工欲善其事必先利其器”。我们首先需要一个安全、可随意折腾的实验环境。对于新手强烈推荐使用虚拟机它能在你的Windows或Mac电脑中模拟出一台完整的、独立的计算机。2.1 所需软件与镜像虚拟机软件VirtualBox。它免费、开源、跨平台是学习的最佳选择。下载地址访问VirtualBox官网下载对应你主机系统Windows/macOS的安装包。Linux发行版CentOS Stream 8或Ubuntu 22.04 LTS。两者都是企业常用的稳定版本。本文以CentOS Stream 8为例其操作与经典的CentOS 7/RHEL 8高度一致。下载地址访问CentOS官网或国内镜像站如阿里云镜像、清华镜像下载DVD ISO镜像文件约6-8GB。2.2 安装VirtualBox并创建虚拟机安装VirtualBox双击下载的安装包一路“下一步”即可完成安装。新建虚拟机打开VirtualBox点击“新建”。名称MyCentOS(可自定义)类型Linux版本Red Hat (64-bit)(CentOS属于Red Hat系)内存大小建议分配2048 MB (2GB)或以上。硬盘选择“现在创建虚拟硬盘”类型用默认的VDI分配方式选“动态分配”大小建议20 GB以上。配置虚拟机在虚拟机列表中选中MyCentOS点击“设置”。系统 - 处理器分配2个CPU。存储点击“没有盘片”的光驱图标在“分配光驱”右侧的光盘图标处选择“选择磁盘文件”找到你下载的CentOS ISO镜像文件。网络确保“连接方式”为“网络地址转换(NAT)”。这样虚拟机可以上网主机也能访问虚拟机。2.3 安装CentOS操作系统启动虚拟机选中MyCentOS点击“启动”。选择安装媒介启动后会直接进入安装界面选择第一项“Install CentOS Stream 8”。选择语言在语言选择界面选择“中文”-“简体中文”点击“继续”。安装信息摘要这是关键步骤需要配置以下几项安装目的地点击进入在“本地标准磁盘”下你会看到我们分配的20G虚拟硬盘。直接点击左上角“完成”即可系统会自动配置分区。网络和主机名点击进入在右上角将“以太网”开关打开然后点击左下角“完成”。软件选择点击进入对于初学者选择“带GUI的服务器”并勾选右侧的“开发工具”这样既有图形界面方便学习又包含了编译器等开发组件。点击“完成”。开始安装点击右下角“开始安装”。设置ROOT密码和创建用户安装过程中设置ROOT密码超级管理员密码务必牢记且设置复杂一些。同时可以“创建用户”建议创建一个普通用户如ops并勾选“将此用户设为管理员”。等待安装完成然后点击“重启”。重启后接受许可证完成初始设置即可登录系统。恭喜你的第一个Linux实验室已经就绪。建议先使用图形界面熟悉一下但后续学习的核心将在命令行终端中进行。3. Linux命令行基础与核心命令Linux的强大很大程度上源于其高效的命令行界面CLI。打开终端在图形界面中按CtrlAltT或右键桌面选择“打开终端”我们开始探索。3.1 终端与Shell终端(Terminal)一个输入输出命令的界面程序。Shell解释并执行命令的程序。最常见的Shell是Bash。我们输入的命令都由Bash来解析。命令的基本格式命令 [选项] [参数]命令要执行的操作如ls,cd。选项通常以-或--开头用于修改命令的行为如ls -l。参数命令作用的对象如cd /home。3.2 文件与目录管理命令这是使用最频繁的一组命令。# 1. 查看当前所在目录 pwd # 2. 列出目录内容 ls # 列出当前目录下的文件和目录简单列表 ls -l # 以长格式列出显示详细信息权限、所有者、大小、时间 ls -a # 列出所有文件包括隐藏文件以.开头的文件 ls -lh # -h 以人类可读的格式显示文件大小K, M, G常与 -l 合用 # 3. 切换目录 cd /home # 切换到 /home 目录绝对路径 cd .. # 切换到上级目录 cd ~ # 切换到当前用户的家目录如 /home/ops cd - # 切换到上一次所在的目录 # 4. 创建目录 mkdir mydir # 创建名为 mydir 的目录 mkdir -p dir1/dir2/dir3 # -p 参数可以递归创建多级目录 # 5. 创建文件 touch file.txt # 创建一个名为 file.txt 的空文件或更新已有文件的时间戳 # 6. 复制文件或目录 cp file.txt file_backup.txt # 复制文件 cp -r mydir mydir_backup # -r 递归复制目录及其内部所有内容 # 7. 移动或重命名文件/目录 mv file.txt /tmp/ # 将 file.txt 移动到 /tmp 目录 mv oldname.txt newname.txt # 将文件重命名 # 8. 删除文件或目录 rm file.txt # 删除文件系统会询问输入 y 确认 rm -f file.txt # -f 强制删除不询问 rm -rf mydir # -r 递归删除目录-f 强制慎用此命令会直接删除目录及其下所有文件无确认。 # 9. 查看文件内容 cat file.txt # 一次性显示整个文件内容适合小文件 less file.txt # 分页查看文件内容可按上下键滚动按 q 退出 head -n 10 file.txt # 查看文件前10行 tail -n 20 file.txt # 查看文件后20行 tail -f logfile.log # -f 实时追踪文件末尾的新增内容查看日志的神器 # 10. 编辑文件 vi file.txt 或 vim file.txt # 使用vi/vim编辑器需要学习功能强大 nano file.txt # 使用nano编辑器对新手更友好有菜单提示3.3 系统信息与进程管理命令# 1. 查看系统信息 uname -a # 查看内核/操作系统/CPU信息 cat /etc/redhat-release # 查看CentOS系统版本 free -h # 查看内存使用情况-h 人性化显示 df -h # 查看磁盘空间使用情况 top # 动态实时查看系统进程和资源占用类似任务管理器按 q 退出 htop # top的增强版更直观可能需要安装yum install htop -y # 2. 查看和结束进程 ps aux # 查看系统中所有进程的详细信息 ps aux | grep nginx # 配合grep过滤查找包含“nginx”的进程 kill 1234 # 结束PID为1234的进程发送默认的TERM信号允许进程清理后退出 kill -9 1234 # 强制结束PID为1234的进程发送KILL信号立即终止 # 3. 关机与重启 shutdown -h now # 立即关机 shutdown -r now # 立即重启 reboot # 重启 poweroff # 关机3.4 网络相关命令# 1. 查看网络配置 ip addr show # 查看所有网络接口的IP地址信息推荐 ifconfig # 传统命令部分新系统可能未预装 # 2. 测试网络连通性 ping -c 4 www.baidu.com # 向百度发送4个ICMP包测试连通性 curl http://www.example.com # 获取网页内容常用于测试HTTP服务 wget http://example.com/file.tar.gz # 从网络下载文件 # 3. 查看端口监听情况 netstat -tunlp # 查看所有TCP/UDP端口监听状态及对应进程需安装net-tools ss -tunlp # netstat的现代替代品更快更高效3.5 权限管理命令Linux一切皆文件每个文件都有所属用户和权限。用户文件所有者(u)、所属组(g)、其他用户(o)。权限读(r4)、写(w2)、执行(x1)。# 查看文件权限 ls -l file.txt # 输出类似-rw-r--r--. 1 root root 0 Apr 10 15:30 file.txt # 第一部分 -rw-r--r-- 表示权限 # 第一个字符 - 表示普通文件d表示目录l表示链接 # 接下来三组 rw- r-- r-- 分别对应 所有者(u)、所属组(g)、其他用户(o) 的权限 # 修改文件权限数字法 chmod 755 script.sh # 将script.sh权限设置为 rwxr-xr-x (所有者可读可写可执行组和其他可读可执行) # 7421(rwx), 541(r-x) # 修改文件权限符号法 chmod ux script.sh # 给所有者(u)增加执行(x)权限 chmod o-w file.txt # 移除其他用户(o)的写(w)权限 chmod ar file.txt # 给所有用户(a)增加读(r)权限 # 修改文件所有者和所属组 chown ops:ops file.txt # 将file.txt的所有者改为ops所属组也改为ops4. 文件系统、用户与软件包管理4.1 Linux文件系统结构理解标准的目录结构是高效管理的基础。/根目录所有目录的起点。/bin,/usr/bin存放普通用户可用的基本命令。/sbin,/usr/sbin存放系统管理员使用的管理命令。/etc系统配置文件存放目录。如网络配置、服务配置等。/home普通用户的家目录。每个用户在此有一个同名子目录。/root超级管理员root的家目录。/var存放经常变化的文件如日志(/var/log)、邮件、数据库文件。/tmp临时文件目录所有用户都可读写。/opt第三方软件安装目录。/boot系统启动相关的文件如内核、引导程序。/dev设备文件目录。/proc,/sys虚拟文件系统反映系统内核和进程的实时信息。4.2 用户和组管理# 1. 添加用户 useradd opsuser # 创建用户opsuser passwd opsuser # 为opsuser设置密码 # 2. 删除用户 userdel opsuser # 删除用户但保留其家目录 userdel -r opsuser # -r 删除用户的同时删除其家目录和邮件池 # 3. 添加/删除组 groupadd devops # 创建组devops groupdel devops # 删除组需确保组内无用户 # 4. 将用户加入附加组 usermod -aG wheel opsuser # 将opsuser加入到wheel组在CentOS中wheel组通常有sudo权限 # 5. 切换用户 su - opsuser # 切换到opsuser用户并加载其环境变量- 或 -l 参数很重要 exit # 退出当前用户返回上一个用户4.3 软件包管理YUM/DNFCentOS/RHEL系列使用yum或dnf来管理软件包dnf是yum的下一代。# 1. 搜索软件包 yum search nginx dnf search nginx # 2. 安装软件包 yum install nginx -y # -y 自动确认安装 dnf install nginx -y # 3. 更新软件包 yum update # 更新所有已安装的软件包 yum update nginx # 仅更新nginx软件包 # 4. 删除软件包 yum remove nginx -y # 5. 查看已安装的软件包 yum list installed | grep nginx # 6. 清除缓存 yum clean all配置国内镜像源加速默认的国外源速度可能较慢可以替换为阿里云或清华的镜像源。备份原repo文件cp /etc/yum.repos.d/CentOS-Stream-AppStream.repo /etc/yum.repos.d/CentOS-Stream-AppStream.repo.backup编辑repo文件将其中的mirrorlist或baseurl行注释掉并添加国内镜像地址具体URL请查阅对应镜像站帮助文档。5. Shell脚本编程入门Shell脚本是将一系列命令写入一个文件然后批量、自动执行。这是运维自动化的第一步。5.1 创建并执行第一个脚本创建一个新文件vim hello.sh按i进入插入模式输入以下内容#!/bin/bash # 这是一个简单的Shell脚本示例 # 作者YourName # 日期2023-10-27 echo Hello, Linux World! current_time$(date %Y-%m-%d %H:%M:%S) echo 当前时间是$current_time echo 当前用户是$(whoami) echo 当前所在目录是$(pwd)按Esc键然后输入:wq保存并退出vim。为脚本添加执行权限chmod x hello.sh执行脚本./hello.sh # 在当前目录下执行 # 或 /home/ops/hello.sh # 使用绝对路径执行 # 或 bash hello.sh # 使用bash解释器直接执行即使没有执行权限5.2 脚本核心语法变量nameCSDN echo $name echo ${name}_Reader # 使用{}明确变量边界 readonly PI3.14 # 只读变量传递参数脚本内使用$1,$2... 获取执行时传入的参数。# 脚本内容greet.sh echo Hello, $1! # 执行./greet.sh World # 输出Hello, World!条件判断if [ $1 -eq 10 ]; then echo 参数等于10 elif [ $1 -gt 10 ]; then echo 参数大于10 else echo 参数小于10 fi # 判断文件是否存在 if [ -f /etc/passwd ]; then echo 文件存在 fi循环# for循环 for i in {1..5}; do echo Number: $i done # while循环 count1 while [ $count -le 5 ]; do echo Count: $count ((count)) done函数function say_hello() { local name$1 # local定义局部变量 echo Hello, $name! } say_hello Alice6. 高阶实战Docker容器化技术Docker是目前最流行的容器化技术它可以将应用及其依赖打包成一个标准化的单元实现“一次构建处处运行”彻底解决了环境不一致的问题。6.1 Docker核心概念镜像(Image)一个只读的模板包含了运行应用所需的代码、库、环境变量和配置文件。例如nginx:latest镜像。容器(Container)镜像的运行实例。你可以创建、启动、停止、删除容器。容器之间相互隔离。仓库(Registry)存放镜像的地方。Docker官方仓库是Docker Hub。6.2 安装Docker在CentOS上安装Docker# 1. 卸载旧版本如有 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2. 安装必要的依赖包 sudo yum install -y yum-utils # 3. 设置稳定的镜像仓库使用阿里云镜像加速 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4. 安装Docker Engine sudo yum install -y docker-ce docker-ce-cli containerd.io # 5. 启动Docker并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 6. 验证安装 sudo docker version sudo docker run hello-world # 运行测试镜像如果看到欢迎信息说明安装成功 # 7. 可选将当前用户加入docker组避免每次使用sudo sudo usermod -aG docker $USER # 执行后需要**退出当前终端并重新登录**生效6.3 Docker基础命令# 镜像相关 docker images # 列出本地所有镜像 docker search nginx # 从Docker Hub搜索镜像 docker pull nginx:latest # 拉取下载nginx最新版镜像 docker rmi nginx:latest # 删除本地镜像 # 容器相关 docker ps # 列出正在运行的容器 docker ps -a # 列出所有容器包括已停止的 docker run -d -p 80:80 --name mynginx nginx # 运行一个容器 # -d: 后台运行 # -p 80:80: 将宿主机的80端口映射到容器的80端口 # --name mynginx: 为容器指定一个名字 docker stop mynginx # 停止容器 docker start mynginx # 启动已停止的容器 docker restart mynginx # 重启容器 docker rm mynginx # 删除已停止的容器加 -f 可强制删除运行中的容器 docker logs mynginx # 查看容器日志 docker exec -it mynginx /bin/bash # 进入正在运行的容器内部执行命令-it 交互式终端 # 其他实用命令 docker stats # 查看容器资源使用情况CPU、内存等 docker system prune -a # 清理所有未使用的镜像、容器、网络和构建缓存慎用6.4 使用Docker部署一个Web应用Nginx让我们通过一个简单例子感受Docker的便捷。拉取Nginx镜像docker pull nginx运行Nginx容器docker run -d \ --name my-web \ -p 8080:80 \ -v /home/ops/html:/usr/share/nginx/html \ nginx-v /home/ops/html:/usr/share/nginx/html将宿主机的/home/ops/html目录挂载到容器的/usr/share/nginx/html。这样我们可以在宿主机修改网页文件容器内立即生效。验证在宿主机浏览器访问http://localhost:8080你应该能看到Nginx的欢迎页面。自定义首页# 在宿主机创建自定义首页 echo h1Hello from Docker Nginx!/h1 /home/ops/html/index.html刷新浏览器页面内容将变为“Hello from Docker Nginx!”。查看日志docker logs my-web进入容器docker exec -it my-web /bin/bash你可以在容器内部查看文件结构例如ls /usr/share/nginx/html。通过这个例子你无需在宿主机上安装和配置Nginx就拥有了一个完全隔离、可随时销毁和重建的Web服务器环境。这就是Docker的魅力。7. 常见问题与故障排查思路在实际操作中你一定会遇到各种问题。以下是新手常见问题及排查方法。问题现象可能原因排查思路与解决方案虚拟机无法启动1. 虚拟化技术未在BIOS中开启。2. VirtualBox版本与系统不兼容。3. 虚拟机文件损坏。1. 重启电脑进入BIOS开启Intel VT-x/AMD-V。2. 升级VirtualBox到最新版。3. 尝试新建一个虚拟机。Linux安装过程中找不到硬盘虚拟机磁盘控制器类型不匹配。在VirtualBox设置中将存储控制器类型从“SATA”改为“IDE”或反之再重试安装。Command not found1. 命令拼写错误。2. 该命令对应的软件包未安装。1. 仔细检查拼写。2. 使用yum provides */命令名查找是哪个包提供的然后安装它。例如yum install net-tools来安装ifconfig。Permission denied当前用户没有执行该操作读、写、执行的权限。1. 使用ls -l查看文件权限和所有者。2. 如果是自己的文件用chmod增加权限。3. 如果是系统文件或他人文件可能需要使用sudo以root权限执行或联系管理员。sudo: command not found当前用户不在sudoers文件中或未安装sudo。1. 切换到root用户su -输入root密码。2. 安装sudoyum install sudo -y。3. 将用户加入wheel组usermod -aG wheel 用户名。网络不通ping失败1. 虚拟机网络配置错误。2. 宿主机防火墙或安全软件拦截。3. DNS问题。1. 检查虚拟机网络设置是否为NAT或桥接。2. 在虚拟机内执行ip addr查看是否获取到IP。3. 尝试ping 8.8.8.8Google DNS如果能通则是DNS问题检查/etc/resolv.conf文件。Docker命令需要sudo当前用户未加入docker组。执行sudo usermod -aG docker $USER然后务必退出当前终端并重新登录。Docker拉取镜像慢默认从Docker Hub拉取国内速度慢。配置国内镜像加速器。编辑/etc/docker/daemon.json没有则创建添加{registry-mirrors: [https://你的加速器地址.mirror.aliyuncs.com]}然后重启dockersudo systemctl restart docker。端口被占用宿主机上已有程序占用了你想映射的端口如80。1. 使用ss -tunlp | grep :80查看哪个进程占用了80端口。2. 停止该进程或修改Docker run命令中的端口映射如-p 8080:80。通用排查黄金法则看日志系统日志 (/var/log/messages或journalctl)、应用日志、Docker容器日志 (docker logs)。查进程ps aux | grep 关键词tophtop。查网络pingcurlss/netstat。查权限ls -l确认用户和文件权限。简化复现尝试用最小、最干净的步骤复现问题排除其他干扰。善用搜索将错误信息直接复制到搜索引擎大概率能找到解决方案。8. 最佳实践与学习建议掌握基础操作后遵循良好的实践能让你走得更远、更稳。8.1 Linux运维最佳实践权限最小化原则永远不要使用root用户进行日常操作。使用普通用户仅在需要时通过sudo提权。备份备份备份在执行任何可能破坏系统的操作前如删除文件、修改关键配置先备份。可以使用cp命令备份文件对于重要服务器应有完整的备份策略。使用版本控制对于Shell脚本、配置文件如Nginx配置使用Git进行版本管理。这能追踪所有变更并轻松回滚到任何历史版本。善用文档为自己编写的脚本、复杂的配置添加清晰的注释。建立个人或团队的运维知识库。配置标准化使用自动化工具如Ansible来管理和部署服务器配置确保环境一致性。监控与告警对服务器的基础指标CPU、内存、磁盘、网络和应用状态进行监控。学习使用Zabbix,PrometheusGrafana等工具。安全加固定期更新系统yum update -y。修改SSH默认端口禁用root远程登录。配置防火墙firewalld或iptables只开放必要的端口。8.2 持续学习路线图完成本教程只是起点要成为一名合格的运维工程师建议按以下路径深入学习Linux进阶深入理解系统启动流程、服务管理systemd、磁盘管理LVM、计划任务cron、内核参数调优。网络基础掌握TCP/IP协议、HTTP/HTTPS、DNS、负载均衡、VPN等概念。脚本与自动化精通Shell脚本并学习一门更强大的脚本语言如Python用于编写复杂的运维自动化工具。配置管理学习Ansible实现成百上千台服务器的自动化配置和部署。容器编排在Docker基础上学习Kubernetes (K8s)这是管理大规模容器化应用的行业标准。云计算在AWS、阿里云、腾讯云等平台上进行实践学习云原生概念和服务VPC, EC2, S3, RDS等。监控与日志搭建完整的监控告警体系Prometheus, Alertmanager和日志集中分析平台ELK Stack。学习的关键是动手。不要只看不练在你的虚拟机实验室里大胆尝试模拟生产环境搭建各种服务Web服务器、数据库、缓存并故意制造故障去排查。每一次解决问题的过程都是你能力的一次飞跃。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度