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