
Mac 上使用 docker 真的是太占用资源了,虽然可以限制 虚拟机的资源,但是 docker desktop 占用的内存越来越多 使用 minikube 也有很多限制
所以想干脆 自己弄个虚拟机然后在虚拟机里面安装 docker
目前都是 qemu 的虚拟机
需要下载 xcode 才能编译,现在正在下载中 https://github.com/gyf304/vmcli
<>这个有点 bug ,而且 不能在 image 里面安装 docker https://github.com/containers/krunvm求 一个 轻量的虚拟机
1 QlanQ OP 各位都是怎么在本地 安装 数据库 、 消息队列、redis 的? |
2 ShadowPower 2021-12-30 10:42:05 +08:00 没有,都是基于 Hypervisor.Framework 的 在这之上还有 xhyve 这样的框架 性能一般都非常糟糕 整个 macOS 平台就没有高性能的虚拟化方案 |
3 QlanQ OP 新版本的系统中有 Virtualization.framework ,docker 中有个实验的特性 |
4 kindjeff 2021-12-30 10:50:06 +08:00 看到楼主这贴我突然想到吃灰的服务器可以用来干嘛了 |
5 seanzxx 2021-12-30 11:10:47 +08:00 我使用 colima ,是基于 lima (Linux Machine on Mac) 二次开发 lima 是基于 qemu 开发的,最新版已经能 使用 hypervisor.framework 加速了。 端口映射,文件系统共享之类的功能都有 https://github.com/abiosoft/colima https://github.com/lima-vm/lima |
6 luman 2021-12-30 11:14:48 +08:00 马上 2022 年了,我还手搓万物是不是太落伍了。。。 |
7 libook 2021-12-30 11:18:42 +08:00 Docker Desktop 的 Windows 和 Mac 端巨难用,Bug 还多,而且各种商业化私货,所以我装了个 VirtualBox ,在虚拟机里装个精简的 Linux 跑 Docker daemon ,然后用 DOCKER_HOST 环境变量无缝调用。 你可以去看看 docker-machine 方案,里面用了个精简的镜像。 |
8 guisheng 2021-12-30 11:19:57 +08:00 via iPhone VM 初始化一个虚机 然后存储在 iCloud 中 配套里面齐全只需要安装一个 VM 启动即可。 |
9 TOUJOURSER 2021-12-30 11:25:35 +08:00 https://multipass.run/ 试试这个? |
10 DonaidTrump 2021-12-30 11:39:22 +08:00 via iPhone Mac 的 docker 本来就是在虚拟机里跑的,你自己收到安装虚拟机有什么优势吗? |
11 yuancoder 2021-12-30 12:12:15 +08:00 virtualbox |
12 Maboroshii 2021-12-30 12:16:17 +08:00 virtualbox +1 装了个 ubuntu server |
13 infoscope 2021-12-30 12:18:55 +08:00 via iPhone podman |
14 mxalbert1996 2021-12-30 12:20:36 +08:00 via Android Docker Desktop for Mac 用的 HyperKit 就是用的系统的 Hypervisor.framework ,这个都嫌重的话其他虚拟化方案也不可能更轻了。 |
15 wellsc 2021-12-30 12:22:56 +08:00 远程搞个 docker ,ssh 连上去用 |
16 seanzxx 2021-12-30 12:26:19 +08:00 @mxalbert1996 可能是不喜欢那个用 Electron 开发的控制台 |
17 joesonw 2021-12-30 12:30:03 +08:00 via iPhone 可以用 PD 起一个 Debian ,把 mac 的 docker host 指向 debian 的 docker engine |
18 crysislinux 2021-12-30 12:49:46 +08:00 via Android 所以我在买了 m1 的 mac 后换了个 x86 的软路由方便跑 docker 。 |
19 rophie123 2021-12-30 12:55:51 +08:00 各位都是怎么在本地 安装 数据库 、 消息队列、redis 的? 我都是本机 brew install |
20 Yadomin 2021-12-30 13:00:02 +08:00 |
21 richarddingcn 2021-12-30 13:00:23 +08:00 楼上 +1 本地 brew install 太舒服了 |
22 miao1007 2021-12-30 13:45:10 +08:00 via iPhone vagrant 里启动 virtualbox |
23 pavelpiero 2021-12-30 17:31:21 +08:00 开发环境 当真连个中间件都没有吗 全要 localhost 开发环境有个一台 2c4g 的虚拟机也足够把这些东西全装下拿来开发了吧 |
24 zzw1998 2021-12-30 17:34:12 +08:00 我在另一台电脑上装了个 Ubuntu 专门跑 docker 开发环境 |
25 EvilCult 2021-12-30 22:14:35 +08:00 via iPhone 所以我买了个树莓派……………… 顺带 ipad 也能用 |
26 beginor 2021-12-30 23:55:26 +08:00 via Android 买个云轻量服务器?一年就几十块钱 |
27 fwindcore 2021-12-31 06:55:22 +08:00 via iPhone 没点进来还以为说的是 dock ,我确实不喜欢那个 dock ,放哪都不合适。 |
28 linshenqi 2021-12-31 14:55:28 +08:00 资源占用不知道,耗电是真的。。 |
29 notgoda 2022-01-10 21:28:47 +08:00 via iPhone |
30 QlanQ OP @notgoda 最后用了 vmcli ,运行了一个 ubuntu ,然后在 vm 里面运行的 docker ,主要用的是 minikube |
31 joesonw 2022-01-11 00:23:01 +08:00 via iPhone @notgoda docker cli 其实是一个客户端,通过 docker host 指定的连接和 docker server 通信。这样可以直接在 mac 命令行里执行 docker 命令。 |
32 notgoda 2022-01-11 02:50:15 +08:00 via iPhone @joesonw 谢谢。那 doCker 容器的目录映射还是在 PD 里的 Debian ? PD 里的 Debian 仍是宿主机? 这样等于说 mac docker cli 需要穿过 pd >Debian >docker server. 这是怎么联通的呢?有没有参考的教程学习一下。谢谢 |
33 libook 2022-01-11 10:29:15 +08:00 @notgoda #29 我说的就是在虚拟机里跑 Docker 呀,Docker 需要跑在 Linux 上,Linux 需要跑在虚拟机里,跟你说的是一样的吧。 容器跟虚拟机的概念不一样,虚拟机相当于虚拟出来了一台计算机,跟宿主机是隔离的,各自管理各自占有的资源;容器相当于是在一台宿主机上划分出来一块资源加以保护,实际上还是宿主机来处理和调度资源。比如某容器里的文件,实际上就是存在宿主机的某个目录下面,某容器里的对外开放的网络端口实际上也是在宿主机上开的端口。相关可以去搜一下容器的原理,有很多文章讲得浅显易懂。 计算机 A 上跑虚拟机 B ,虚拟机 B 里跑容器 C ,你可以理解相当于有两台计算机 A 和 B ,B 上跑了 Linux 操作系统+Docker 服务,A 和 B 处于同一个网络中,你可以使用 IP 地址从 A 直接访问到 B 上的容器服务 API ,以及容器内应用程序的网络 API 。 如果需要 A 和 B 之间共享文件,就跟同一网络内两台计算机共享文件一样,基本都是走网络文件传输的协议( FTP 、SFTP 、NFS 、SMB 、SSHFS……),只不过有些虚拟机提供了便捷操作,可以自动地帮你搭建共享。 |
34 QlanQ OP mac 上用虚拟机可以解决 docker for mac 的内存占用问题,但是 vm 创建的时候会限制 cpu ,但 docker for mac 本来就是虚拟机,cpu 原本就有限制 我用 vmcli 创建之后,出现 所有大核都围观的情况,我以为是我设置了 4 核心,刚好 4 个小核分配给了虚拟机,后面我设置了 6 核,还是一样的情况。。。 Mac 跑 docker 就是痛苦 |
35 istomyang 2023-01-26 22:17:17 +08:00 via Android multipass 应该叫这个。PS:我感觉 docker 不应该用于开发环境,先解耦外部依赖,再然后手搓万物。 |