7/29 New Hyper-V VM + Docker Containers

今天从零起了一台新的 Hyper-V Ubuntu Server VM,并把 MFS 项目的 6 个 Docker 容器全部跑起来。

新建 VM

本来想让 Qwen Code 直接通过管理员 PowerShell 建 VM,但 Qwen 对 Windows Terminal 的适配很差——终端疯狂闪烁、跳动,根本没法用。于是放弃 CLI,直接在 Hyper-V 管理器里手动新建,剩下的配置全部在 VM 里面搞定。

最终 VM 配置:

  • OS: Ubuntu 25.04 Server(Gen2 VM)
  • 用户: jimmyuser1
  • 网络: Default Switch,DHCP 拿到 172.24.97.180
  • 磁盘: 20G VHD,LVM 默认只分配了 10G

Hyper-V 建 Gen2 VM 记得关 Secure Boot,不然 Linux ISO 起不来。

SSH 免密互通

从主 VM(ubuntuserver)推 ed25519 公钥到新 VM,配了 ~/.ssh/config 别名:

1
2
3
4
Host ubsrv
HostName 172.24.97.180
User jimmyuser1
IdentityFile ~/.ssh/id_ed25519

之后直接 ssh ubsrv 就行。

磁盘扩展

Ubuntu Server 的 LVM 默认只给 10G,VG 里还剩 8G 没用。两条命令扩满:

1
2
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

扩到 18G,可用 13G。

Docker 安装 + 镜像加速

1
2
sudo apt-get install -y docker.io docker-compose-v2
sudo usermod -aG docker jimmyuser1

Docker Hub 在国内直连超时,配了镜像加速(和主 VM 一样的源):

1
{"registry-mirrors": ["https://docker.1panel.live", "https://hub.rat.dev"]}

推项目 + 启动容器

rsync 排除 node_modules、env、.git 后只有 37M,几秒传完:

1
2
rsync -az --exclude='node_modules' --exclude='env' --exclude='.git' \
~/repo/mfs/ jimmyuser1@172.24.97.180:~/mfs/

然后分别启动 dev 和 test 两套 compose:

1
2
sudo docker compose -f docker-compose.dev.yml up -d --build
sudo docker compose -f docker-compose.test.yml up -d --build

最终 6 个容器全部运行:

容器 端口 状态
mfs-dev-mysql 3306 healthy
mfs-dev-api 5000 Up
mfs-dev-web 4200 Up
mfs-test-mysql 3307 healthy
mfs-test-api 5001 Up
mfs-test-web 4201 Up

现在的架构

1
2
3
4
5
Windows Host (Hyper-V)
├── ubuntuserver (172.24.103.83) — 主开发 VM, Qwen Code 跑在这里
│ └── Docker: mfs-dev (3 containers)
└── ubsrv (172.24.97.180) — 新 VM
└── Docker: mfs-dev (3) + mfs-test (3)

两台 VM 通过 Default Switch 互通,ssh ubsrv 一键直达。

Janet paused