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 2
我使用 colima ,是基于 lima (Linux Machine on Mac) 二次开发
lima 是基于 qemu 开发的,最新版已经能 使用 hypervisor.framework 加速了。 端口映射,文件系统共享之类的功能都有 https://github.com/abiosoft/colima https://github.com/lima-vm/lima |
6
sunjiayao 2021-12-30 11:14:48 +08:00
马上 2022 年了,我还手搓万物是不是太落伍了。。。
|
7
libook 2021-12-30 11:18:42 +08:00 1
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
tulongtou 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 不应该用于开发环境,先解耦外部依赖,再然后手搓万物。
|