作为从业十年的虚拟化技术专家,我经常需要在本地环境快速搭建测试服务器。VMware Workstation Pro一直是我的主力工具,今天分享从零创建虚拟机到SSH连接、容器部署的全流程,包含大量实战中积累的参数调优技巧和避坑经验。
在物理机上运行虚拟机前,必须合理分配资源。我的经验法则是:
实测案例:在Dell Precision 7760工作站(i9-11950H/64GB RAM)上,同时运行3台4核8GB内存的Ubuntu虚拟机仍能保持流畅操作。
选择镜像:
磁盘配置:
bash复制# 建议的虚拟磁盘配置参数
磁盘大小:40GB(系统盘)+ 独立数据盘
类型:SCSI(兼容性最好)
分配方式:立即分配所有空间(性能提升30%)
文件分割:存储为单个文件(便于迁移)
网络适配器:
对于Linux系统,推荐手动分区方案:
code复制/boot : 1GB (ext4)
swap : 内存大小的1.5倍(32GB以上内存可省略)
/ : 20GB (xfs性能优于ext4)
/var : 10GB (单独分区防止日志爆满)
/home : 剩余空间
安装完成后立即执行:
bash复制# Ubuntu/Debian
sudo apt update && sudo apt install -y \
openssh-server \
net-tools \
vim \
docker.io \
qemu-guest-agent
# CentOS/RHEL
sudo yum install -y \
epel-release \
openssh-server \
vim-enhanced \
docker-ce \
qemu-guest-agent
修改/etc/ssh/sshd_config关键参数:
bash复制Port 22222 # 修改默认端口
PermitRootLogin no
PasswordAuthentication no # 强制密钥登录
MaxAuthTries 3
ClientAliveInterval 300
生成ED25519密钥对(比RSA更安全):
bash复制ssh-keygen -t ed25519 -C "vm_key_$(date +%Y%m%d)"
在~/.ssh/config中添加:
code复制Host vm-server
HostName 192.168.1.100
Port 22222
User devuser
IdentityFile ~/.ssh/vm_ed25519
TCPKeepAlive yes
ServerAliveInterval 60
修改/etc/docker/daemon.json:
json复制{
"data-root": "/data/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
限制容器资源使用:
bash复制docker run -it --cpus=1.5 --memory=2g --memory-swap=2g nginx
| 网络类型 | 特点 | 适用场景 |
|---|---|---|
| bridge(default) | 默认NAT网络 | 单机开发测试 |
| host | 共享主机网络栈 | 高性能需求 |
| macvlan | 直接分配MAC地址 | 需要真实IP的场景 |
| overlay | 多主机容器网络 | Swarm/K8s集群 |
实时查看虚拟机资源占用:
bash复制# 综合监控
htop
# 磁盘IO
iotop -oP
# 网络流量
nload -u M eth0
安装后启用的重要功能:
code复制isolation.tools.copy.disable = "FALSE"
isolation.tools.paste.disable = "FALSE"
症状:SSH突然无法连接
ip a show eth0telnet 192.168.1.100 22222sudo ufw status快速定位大文件:
bash复制# 查找大于100MB的文件
sudo find / -type f -size +100M -exec ls -lh {} \;
# 分析Docker磁盘使用
docker system df -v
定期清理策略:
bash复制# 自动清理无用容器和镜像
docker system prune -f --filter "until=24h"
# 日志轮转配置
sudo logrotate -f /etc/logrotate.conf
创建标准化模板:
bash复制sudo apt clean
sudo rm -rf /tmp/*
sudo cloud-init clean
YYYYMMDD_操作描述(如20240515_before_kernel_update)经过多年实践验证,这套方案在开发测试环境中表现稳定。特别是在Dockerized CI/CD流水线中,VMware虚拟机的快照功能让我们能快速回滚失败的构建环境,相比公有云方案节省了40%以上的测试成本。