VMware虚拟机CentOS 7环境搭建与Docker安装配置全攻略 1. 项目概述与核心价值最近在社区和群里经常看到有朋友在问怎么在本地电脑上搭建一个Linux环境来跑Docker。无论是想学习容器技术、做项目开发还是想搭建一个本地的测试环境这都算得上是“第一课”。直接用云服务器当然方便但成本高而且很多调试和实验在本地虚拟机里折腾更自由网断了也不怕。所以今天我就以一个老运维的视角手把手带你走一遍从零创建Linux虚拟机到成功安装Docker的全过程。这个过程我会基于最经典的VMware Workstation Pro和CentOS 7来演示但其中的思路和方法是通用的换用 VirtualBox 或者 Ubuntu、Rocky Linux 等其他发行版也大同小异。为什么是虚拟机加Docker这个组合对于开发者或运维初学者来说这相当于构建了一个高度可控、可复现且与宿主机隔离的“沙盒实验室”。在虚拟机里你可以大胆尝试各种系统配置、软件安装和网络设置玩坏了直接恢复快照丝毫不影响你主力机的稳定。而Docker则是这个实验室里的“标准化集装箱”它能让你快速部署和运行应用避免“在我机器上好好的”这种环境问题。无论是后续学习微服务部署、CI/CD流水线还是单纯想跑个MySQL、Redis服务这个基础环境都是必备的。整个流程我会拆解得非常细从虚拟化软件的安装、Linux镜像的选择与下载到虚拟机的创建、系统初始化配置最后完成Docker引擎的安装与基础验证。我会重点讲解那些容易踩坑的环节比如虚拟化支持是否开启、网络如何配置才能让虚拟机上网、以及如何为Docker配置一个飞快的国内镜像源。只要你跟着步骤走即使之前没接触过Linux和虚拟化也能顺利搞定。2. 环境准备工具与镜像选择工欲善其事必先利其器。在开始动手之前我们需要准备好两样核心的东西虚拟化软件和Linux操作系统镜像。2.1 虚拟化软件选型VMware Workstation Pro市面上主流的桌面虚拟化软件主要有 VMware Workstation Pro或 Player和 Oracle VirtualBox。这里我选择VMware Workstation Pro作为演示平台原因有几个性能与稳定性VMware 在虚拟化性能和与宿主机的集成度如文件拖拽、剪贴板共享方面通常表现更优特别是对于Windows宿主机。网络配置灵活它提供了多种网络模式NAT、桥接、仅主机等对于后续需要模拟复杂网络环境的实验非常友好。快照功能强大可以随时保存虚拟机的完整状态一键恢复这对于学习和测试来说是“后悔药”至关重要。当然VirtualBox 是免费开源的对于预算有限的用户也是绝佳选择。两者的核心操作逻辑相似学会一个另一个也能快速上手。注意安装VMware前请务必进入你电脑的BIOS/UEFI设置确保Intel VT-x 或 AMD-V虚拟化技术已经启用。这是虚拟机运行的硬件基础很多朋友卡在第一步就是因为这个没开。通常在“Advanced”或“Security”设置里可以找到名称可能是“Virtualization Technology”或“SVM Mode”。2.2 Linux发行版选择CentOS 7 vs. 其他Linux发行版众多对于新手我推荐CentOS 7。它源自Red Hat Enterprise Linux (RHEL)以极高的稳定性和长期支持著称在企业服务器领域应用极广相关的文档和社区资源也异常丰富。虽然CentOS 8已转向Stream模式但CentOS 7在其生命周期内截至2024年6月依然是学习服务器技术的可靠选择。如果你追求更前沿的软件包或不同的风格也可以考虑Ubuntu Server LTS用户友好社区活跃软件仓库丰富是另一个绝佳的入门选择。Rocky Linux / AlmaLinux它们是CentOS的“精神续作”旨在完全兼容RHEL是替代CentOS的现代选择。镜像下载请务必从官方或可信的镜像站下载ISO文件。对于CentOS可以去阿里云、网易、清华大学的开源镜像站。例如在阿里云镜像站搜索“CentOS-7-x86_64-DVD-2009.iso”或类似名称的最小化安装镜像。选择“Minimal ISO”即可它只包含最基本的系统更干净需要我们手动安装更多组件这个过程本身也是学习。3. 创建与配置Linux虚拟机有了工具和镜像我们就可以开始“组装”我们的虚拟电脑了。3.1 在VMware中新建虚拟机启动VMware点击“创建新的虚拟机”。选择“典型”配置即可它会帮我们设置好大部分通用选项。安装来源选择“安装程序光盘映像文件(iso)”然后点击“浏览”找到你刚才下载的CentOS 7的ISO文件。命名与位置给你的虚拟机起个名字比如“CentOS7-Docker-Lab”。位置建议放在一个剩余空间较大的非系统盘分区比如D:\VMs\。虚拟机文件会随着使用逐渐增大。磁盘容量指定虚拟硬盘大小。对于学习Docker20-40GB足够。选择“将虚拟磁盘拆分成多个文件”这样迁移和备份会更灵活。自定义硬件关键步骤在完成向导前点击“自定义硬件”。这里有几个重要设置内存至少分配2GB (2048 MB)。如果宿主机内存充足比如16GB以上分配4GB体验会更流畅。处理器分配2个核心。这能保证虚拟机有足够的计算能力。网络适配器模式选择NAT。这是最简单的方式虚拟机会共享宿主机的IP上网就像你家路由器下的另一台设备无需额外配置就能访问外网。其他声卡、打印机等不需要的设备可以直接移除以节省资源。完成硬件设置后点击关闭然后点击“完成”。虚拟机就创建好了但此时它还是一台“空壳”电脑。3.2 安装CentOS 7操作系统现在我们启动这台虚拟电脑并为其安装系统。在VMware库中选中新创建的虚拟机点击“开启此虚拟机”。虚拟机会从我们挂载的ISO镜像启动。进入安装界面后选择“Install CentOS 7”并回车。语言选择建议选择English (United States)这样可以避免后续终端出现中文乱码也便于搜索错误信息。当然选择中文也可以。安装信息摘要这是配置系统的核心页面。DATE TIME点击进入在地图上选择“Asia/Shanghai”确保时间正确。SOFTWARE SELECTION点击进入这是选择安装包组的地方。对于服务器和我们的用途务必选择“Minimal Install”最小化安装。我们不需要图形界面所有操作通过命令行完成这能保证系统最精简、最安全。如果需要图形界面学习可以选择“Server with GUI”但会占用更多资源。INSTALLATION DESTINATION点击进入这是分区设置。直接点击完成即可系统会自动为我们配置分区方案。对于初学者自动分区完全够用。NETWORK HOSTNAME点击进入将右上角的开关从“OFF”拨到“ON”以在安装时就开启网络连接。同时在下方主机名处可以输入一个你喜欢的名字比如docker-host。点击右下角的“Begin Installation”开始安装。在安装过程中设置ROOT 密码并创建一个普通用户可选但推荐。Root密码请设置得复杂一些并牢记。创建普通用户是为了日常使用避免直接使用root权限更安全。安装完成后点击“Reboot”重启。重启后你会看到一个黑色的命令行登录界面恭喜你一个纯净的CentOS 7服务器已经就绪。4. 虚拟机初始配置与网络调优刚安装好的最小化系统非常干净我们需要进行一些基础配置让它用起来更顺手并为安装Docker铺平道路。4.1 系统更新与基础工具安装首先使用root账户登录。输入用户名root和你设置的密码输入时密码不可见。登录后第一件事更新系统到最新状态并安装一些我们后续会频繁使用的工具。# 1. 更新系统所有已安装的包到最新版本 yum update -y # 2. 安装常用的工具包 # vim: 强大的文本编辑器系统自带vi但vim更好用 # wget: 命令行下载工具 # net-tools: 包含ifconfig等网络诊断工具 # bash-completion: 命令自动补全增强 yum install -y vim wget net-tools bash-completion-y参数表示对所有询问自动回答“yes”让安装过程无需手动确认。4.2 配置静态IP地址可选但推荐安装时我们启用了网络但默认是DHCP动态获取IP。对于服务器尤其是我们后续可能要配置端口映射或需要固定IP访问时设置一个静态IP会更方便。这里我们配置一个在NAT网段内的静态IP。查看当前网络配置ip addr你会看到类似ens33或eth0的网络接口名以及一个由DHCP分配的IP地址如 192.168.xxx.xxx。编辑网络配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33请将ens33替换为你实际看到的接口名找到并修改以下几行关键参数BOOTPROTOstatic # 将dhcp改为static ONBOOTyes # 确保是yes开机自启 # 在文件末尾添加以下配置IP地址根据你的VMware NAT网段调整 # 通常VMware NAT的网段是192.168.xxx.0网关是.2广播是.255 IPADDR192.168.137.100 # 你希望设置的静态IP需在网段内且未被占用 NETMASK255.255.255.0 # 子网掩码 GATEWAY192.168.137.2 # 网关地址通常是VMware NAT的网关 DNS1114.114.114.114 # 首选DNS DNS28.8.8.8 # 备用DNS实操心得如何确定GATEWAY和网段在VMware主界面点击“编辑” - “虚拟网络编辑器”选中“VMnet8 (NAT模式)”点击“NAT设置”就能看到网关IP例如192.168.137.2子网IP就是网段例如192.168.137.0。保存退出vim按Esc输入:wq回车。然后重启网络服务systemctl restart network再次使用ip addr和ping www.baidu.com验证IP是否生效以及网络是否通畅。4.3 关闭防火墙与SELinux仅用于学习环境在企业生产环境中防火墙和SELinux是重要的安全组件。但在我们个人的学习测试环境里它们可能会给后续的Docker容器网络访问带来一些不必要的麻烦。为了方便学习我们可以暂时关闭它们。# 1. 停止并禁用防火墙firewalld systemctl stop firewalld systemctl disable firewalld # 2. 临时关闭SELinux重启后失效 setenforce 0 # 3. 永久关闭SELinux需编辑配置文件并重启 # 编辑SELinux配置文件 vim /etc/selinux/config # 找到 SELINUXenforcing 这一行将其改为 SELINUXdisabled # 保存退出。这个修改需要重启系统才能生效。重要提示SELINUXdisabled的修改必须重启虚拟机才能生效。你可以选择现在重启 (reboot)也可以先继续在安装完Docker后再重启。但如果不重启SELinux可能仍处于 enforcing 模式导致一些权限问题。5. Docker引擎安装与配置详解系统基础环境准备好后我们就可以安装今天的主角——Docker了。在Linux上我们安装的是Docker Engine即Docker的守护进程和命令行工具。5.1 使用官方脚本安装Docker CECentOS 7的默认yum仓库里的Docker版本可能很旧。我们采用Docker官方提供的一键安装脚本这是最方便、能获取最新稳定版的方法。下载并运行安装脚本curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh这个脚本会自动检测你的系统添加Docker的官方仓库并完成所有安装步骤。安装完成后启动Docker服务并设置开机自启systemctl start docker systemctl enable docker验证安装是否成功docker version如果看到Client和Server的版本信息说明Docker引擎已经安装并运行起来了。5.2 配置国内镜像加速器默认情况下Docker会从Docker Hub拉取镜像但在国内速度可能很慢。我们需要配置一个国内的镜像加速器比如阿里云、腾讯云、中科大等提供的服务。这里以阿里云镜像加速器为例需要免费注册阿里云账号获取专属地址登录阿里云容器镜像服务控制台在“镜像工具” - “镜像加速器”中你会看到针对不同系统的配置命令。对于CentOS通常是创建一个daemon配置文件。我们直接编辑它vim /etc/docker/daemon.json将以下内容写入该文件请替换https://xxxx.mirror.aliyuncs.com为你从阿里云控制台复制的专属加速器地址{ registry-mirrors: [https://xxxx.mirror.aliyuncs.com] }保存退出后重新加载配置并重启Docker服务systemctl daemon-reload systemctl restart docker运行docker info在输出结果中查找Registry Mirrors如果能看到你配置的地址说明加速器生效了。5.3 Docker基础命令验证与初体验配置好加速器后我们来拉取一个最简单的镜像运行一个容器验证整个环境是否工作正常。# 1. 拉取一个极小的测试镜像hello-world docker pull hello-world # 2. 运行这个镜像它会打印一段欢迎信息然后退出 docker run hello-world # 3. 拉取一个更实用的镜像比如Nginx并以后台模式运行 docker pull nginx:alpine docker run -d -p 8080:80 --name my-nginx nginx:alpine-d后台运行。-p 8080:80将宿主机的8080端口映射到容器的80端口。--name my-nginx给容器起个名字。现在你可以在宿主机你的Windows/Mac的浏览器中访问http://你的虚拟机IP:8080如果没配静态IP用ip addr查到的IP应该能看到Nginx的欢迎页面。这证明你的Docker已经可以正常拉取镜像、创建容器并提供网络服务了。6. 常见问题与深度排查指南即使按照步骤操作你也可能会遇到一些问题。下面我整理了几个最常见的问题及其解决方案。6.1 Docker服务启动失败虚拟化支持问题问题现象在运行systemctl start docker时提示失败。查看状态systemctl status docker错误信息可能包含failed to start daemon: Error initializing network controller: ...或直接提示与虚拟化/内核相关。根本原因这通常是因为宿主机你的物理电脑的BIOS/UEFI中的CPU虚拟化支持Intel VT-x/AMD-V没有开启或者被其他软件如某些安卓模拟器、Hyper-V占用了。解决方案重启进入BIOS/UEFI设置在CPU配置或安全选项中找到“Virtualization Technology”或“SVM Mode”将其设置为Enabled。如果宿主机是Windows 10/11且开启了Hyper-V或Windows Sandbox它们会与VMware冲突。你需要关闭这些功能。打开“控制面板” - “程序” - “启用或关闭Windows功能”。取消勾选Hyper-V、Windows Hypervisor Platform、Windows Sandbox和虚拟机平台。重启电脑。在VMware的虚拟机设置中确保“处理器”选项里勾选了“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”。6.2 网络问题虚拟机无法上网或宿主机无法访问容器问题现象A虚拟机内ping www.baidu.com不通。检查1确认VMware虚拟网络编辑器中的NAT模式VMnet8已启用并且子网IP、网关设置正确。检查2在虚拟机内检查ip addr是否获取到了IP如果是DHCP。如果没有尝试dhclient ens33接口名需替换重新获取。检查3检查宿主机的VMware相关服务如VMware NAT Service、VMware DHCP Service是否正在运行。问题现象B宿主机浏览器无法通过虚拟机IP:8080访问Nginx。检查1首先在虚拟机内部运行curl localhost:80确认Nginx容器本身工作正常。检查2在虚拟机内运行iptables -L -n查看防火墙规则。如果之前没有彻底关闭firewalld可能需要放行端口firewall-cmd --add-port8080/tcp --permanent firewall-cmd --reload。检查3检查Docker容器的端口映射是否正确。运行docker ps查看PORTS列是否为0.0.0.0:8080-80/tcp。检查4最容易被忽略的一点Windows/Mac宿主机的防火墙。请确保宿主机的防火墙允许对虚拟机IP的访问或者临时关闭宿主机的防火墙进行测试。6.3 Docker拉取镜像速度慢或失败问题现象docker pull命令卡住或报错net/http: TLS handshake timeout。解决方案确认镜像加速器配置正确严格按照5.2节操作确保/etc/docker/daemon.json文件格式正确JSON格式严格不能有注释最后一个元素后不能有逗号。重启docker服务后用docker info验证。尝试其他加速器如果某个加速器不稳定可以换一个。在daemon.json的registry-mirrors数组里可以配置多个用逗号隔开。{ registry-mirrors: [ https://hub-mirror.c.163.com, https://mirror.baidubce.com ] }检查DNS在虚拟机内cat /etc/resolv.conf看DNS服务器是否正常如114.114.114.114。可以尝试修改为8.8.8.8或223.5.5.5。6.4 权限问题非root用户运行docker命令问题现象使用创建的普通用户执行docker ps时报错Got permission denied while trying to connect to the Docker daemon socket。原因Docker守护进程默认使用Unix socket通信而该socket文件属于root用户和docker组。普通用户没有权限访问。解决方案将当前用户加入docker组。# 执行以下命令需要root权限可以先su - 切换到root sudo usermod -aG docker $USER # 或者如果你知道用户名比如用户叫 ‘devuser’ sudo usermod -aG docker devuser重要执行此命令后必须完全退出当前会话并重新登录关闭终端重新连接或执行newgrp docker组权限变更才会生效。之后该用户就可以不加sudo直接运行docker命令了这样更安全方便。7. 进阶配置与日常使用建议环境搭建好了最后分享几个能让你的虚拟化开发环境更好用的进阶技巧和日常操作建议。7.1 配置虚拟机共享文件夹我们经常需要在宿主机写代码然后在虚拟机里运行。通过VMware的共享文件夹功能可以轻松实现文件互通。在VMware中先关闭虚拟机。右键虚拟机 - “设置” - “选项”选项卡 - “共享文件夹”。选择“总是启用”然后点击“添加”按照向导选择一个宿主机上的目录比如D:\ShareWithVM作为共享点并给它起个名字比如host_share。启动虚拟机共享文件夹通常会自动挂载到/mnt/hgfs/目录下。你可以通过ls /mnt/hgfs/查看。如果没有可能需要安装VMware ToolsCentOS Minimal默认未安装。7.2 使用快照功能管理实验状态这是虚拟机最大的优势之一。在进行任何有风险的操作如安装新软件、修改核心配置之前先创建一个快照。创建快照在VMware中虚拟机运行时点击“虚拟机” - “快照” - “拍摄快照”。给它起个描述性的名字如“Base with Docker Installed”。恢复快照如果实验搞砸了直接点击“恢复到快照”瞬间回到干净状态。管理快照可以创建多个快照树标记不同的开发阶段。7.3 日常使用命令备忘最后附上一些在这个环境中最高频使用的命令帮你快速上手# 系统相关 hostnamectl set-hostname new-name # 修改主机名需重启或重新登录生效 systemctl start/stop/restart/status service-name # 管理系统服务 yum install/remove/search package-name # 包管理 df -h # 查看磁盘空间 free -h # 查看内存使用 # Docker核心命令 docker images # 列出本地镜像 docker ps -a # 列出所有容器包括已停止的 docker rm -f container-id # 强制删除容器 docker rmi image-id # 删除镜像 docker exec -it container-id /bin/bash # 进入正在运行的容器 docker logs container-id # 查看容器日志 docker-compose up -d # 使用docker-compose编排启动服务需单独安装这个由VMware虚拟机、CentOS 7和Docker组成的“三件套”环境已经成为了我本地开发和测试的标配。它隔离性好复原能力强又能通过Docker快速构建复杂的应用栈。从今天起你可以放心地在里面折腾了无论是学习Linux命令还是部署一整套微服务都有了坚实的舞台。记住遇到问题多查日志journalctl -xe和docker logs善用快照大胆尝试。