戏里戏外

MacOS 上使用 orbstack 管理 Linux 虚拟机

2025-01-16#CentOS#Docker

使用 orbstack 管理 Linux 虚拟机,可以方便的创建、启动、停止、删除 Linux 虚拟机,并且可以方便的进行文件的共享、网络的连接等操作。

虚拟机管理

使用 orbstack 管理虚拟机可以使用 orbctl 命令,也可以使用专门用于管理虚拟机的子命令 orb 命令。

创建虚拟机

以创建 ubuntu 系统的虚拟机为例,更多虚拟机系统可以查看支持的虚拟机发行版列表

orb create ubuntu

orb create ubuntu:22.04 # 指定系统版本
orb create ubuntu:noble # 指定系统版本

orb create ubuntu my-ubuntu # 自定义虚拟机名称

orb create -a arm64 ubuntu # 指定架构
orb create -a amd64 ubuntu # 指定架构

orb create -u ubuntu # 指定用户名(默认当前用户)
orb create -p ubuntu # 指定密码(回车后输入用户密码, sudo 时需要输入指定的密码,默是空密码)

同时可以使用命令别名:orb addorb new 来创建虚拟机。

重命名虚拟机

重命名虚拟机,可以方便的通过虚拟机名来管理虚拟机。

orb rename ubuntu my-ubuntu
  • ubuntu 是虚拟机名
  • my-ubuntu 是新虚拟机名

虚拟机列表

列出所有虚拟机,可以查看虚拟机的运行状态、虚拟机名、版本和架构等信息。

orb list

orb list --running # 仅列出运行中的虚拟机
orb list --quiet # 仅列出停止的虚拟机名

虚拟机信息

查看虚拟机的详细信息,包括虚拟机的ID、名称、状态、发行版、版本和架构。

orb info ubuntu
  • ubuntu 是虚拟机名或者虚拟机ID

虚拟机日志

查看虚拟机的日志,可以查看虚拟机的启动日志、停止日志、错误日志等。

orb logs ubuntu

orb logs ubuntu --all # 所有虚拟机日志
  • ubuntu 是虚拟机名或者虚拟机ID
  • 可以使用别名 logconsole

设为默认虚拟机

设置虚拟机为默认虚拟机,可以方便的管理虚拟机。

orb default ubuntu
  • ubuntu 是设为默认虚拟机的虚拟机名

启动虚拟机

通过下面的命令可以启动虚拟机。

orb start ubuntu

orb start --all # 启动所有虚拟机和容器

停止虚拟机

通过下面的命令可以停止虚拟机。

orb stop ubuntu

orb stop --all # 停止所有虚拟机和容器

重启虚拟机

通过下面的命令可以重启虚拟机。

orb restart ubuntu

orb restart --all # 重启所有虚拟机和容器

删除虚拟机

通过下面的命令可以删除虚拟机。

orb delete ubuntu

orb delete --force # 强制删除而无需确认
orb delete --all # 删除所有虚拟机和容器

SSH

通过 SSH 连接到虚拟机,可以方便的进行文件的传输、网络的连接等操作。

连接虚拟机

从宿主机进入 orbstack 创建的 Linux 虚拟机有多种方式:

  1. 使用 orb 命令进入默认虚拟机

    orb ssh ubuntu
    

    同时还会自动进入到当前虚拟机的目录。

  2. 使用 ssh orb 命令进入指定虚拟机

    ssh orb # 进入默认虚拟机
    
    ssh ubuntu@orb # 指定虚拟机名
    ssh root@ubuntu@orb # 指定用户名和虚拟机名
    
  3. 使用常规的 ssh 命令进入指定虚拟机

    ssh -p 32222 -i ~/.orbstack/ssh/id_ed25519 default@localhost
    

    其中 -p 32222 是虚拟机的端口号,~/.orbstack/ssh/id_ed25519 是虚拟机的私钥,default@localhost 是虚拟机的用户名和主机名。

网络

域名

默认情况 orbstack 会生成一个域名 orb.local,可以通过访问这个域名来查看容器和虚拟机。

对于虚拟机,可以无需设置直接访问 machine-name.orb.local,更多 Docker 容器信息可以查看 容器域名

正在运行的服务

在虚拟机上运行的任何服务器都可以通过 Mac 访问。

例如在虚拟机的端口 8000 上运行 Web 服务器,则可以从 Mac 通过 http://localhost:8000http://machine-name.orb.local:8000 来访问它 :

python3 -m http.server 8000

连接到 Mac 服务

使用 host.orb.internal 主机名连接到在 Mac 上运行的服务器。

例如连接到 Mac 上的 MySQL 服务器:

mysql -h host.orb.internal -u root -p

虚拟机之间的连接

所有虚拟机都连接到同一个网桥,因此可以使用它们的 IP 地址在虚拟机之间进行连接。运行 ip addr 命令查找虚拟机的 IP 地址:

5: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether be:d4:b6:65:f4:aa brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 198.19.249.60/24 metric 100 brd 198.19.249.255 scope global dynamic eth0 // ![code focus]
       valid_lft 163689sec preferred_lft 163689sec // ![code focus]
    inet6 fd07:b51a:cc66:0:bcd4:b6ff:fe65:f4aa/64 scope global mngtmpaddr noprefixroute // ![code focus]
       valid_lft forever preferred_lft forever // ![code focus]
    inet6 fe80::bcd4:b6ff:fe65:f4aa/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

上面示例中虚拟机的主网络接口上有 IPv4 地址 198.19.249.60 和 IPv6 地址 fd07:b51a:cc66:0:bcd4:b6ff:fe65:f4aa

其他命令

文件传输

在虚拟机中使用 mac 命令可以方便的拷贝文件到Mac和从Mac拷贝文件到虚拟机。

  • 从Mac拷贝文件到虚拟机

    mac pull ~/Downloads/test.txt # 拷贝到当前目录
    
    mac pull ~/Downloads/test.txt ~/Desktop/test.txt # 拷贝到指定目录
    
  • 从虚拟机中拷贝文件到Mac

    mac push ~/Downloads/test.txt # 不指定目录则拷贝到用户的家目录下
    
    mac push test.txt ~/Desktop/test.txt # 拷贝到指定目录
    

在Mac中使用 orb 命令可以方便的拷贝文件到虚拟机和从虚拟机拷贝文件到Mac。

  • 从Mac拷贝文件到虚拟机

    orb push ~/Downloads/test.txt # 不指定目录则拷贝到当前目录
    
    orb push ~/Downloads/test.txt ~/test.txt # 拷贝到指定目录
    
  • 从虚拟机中拷贝文件到Mac

    orb pull ~/test.txt # 不指定目录则拷贝到当前目录
    
    orb pull ~/test.txt ~/Desktop/test.txt # 拷贝到指定目录