本地搭建CentOS 7+Docker环境并使用XShell管理
一篇覆盖虚拟化、容器化与远程运维的动手指南阅读本文大约需要15分钟完成后你将拥有一套完整的本地Linux开发环境。一、为什么还需要自己搭环境云服务器便宜按量付费的ECS一小时几分钱。但云服务器有天然短板依赖公网延迟、磁盘IO被邻居挤占、内网隔离测试不方便。Docker Desktop for Windows乍看省事实则Hyper-V与VMware互斥、WSL2的内存泄漏问题常年未修。本地跑一套VMwareCentOS 7虚拟机网络可控、快照秒级恢复训练和测试的效率远超云上。这篇教程给出了一条可复现的路径从VMware创建虚拟机、CentOS 7系统初始化、Docker CE安装到XShell远程管理每一步附带可执行的命令和踩坑记录。二、环境准备三个必要组件2.1 VMware WorkstationVMware Workstation 17 Pro 已于2024年5月对个人用户免费开放直接从 Broadcom 官网下载。Windows端安装过程为标准的下一步操作注意取消勾选加入VMware客户体验改善计划即可。安装完成后打开虚拟网络编辑器编辑 → 虚拟网络编辑器确认VMnet8NAT模式的网段。默认通常是192.168.x.0/24本文假设为192.168.80.0/24。如果计划让虚拟机对外暴露服务如搭建Web演示环境可以额外配置桥接模式让虚拟机获得与宿主机同网段的IP。2.2 CentOS 7 镜像CentOS 7 已于2024年6月30日进入EOLEnd of Life上游不再发布安全更新。那么为什么仍然推荐CentOS 7而非CentOS Stream 9或Rocky Linux维度CentOS 7CentOS Stream 9Rocky Linux 9生态兼容性仍有大量企业生产环境在线教程和第三方仓库最丰富滚动更新yum仓库偶有断裂与RHEL 9 1:1二进制兼容资源占用最小安装512MB内存可跑建议2GB以上建议2GB以上包版本Docker CE官方仓库支持到最后一个7.x版本持续更新持续更新学习曲线入门友好资料最多偏离传统CentOS体验接近传统CentOS适合场景学习、本地开发、Docker宿主预研RHEL新特性生产环境替代CentOS 7结论若目标是学习Linux基础操作和搭建Docker实验环境CentOS 7的资料丰富度和低资源占用仍然是不可替代的优势。EOL不是报废——本地隔离的虚拟机不存在暴露面安全风险可控。如果部署面向公网的服务选择Rocky Linux 9。镜像获取CentOS官方已下线7.x的ISO推荐从阿里云开源镜像站或清华TUNA镜像站下载CentOS-7-x86_64-Minimal-2009.iso。2.3 XShellXShell 7 个人/教育版免费从NetSarang官网下载即可。下文使用XShell配合VMware的NAT网络实现SSH连接。PuTTY、MobaXterm、Windows Terminal的SSH客户端均可替代但XShell的会话管理、多标签和rz/sz文件传输是比竞品更完整的体验。三、创建虚拟机七个关键配置打开VMware文件 → 新建虚拟机 → 典型推荐。按以下顺序操作第1步选择镜像。选择稍后安装操作系统可以跳过简易安装的干扰确保分区和软件包完全由自己控制。后续再挂载CentOS 7的ISO。第2步客户机操作系统。选择Linux → CentOS 7 64位。这一步告诉VMware使用哪个虚拟硬件兼容性级别。第3步命名与位置。虚拟机名称填CentOS7-Docker位置选择一个非系统盘的目录虚拟磁盘写入量大放在SSD上性能更好但注意容量。第4步磁盘容量。分配40GB。选择将虚拟磁盘存储为单个文件性能优于拆分为多个文件。如果硬盘空间充裕建议50GB——Docker镜像和容器积累起来速度比预期快得多。第5步自定义硬件。创建完成后不要立刻启动右键虚拟机 → 设置。以下是关键调整内存2GB4GB更佳Docker运行多个容器时2GB会触发OOM Killer处理器2核勾选虚拟化Intel VT-x/EPT或AMD-V/RVI嵌套虚拟化Docker依赖此特性网络适配器NAT模式默认。NAT模式下虚拟机通过宿主机IP访问外网宿主机可通过端口转发访问虚拟机服务对开发最友好CD/DVD挂载下载好的CentOS-7-x86_64-Minimal-2009.iso第6步VMware网络模式对比。理解三种模式对后续XShell连接至关重要网络模式虚拟机与外网宿主机与虚拟机其他物理机IP分配适用场景桥接Bridged直接通信等同于局域网一台独立设备直接通信直接通信DHCP或静态与宿主机同网段对外提供Web服务、与团队共享虚拟机NAT通过宿主机NAT转发可通信宿主机通过VMnet8的IP访问不可直接访问DHCP192.168.x.0/24静态需手动配置本地开发、Docker实验仅主机Host-Only不可上网可通信不可通信DHCP或静态独立网段内网渗透实验、隔离网络测试本教程使用NAT模式。NAT对初学者最友好虚拟机自动获得192.168.x.0/24段IP可访问外网宿主机SSH到192.168.x.128默认网关后的第一个DHCP地址即可连接。四、安装CentOS 7最小化安装与首次配置启动虚拟机进入安装引导。4.1 安装选项语言选择English避免中文locale带来的终端乱码问题后续可装中文语言包SOFTWARE SELECTION选择 Minimal Install最小化安装无GUI内存占用低至300MBINSTALLATION DESTINATION选中40GB磁盘分区方案选Automatically configure partitioningNETWORK HOST NAME打开以太网开关关键步骤默认是OFF不打开安装后需手动修改ONBOOTyes点击Begin Installation后设置root密码建议包含大小写和数字本地环境不需要太复杂等待安装完成Reboot。4.2 首次登录与基础配置以root登录。执行以下初始化# 1. 更新系统首次更新建议执行修复已知漏洞 yum update -y ​ # 2. 安装基础工具 yum install -y vim wget curl net-tools bash-completion ​ # 3. 关闭SELinux开发环境简化权限管理生产环境请保留 setenforce 0 sed -i s/^SELINUXenforcing$/SELINUXdisabled/ /etc/selinux/config ​ # 4. 关闭防火墙同样仅限开发环境 systemctl stop firewalld systemctl disable firewalld注意第3步和第4步仅适用于隔离的本地开发虚拟机。如果虚拟机暴露在公网或公司内网中应保留防火墙并只开放SSH(22)和Docker API(2375如果需远程管理)端口。4.3 配置静态IPNAT模式DHCP分配的IP可能每次启动变化对XShell连接造成不便。推荐配置固定IP# 查看当前网络接口名称通常是ens33 ip addr编辑网卡配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33修改为以下内容假设VMnet8网段为192.168.80.0/24网关为192.168.80.2TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.80.100 NETMASK255.255.255.0 GATEWAY192.168.80.2 DNS1114.114.114.114 DNS28.8.8.8执行systemctl restart network使配置生效。用ip addr确认IP已变为192.168.80.100ping baidu.com确认DNS和路由正常。踩坑提示如果systemctl restart network后ip addr仍显示旧IP检查虚拟机设置中网络适配器是否处于已连接状态。VMware偶尔在虚拟机重启后断开虚拟网卡。五、安装Docker CE5.1 为什么是Docker CE而非PodmanCentOS 7上可选Docker CE和Podman两种容器方案。Podman是Red Hat主推的无守护进程方案但生态差距显著维度Docker CEPodman守护进程dockerd常驻资源占用约80MB无守护进程按需启动docker-compose完整支持通过podman-compose兼容部分语法不兼容镜像生态Docker Hub全网通用兼容OCI格式但pull体验略差学习资料极其丰富中文资料偏少K8s兼容性原生kubelet默认CRI需CRI-O适配对学习和本地开发场景Docker CE仍然是事实标准。5.2 使用官方仓库安装# 1. 卸载旧版本如果存在 yum remove -y docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine ​ # 2. 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 ​ # 3. 添加Docker官方仓库 yum-config-manager --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo ​ # 4. 安装Docker CE yum install -y docker-ce docker-ce-cli containerd.io ​ # 5. 启动并设置开机自启 systemctl start docker systemctl enable docker ​ # 6. 验证安装 docker version docker run hello-worlddocker run hello-world若能成功拉取并输出欢迎信息Docker安装即告完成。5.3 配置镜像加速Docker Hub在国内的直接拉取速度常年不理想。截至2025年上半年国内的镜像加速器服务经历了多次政策调整部分公共加速器已停止服务或转为受限模式。以下记录几种可行的方案mkdir -p /etc/docker cat /etc/docker/daemon.json EOF { registry-mirrors: [ https://docker.1ms.run, https://docker.xuanyuan.me ], log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF systemctl daemon-reload systemctl restart docker注意镜像加速器地址随时可能变化。如果docker pull速度仍然缓慢可以考虑两个备选方案一是在宿主机上运行HTTP代理并配置Docker使用代理/etc/systemd/system/docker.service.d/http-proxy.conf二是直接使用阿里云容器镜像服务的个人加速地址登录阿里云容器镜像服务控制台即可获取。5.4 允许非root用户运行Docker将常用用户加入docker组避免每次敲sudo# 创建普通用户如果尚未创建 useradd dev passwd dev ​ # 加入docker组 usermod -aG docker dev ​ # 验证需要重新登录或newgrp docker su - dev docker ps六、使用XShell通过SSH连接虚拟机6.1 确认SSH服务状态CentOS 7最小化安装默认包含OpenSSH Server但须确认已启动systemctl status sshd # 如果是inactive systemctl start sshd systemctl enable sshd检查监听端口默认22netstat -tlnp | grep 226.2 XShell新建会话打开XShell新建会话配置项值名称CentOS7-Docker协议SSH主机192.168.80.100你的虚拟机静态IP端口22点击用户身份验证方法选择Password填入用户名root或上面创建的dev。首次连接会弹出主机密钥提示点击接受并保存。连接成功后你会看到熟悉的CentOS命令行提示符。此时可以用docker ps验证Docker守护进程状态。6.3 常见连接失败的排查现象可能原因解决Connection refusedsshd未启动systemctl start sshdConnection timed outIP不通或VMnet8未启用检查VMware虚拟网络编辑器中VMnet8是否启用检查虚拟机IP是否与VMnet8同一网段Permission denied密码错误或SSH不允许root登录检查/etc/ssh/sshd_config中PermitRootLogin yes6.4 SSH免密登录可选# 在Windows的XShell中生成密钥对 # 工具 → 用户密钥管理者 → 生成 → RSA 2048位 → 保存私钥 ​ # 复制公钥到虚拟机 # 在虚拟机中 mkdir -p ~/.ssh chmod 700 ~/.ssh # 将XShell生成的公钥内容粘贴到以下文件 vim ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys在XShell会话属性中用户身份验证方法选择Public Key选择对应的私钥即可免密登录。七、验证与收尾跑一个Nginx测试以下命令组合验证网络、Docker和SSH三者的协同工作# 1. 启动一个Nginx容器映射到虚拟机80端口 docker run -d --name test-nginx -p 80:80 nginx:alpine ​ # 2. 在虚拟机内测试 curl http://localhost ​ # 3. 回到Windows宿主机浏览器访问 http://192.168.80.100 # 应看到Nginx欢迎页 ​ # 4. 停止并删除测试容器 docker stop test-nginx docker rm test-nginx如果curl http://localhost返回Nginx的HTML但宿主机浏览器无法访问排查方向iptables规则iptables -L -n、虚拟机防火墙状态、VMware NAT端口转发设置。八、方案对比四种搭建Linux开发环境的方式很多人会问为什么不用WSL2为什么不用云服务器以下表格给出客观评估方案部署成本网络灵活性资源隔离Docker兼容性适用人群VMware CentOS 7本文方案约30分钟配置NAT/桥接/仅主机三模切换完全隔离原生支持嵌套虚拟化可用需要完整Linux环境、做网络实验、Docker深度用户WSL2 Docker Desktop5分钟仅NAT端口需转发与Windows共享内核Docker Desktop依赖WSL2后端偶发dockerd崩溃轻量Docker使用、VS Code远程开发云服务器ECS/Lightsail按量付费1核2G约0.1元/小时仅公网IP内网需同VPC物理隔离原生支持需公网访问、团队协作、临时测试VirtualBox CentOS 7约25分钟配置与VMware类似但CPU虚拟化性能差约15-20%完全隔离支持但嵌套虚拟化偶有bug追求完全免费开源方案选择本方案的理由VMware的网络模式切换比WSL2灵活一个量级比VirtualBox稳定一个量级比云服务器便宜一个量级。免费、离线、快照秒回——对需要频繁做危险操作rm -rf /、内核编译、Docker网络实验的学习场景这三条就是全部理由。九、总结本文覆盖了从零到拥有一套可用的本地Docker开发环境的完整工作流VMware虚拟机创建 → CentOS 7安装与网络配置 → Docker CE部署与镜像加速 → XShell远程管理。核心在于三点(1)NAT模式下静态IP的配置决定了后续SSH连接的稳定性(2)Docker CE的官方仓库安装避免了EPEL源版本滞后的问题(3)关闭SELinux和防火墙仅限于本地隔离环境任何面向网络的部署都不应照搬。这套环境的实战价值体现在Kubernetes的minikube/k3s实验、Docker Compose多容器编排练习、CTF靶场搭建、以及所有需要在Linux下完成的开发任务都可以在同一台虚拟机上完成快照机制让试错成本归零。本文环境版本VMware Workstation 17 Pro、CentOS-7-x86_64-Minimal-2009、Docker CE 24.x、XShell 7。命令和配置在以上版本中验证通过。

相关新闻