使用 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 add
或 orb 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 - 可以使用别名
log
或console
设为默认虚拟机
设置虚拟机为默认虚拟机,可以方便的管理虚拟机。
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 虚拟机有多种方式:
-
使用
orb
命令进入默认虚拟机orb ssh ubuntu
同时还会自动进入到当前虚拟机的目录。
-
使用
ssh orb
命令进入指定虚拟机ssh orb # 进入默认虚拟机 ssh ubuntu@orb # 指定虚拟机名 ssh root@ubuntu@orb # 指定用户名和虚拟机名
-
使用常规的
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:8000
或 http://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 # 拷贝到指定目录