orbstack 今日遇到的一个 port 的“bug”

1 天前
 YanSeven
我用 Orbstack 带的 docker-compose 在 Mac 上部署了一个 mysql 服务,然后在宿主机上连接,提示我权限问题,

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1698 (28000): Access denied for user 'reserva'@'localhost'

然后这种小问题习惯性丢给 ai ,让 ai 帮我验一下 docker-compose.yml 等等。然后 ai 一通跑没有解决。

然后我自己上手看看,登录到容器里面,mysql 登录没有问题,在宿主机上就是死活登录不上去, 之前用 pg 比较多,然后又去网上搜索 mysql 是不是有什么权限上的“小怪癖”,一通搜索也没有解决。

然后用 lsof 看看端口:

lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
OrbStack 21326 xxxa 119u IPv4 0xc9342167e2def510 0t0 TCP localhost:mysql (LISTEN)
OrbStack 21326 xxxa 122u IPv4 0xf85b3d5e0df3643 0t0 TCP *:mysql (LISTEN)
OrbStack 21326 xxxa 124u IPv6 0x7feccab790ab9cb5 0t0 TCP *:mysql (LISTEN)

然后想起来我在一个 Orbstack 中创建过一个“Machine”,然后登录 Machine 一看,里面果然也跑了一个 mysql 服务。然后我把这个 Machine 中的 mysql 服务停掉。

回到宿主机,使用 mysql 登录,成功登录到 docker 部署的 mysql 服务。

所以总结下来就是说,使用 Orbstack ,在 Machine 中部署了一个监听 3306 的 mysql, 使用 Orbstack 的 docker 部署了一个映射了监听 3306 的 mysql 。

然后在宿主机上登录,直接先连到了 Machine 中的那个 mysql 里面去了,但是我也不知道这玩意儿到底连谁,它的优先级是怎么定的。

这个现象是我没想到的。我一直理解上,“虚拟机”的端口应该是和宿主机”隔离“的吧。不过也是,Orbstack 的 Machine 好像也不能和传统的虚拟机做类比。
662 次点击
所在节点    程序员
2 条回复
Mystery0
23 小时 9 分钟前
前段时间在本地用 orbstack 测试服务,然后本地还有了 kubectl port-forward 将集群里面的服务转发到本地,然后调用接口的时候总感觉不对
实际上就是 orbstack 支持把虚拟机、容器、kubernetes 集群里面的端口直接在当前机器上暴露出来,去设置项里面关掉就行了
https://docs.orbstack.dev/machines/network#running-servers
Mystery0
23 小时 8 分钟前
@Mystery0 For example, if you run a web server on port 8000 in Linux, you can access it from Mac on localhost:8000

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1174355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX