V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JJstyle
V2EX  ›  macOS

离开 docker for mac,体会童年时编程的快乐!

  •  1
     
  •   JJstyle · 2020-04-30 21:10:26 +08:00 · 12360 次点击
    这是一个创建于 1672 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先这是我的 mac 配置:

    最让我难以忍受的就是:!!!

    一个 vue 应用使用yarn run dev热运行起来本来需要大概一分钟,在 docker 运行起来需要 5 分钟

    一个简单的 JWT 登录接口,docker 中需要 2~3 秒,而原来只需要 100ms 左右

    ta 为什么这么慢?原因是挂载文件的同步问题照成的,导致磁盘读写速度慢,在 volumes 上加上cached或者delegated标志能稍微挽回点,RBN,依然让我无法忍受。

    且勿劝楼主换 linux,谢谢。

    其他原因:

    1. 资源消耗过多,最近旁边妹子说你电脑最近咋不响了,我说,我不用 docker 了 ....
    2. docker 并不能完全提供环境独立性,volumes 下的文件系统依然基于宿主机磁盘,所以你会发现,容器内其他目录区分大小写文件名,volumes 共享的目录却不区分 ...

    目前本机开发环境管理:

    1. 使用 homebrew services 管理 apache/php56/php72/redis/es/mysql 等
    2. 使用 supervisor 管理 vue app

    为了怕被 docker 党喷,我发在了 mac 节点

    第 1 条附言  ·  2020-04-30 22:46:52 +08:00
    虽然不能改帖子,但是我能改图片,有意思!
    第 2 条附言  ·  2020-05-01 11:35:08 +08:00
    所以可以看到这是一台老机器,可能新 mac 不会有这么夸张的对比
    63 条回复    2020-07-11 04:14:40 +08:00
    NeoChen
        1
    NeoChen  
       2020-04-30 21:13:07 +08:00 via iPhone   ❤️ 1
    请教一个问题,序列号不打码会有什么后果?
    wangkun025
        2
    wangkun025  
       2020-04-30 21:13:12 +08:00   ❤️ 1
    换 fedora 吧,一起一起。
    JJstyle
        3
    JJstyle  
    OP
       2020-04-30 21:14:52 +08:00
    @NeoChen 不清楚哎,会有啥后果?
    JJstyle
        4
    JJstyle  
    OP
       2020-04-30 21:15:23 +08:00
    @wangkun025 蟹蟹,不换
    NeoChen
        5
    NeoChen  
       2020-04-30 21:16:48 +08:00 via iPhone
    @JJstyle 我看别人打这个截图都打了码,所以好奇
    himself65
        6
    himself65  
       2020-04-30 21:19:52 +08:00 via iPad   ❤️ 2
    JJstyle
        7
    JJstyle  
    OP
       2020-04-30 21:24:32 +08:00
    @NeoChen
    @himself65 多谢提醒,我怎么现在无法编辑也不能 append?一个序列号,不至于被别人搞吧?购买 /维修信息无所谓,买了 4 年基本没处啥幺蛾子
    ila
        8
    ila  
       2020-04-30 21:28:52 +08:00 via Android
    linux 的 docker 才是原生,其他的都是旁门左道
    (ー`´ー)
    miao1007
        9
    miao1007  
       2020-04-30 21:32:23 +08:00 via iPhone
    试试 nomad 跑 raw exec
    9yu
        10
    9yu  
       2020-04-30 21:33:09 +08:00 via Android
    @ila 是的,Docker Desktop 就是不行,必须在虚拟机上跑 docker 才舒服。
    luckyrayyy
        11
    luckyrayyy  
       2020-04-30 21:38:41 +08:00 via iPhone
    吃惊,我的开发环境都在 docker 里面,改天试试对比测试
    9yu
        12
    9yu  
       2020-04-30 21:50:05 +08:00 via Android
    我做了基于 Alpine Linux 的装了 Docker 和 Docker Compose 的 Vagrant 镜像,自己的开发环境在上面,主要是配合 Vagrantfile 修改 IP 和挂载目录异常方便。
    https://github.com/mayocream/alpine-box
    ghui
        13
    ghui  
       2020-04-30 21:50:43 +08:00 via iPhone
    最近在研究在 docker 里编 chromium,有同样的问题
    jamesxu
        14
    jamesxu  
       2020-04-30 21:59:28 +08:00 via iPhone
    都是在服务器上跑的
    Vegetable
        15
    Vegetable  
       2020-04-30 22:02:00 +08:00
    docker 是真的费电...
    zealic
        16
    zealic  
       2020-04-30 22:20:49 +08:00
    老实说,Docker 不是你这么用的。
    Volumes 直接挂载进 docker 的虚拟机自然慢,
    正常的开发模式应该是,本机使用正常的本地环境,nodejs,webpack,vue-cli 都使用 homebrew 安装的版本。

    Docker 仅仅在测试构建镜像、持续集成,发布版本,以及运行发布的版本时需要。
    这是应用开发部分。

    中间件部分如 ,部分轻量级的则可以使用 docker 运行。
    部分较重量级的如 ElasticSearch 则建议部署到单独的机器上。
    qfdk
        17
    qfdk  
       2020-04-30 22:23:40 +08:00 via iPhone
    你姿势不正确吧 同样配置 docker 流畅
    Lonely
        18
    Lonely  
       2020-04-30 22:24:27 +08:00 via iPhone
    推荐在虚拟机里用的 docker,for mac 版不好使。
    xuanbg
        19
    xuanbg  
       2020-04-30 22:27:13 +08:00
    我原先也是用 Docker Desktop,各种难受……忍无可忍就上虚拟机了。Linux 虚拟机上面装 Docker 各种舒服
    JJstyle
        20
    JJstyle  
    OP
       2020-04-30 22:31:34 +08:00
    @zealic 所以最根本的原因是 macOS 不是 linux kernel,我还是相信不少 linux 用户在本地环境使用 docker 的
    tulongtou
        21
    tulongtou  
       2020-04-30 22:32:19 +08:00
    @zealic 老实说,蛮多人把 docker 当作开发环境,本地目录挂载进去的。我也不喜欢这样套娃的方式,还是 brew 安装舒服
    CEBBCAT
        22
    CEBBCAT  
       2020-04-30 22:33:51 +08:00
    Docker Desktop 不也是虚拟机吗?还是我记错了?
    JJstyle
        23
    JJstyle  
    OP
       2020-04-30 22:34:49 +08:00
    @qfdk 真假呀老哥?我一直认为自己已经尽最大智慧去优化了,奈何收效甚微

    @xuanbg 虚拟机对于资源占用如何?我好像还未在我的 mac 上用过虚拟机🤣
    JJstyle
        24
    JJstyle  
    OP
       2020-04-30 22:38:55 +08:00
    @CEBBCAT 是的,但是在虚拟机里跑 docker,和 docker 自己提供虚拟机,似乎不一样
    zst
        25
    zst  
       2020-04-30 22:40:41 +08:00 via Android
    可以去图床把图删了
    insert000
        26
    insert000  
       2020-04-30 22:42:42 +08:00 via iPhone
    我也是 mac,docker desktop 经常启动卡死,也不知道为什么,有很多奇怪问题,然后自己菜也找不到原因,只能重启
    JJstyle
        27
    JJstyle  
    OP
       2020-04-30 22:45:58 +08:00
    @zst 你说的对,我去图床上把图片改了
    JJstyle
        28
    JJstyle  
    OP
       2020-04-30 22:48:01 +08:00
    @insert000 这我到没遇到过
    minbaby
        29
    minbaby  
       2020-04-30 23:01:50 +08:00   ❤️ 1
    https://github.com/docker/for-mac/issues/3677
    mac 版本的 docker,只处于能用的阶段。。。文件读写太差了


    ---------------------------------------------------------------------------
    $ docker run --rm -it -w /pwd alpine time dd if=/dev/zero of=speedtest bs=1024 count=100000
    100000+0 records in
    100000+0 records out
    real 0m 0.37s
    user 0m 0.03s
    sys 0m 0.31s

    ---------------------------------------------------------------------------

    $ docker run --rm -it -v "$(PWD):/pwd:delegated" -w /pwd alpine time dd if=/dev/zero of=speedtest bs=1024 count=100000
    100000+0 records in
    100000+0 records out
    real 0m 31.82s
    user 0m 0.34s
    sys 0m 3.04s

    ---------------------------------------------------------------------------

    $ docker run --rm -it -v "$(PWD):/pwd:cached" -w /pwd alpine time dd if=/dev/zero of=speedtest bs=1024 count=100000
    100000+0 records in
    100000+0 records out
    real 0m 34.16s
    user 0m 0.21s
    sys 0m 3.78s

    ---------------------------------------------------------------------------

    https://github.com/docker/for-mac/issues/3677#issuecomment-604840556

    8sec on a RaspberryPi
    vs
    50sec on a Macbook Pro

    Dump your macbooks and start carrying a RPi.
    xuzhzzz
        30
    xuzhzzz  
       2020-04-30 23:18:38 +08:00
    你公司没有测试服务器? 我手上大大小小十台左右。
    dodo2012
        31
    dodo2012  
       2020-04-30 23:33:46 +08:00
    我现在 docker 就是用来跨平台打包用的。。
    qoras
        32
    qoras  
       2020-04-30 23:39:22 +08:00
    docker 在 mac 上好像很多 bug, 之前试着玩了下, 改了默认内存大小都各种问题
    JJstyle
        33
    JJstyle  
    OP
       2020-05-01 00:25:27 +08:00
    @minbaby 确实是磁盘 IO 问题太大了!
    @xuzhzzz 这个帖子跟测试武器有什么关系
    @qoras 主要是慢,难以忍受
    kljsandjb
        34
    kljsandjb  
       2020-05-01 00:55:56 +08:00 via iPhone
    mac docker 本质还是虚拟机…
    qfdk
        35
    qfdk  
       2020-05-01 02:47:44 +08:00 via iPhone
    docker 我本地跑数据库测试还是可以的的 你要是运行开发环境这样的 docker 不是干这个用的. 找到适合的方法就行最好别乱挂载硬盘过去。免得意外了。别问我怎么知道的...
    garlics
        36
    garlics  
       2020-05-01 08:02:44 +08:00 via Android
    window docker 也很慢
    uTOmOuk3L6sb4MSI
        37
    uTOmOuk3L6sb4MSI  
       2020-05-01 08:31:20 +08:00 via iPhone
    虚拟机占用太大,mac docker 挂载太慢,都有缺点。

    openwrt 编译,虚拟机就能占 40 个 G 以上; docker 挂载磁盘编译速度上不去
    creedowl
        38
    creedowl  
       2020-05-01 08:33:55 +08:00 via Android
    挂载目录的 io 太差了,不挂载的倒还好
    JackyCDK
        39
    JackyCDK  
       2020-05-01 11:27:01 +08:00 via Android
    mac 上 docker 用不了 host 模式是真的难受...不过单纯开发还是可以的,问题是 yarn run dev 这种操作一般不都是直接跑本机的吗...
    JJstyle
        40
    JJstyle  
    OP
       2020-05-01 11:33:54 +08:00
    @JackyCDK 难道是我有强迫症吗,我是要么都用 docker 要么都不用
    charlie21
        41
    charlie21  
       2020-05-01 13:38:28 +08:00
    docker, the new mac.
    dreamtrail
        42
    dreamtrail  
       2020-05-01 13:47:47 +08:00
    我觉得 docker 就是给应用打包的,其他都不好用
    winglight2016
        43
    winglight2016  
       2020-05-01 13:51:21 +08:00
    mac 上 docker 的确很慢,跟 host 性能无关的慢。楼上说得对,docker 仅用于快速部署测试,运行开发环境就太难了。
    v2Geeker
        44
    v2Geeker  
       2020-05-01 16:59:47 +08:00
    更新最新版本,同时不要打开 kubenetes~ 这样就好很多啦。
    xiaolanger
        45
    xiaolanger  
       2020-05-01 17:04:19 +08:00
    太耗资源了,我也放弃了,用了开发机远程
    MengiNo
        46
    MengiNo  
       2020-05-01 17:04:56 +08:00 via Android
    同感,后来搞了一个 1c2g,用 vsc remote 舒服了 ...
    vanishcode
        47
    vanishcode  
       2020-05-01 17:59:47 +08:00
    mac docker 非 docker,是虚拟机里跑 docker XD
    takashiki
        48
    takashiki  
       2020-05-01 19:04:51 +08:00
    目前 vsc remote 或者 win10 wsl2 体验都还不错
    viruser
        49
    viruser  
       2020-05-01 19:09:49 +08:00
    Docker 用了 Linux 的特性,在其他 OS 下不一定会好用。BSD 系应该用自己的 Jail
    xcstream
        50
    xcstream  
       2020-05-01 19:22:04 +08:00
    docker 是给 python java 这种版本复杂的语言提供方便的,node 就不用了
    littlewing
        51
    littlewing  
       2020-05-02 00:33:19 +08:00
    mac 上的 docker 就是装了个 linux 虚拟机,然后在虚拟机上跑 docker,能不慢吗
    hanxiV2EX
        52
    hanxiV2EX  
       2020-05-02 10:20:58 +08:00
    自己装个 docker 虚拟机吧,推荐试试 rancheros
    mritd
        53
    mritd  
       2020-05-02 14:20:09 +08:00 via iPhone
    折腾这么久 docker,说实话我只再运行期使用,用它来开发也不知是怎么玩的
    JackyCDK
        54
    JackyCDK  
       2020-05-03 21:43:07 +08:00 via Android
    @JJstyle 我一般是数据库啥的扔 docker 里面,开发环境在实体机
    leohxj
        55
    leohxj  
       2020-05-04 21:50:30 +08:00
    @9yu 意思 mac 下用 Vagrant 开虚拟机运行 docker, 比 docker for mac 更『快』?
    leohxj
        56
    leohxj  
       2020-05-04 21:57:31 +08:00
    @zealic 那开发环境想要统一环境,用虚拟机?
    llitfkitfk
        57
    llitfkitfk  
       2020-05-05 11:00:13 +08:00
    llitfkitfk
        58
    llitfkitfk  
       2020-05-05 11:01:50 +08:00
    @llitfkitfk 群里聊天时给了一些 docker desktop 的使用建议 不再搬运到这里了
    cz5424
        59
    cz5424  
       2020-05-05 11:54:51 +08:00
    一般开发环境( node 、python,go 之类的)建议抛弃 docker 直接用,毕竟常用而且经常重启加上销毁容器重建耗时。
    juzisang
        60
    juzisang  
       2020-05-06 11:31:00 +08:00
    在用 vscode remote development + 腾讯云服务器,开发,体验还不错...
    我还买了个 NUC,内存加到 32,也是 ssh 到虚拟机开发...
    QlanQ
        61
    QlanQ  
       2020-05-15 10:11:29 +08:00
    电脑配置本来就差,用 docker 一个请求要好几秒,本地开服务 只要几十毫秒,一开始用 docker 只是不想把系统弄乱,后面是在忍不了,本地安装 php redis mariadb 了,早点换吧
    bravist
        62
    bravist  
       2020-05-21 23:40:13 +08:00
    升级了最新的版本的 docker, 简直了


    未升级 2.3.0.2 之前,基于 laradock 安装的项目还可以跑起来,升级后,慢的要死了



    必须要来吐槽下
    594duck
        63
    594duck  
       2020-07-11 04:14:40 +08:00 via iPhone
    @zealic 这就是我一直说的 99%的企业只是把 docker 当成 ci/cd 工具包在用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.