Jalin's Blog

使用虚拟机 Docker 代替 Mac 原生 Docker

说起 mac 上的 docker,从 3 年前开始用到现在,一直用作为本地开发环境,像接触一些新的框架服务之内也都不会直接在本地安装了,直接跑个 docker,再配合 docker compose 进行管理是再方便不过了,但是对于在 mac 上的种种问题也忍受了它这么长时间,像一些比较严重的,比如占 CPU、占内存、磁盘空间不释放,还有一些各种小问题,到现在的版本也没有很好的解决。 以前用 16G 本的时候,觉得不够用,后面换成 32G 本,还是不够用,现在是能不启的容器就不启了,平常还是会占用 7 8 个 G 的内存,总是位居内存占用榜第一,看着让人很不舒服,之前也尝试过 Docker machine 的方案,已经忘了为何用着不爽,已弃之,这次选择的方案则是通过虚拟机安装 Ubuntu,Mac 上通过 tcp 通信来操作虚拟机上的 docker,达到类似原生的体验。 关于虚拟机的选择 Mac 上的 VirtualBox,VMware Fusion 都还躺着电脑上,且都是最新版本,mac 是最近的 10.15,在给相同配置的情况下安装 ubuntu 16 桌面版,个人感觉 VirtualBox 流畅度是要好于 VMFusion 的,很意外,毕竟一个收费的,一个免费的。 但是最终选择的是 Parallels Desktop,最新的版本的已经到 15 了,我这里使用的是 13 的版本,不是不想升级,只是这公司每年割一波韭菜的速度已经升级不起了。而用 PD 进行测试速度与体验却是好于上面两者的,本来对 VMFusion 期望挺高的,可惜了。 对接 Docker for mac 关于安装就不提了,这里只记录下与 mac 对接的部分,其实这部分也比较简单,比较折腾的是原来的开发环境切换到虚拟机后,怎么保持跟之前一样的体验。 docker 的守护进程 dockerd 跟客户端 docker 通信默认是使用的 socket 文件的方式,同时也提供了 tcp 的方式,需要自己配置,可以参考文档 bind-docker-to-another-host-port-or-a-unix-socket...

Prometheus Python Client 多线程实践

最近为 Pyproxy-Async 项目对接 Prometheus,官方提供的 Python client 对单线程还是比较友好的,但是这个项目中代理维护已经开了很多协程了,为了减轻压力,将 Web 单独开了个进程,在进线程下,Prometheus 提供的 Client 感觉就不是很友好了,已爬完坑来记录下。 引用 Github Prometheus Python Client 地址 | Prometheus 文档 Prometheus 提供的 Client 都提供了四种指标类型,(metric type):Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)、Python Client 还提供了 Info (Key Value)、Enum(枚举),这里就不细讲了, 其实本质上只是对结果的封装,最后返回的都是像下面这样一个字符串 <metric name>{<label name>=<label value>, ...} body 单线程使用 只是在单线程下使用还是比较简单的,这里简单过一下 安装 client pip install prometheus_client 示例代码 ( 来自 Readme from prometheus_client import start_http_server, Summary import random import time # Create a metric to track time spent and requests made....

VirtualBox 绑定固定 IP

最近使用 VirtualBox 遇到了公司路由器网段跟家里不一致,导致配置的 ip 在家里好使,在公司就变了,于是就研究了下怎么固定虚拟机的 ip 不跟着路由器变化,过程比较简单,但是也有些坑,值得记录下。 一般配置虚拟机上网都是使用的桥接的模式,这里牵涉到一点简单的网络知识的概念,简单点理解就是使用桥接模式相当于用一块新的虚拟网卡去连接网络,路由器也会分配一个新的 ip 给这块网卡,这样 在虚拟机里就访问公网,但是连接不同的路由器会导致分配的 ip 会随之变化。 解决方案也比较简单,可以再给虚拟机增加一块网卡,这块网卡使用 Host 模式,Host 模式下只有主机和虚拟机之间能够互相访问,而不能访问互联网,所以如果需要访问公网,就可以在桥接的基础上新增一块网卡,然后就在虚拟机上配置静态 ip 来达到固定 ip 的效果。 有了方案之后可以在 VirtualBox -> 主机网络管理器 中创建一块 Host 网卡,然后在虚拟机设置中 网络 -> 网卡2 启用网络连接,选择 Host-Only 模式,再选择刚刚创建的那个网卡就可以了。 这里补充下,如果不想虚拟机在局域网内被访问到,也是就只允许主机访问虚拟机,可以将网卡一设置为 NAT 模式,NAT 模式下是通过主机的网络来连接公网。如果使用 VirtualBox, 设置中有两个 NAT 模式的选项,第二个 NAT 网络的模式需要在 偏好设置 -> 网络 中新增一个 NAT 网络,再选择这个网络就可以了。 Ubuntu 中配置静态 IP 创建 /etc/netplan/netcfg.yaml 文件,添加下面的内容 network: version: 2 renderer: networkd ethernets: enp0s8: // 名称可以通过 ifconfig 查看, 我这里是 enp0s8 addresses: - 10....

Time Machine 数据恢复历险记

在这之前,Mac 的 TimeMachine 时光机给我留下的尽是完美的印象,正是相信它能完美回滚,我才随意折腾,不过这次又上当了。 第一次事故 就在几个月前,Mac Mojave (10.14) 一出来就升级了,虽然是吃饭的本,想着有备份,就没多想,结果果然是受不了新版的各种 bug,随便吐槽下这次的升级,鉴于最近两年的升级都是不痛不痒,这次升级就是想体验下暗黑模式。升级完就感觉那个字体很不对劲,那个细的啊, 比 windows 的字体还难受, > 最近更新的正式版还是有这个问题的,原因是苹果关闭了子像素抗锯齿,可以通过命令重新启用,但是也并不能完全解决,我用的输入法字体和其他一些地方还是没改过来,也没找到解决文案。 但是我是很难理解苹果为什么要去做这种不讨好的事,虽然不完全理解这个抗锯齿究竟是什么,但是大概意思就是让高分屏显示更好一些?我的 Retina 屏上是真看不出来好在哪里了,倒是糟心的很。 此处应该有图👇 图片左边是 10.14,右边是之前的版本 后面看到有人说这细点挺好看的,我¥@“),我还想说这个暗黑模式挺难看的,还是烂肚子吧🙄 由于还有其他一些难以忍受的 bug,坚持了几天果断选择降回去,鉴于对时光机的信任,格盘开始了漫长了的恢复,结果在一场大雨之后,来的不是长虹,是龙卷风!恢复到一半就恢复失败了 此处无图无真相 鉴于苹果给了我三个温馨的选项,却不告诉我出错的原因,我就只能原谅它再自己猜了。我想应该是这个备份挂了,换了其他几个备份都试了一试,我想这绝对是我磁盘挂了。最令人不舒服的是,恢复是真的慢 ,更没有什么记忆,下次还能接着恢复的功能,我大概 150G 左右的数据,到50G 的时候大概 3 个多小时,试了 4、5 次,基本是被折腾的不醒人事了。 苹果还是很贴心的,在你绝望的时候,告诉你不要怕,我还能在线联网恢复,虽然这个功能在国内基本上是拼人品,船到桥头已经没有路了,只能拼一拼。 但是 在经历了多次失败重试终于下完开始安装的这一刻,苹果再一次温馨的提示我重试一下,就是不告诉我原因,那我猜可能是中间有丢包吧,在重试了几次之后,嗯,可能是人品不行。 无奈,身边又没有别的电脑,只能拿着 U 盘去网吧做个启动盘(这个是可以不用去网吧的,后面会提到)所以就去了网吧。这个网吧也让我懵逼了一会,15 一小时,这可能是假成都。 补图 在这奢侈的网吧花了两小时把镜像下完之后,准备写到 U 盘里,花了三个小时,难以置信,最后还是失败了,便回家,准备明天换网吧。 人们常说,天降大任于斯人也,必先。怀着好奇,晚上回家又尝试在线恢复,果不其然,之前只是 God 开的一个小小的玩笑,这不🌈就出来了 我是安装成功的图👇 接下来就是恢复各种数据,毕竟还要吃饭呢。经历了这一次折腾,聪明的我立即淘了一个新的硬盘,得为下一次折腾做好准备。 第二次事故 最近经历了又一次的恢复失败,以至于让我对 Time Machine 彻底失望了,更有强烈的冲动让我记录下来恢复过程中遇到的一些问题以及我是如何手动从 Time Machine 备份中恢复软件数据,希望能对你有所帮助。 这次是刚升级 Mac Mojave 不久后,想通过 Mac 的 iTunes 安装手机软件的旧版本,但是 iTunes 在 12.7 版本以后去掉了 App Store 的功能,所以经过一番折腾,删除了一些文件,降级到了 12....

开篇

实话说,恍恍惚惚这几年已经是第三次还是第四次再次开始写博客了,细数起来,这几年变化还是挺大的。 第一次打算开始写,还是刚做开发不久,看别人写觉得自己也应该上进点,也得写写。那时也是翻遍了博客系统,没有找到满意的,索性自己写,花了些时间,写的差不多却不了了之了。 第二次也有意思,那时 Vue 刚流行起来。怀着一腔热血,用 Vue 写了个单页应用的博客出来,到部署完了才发现那时搜索引擎还不支持这么先进的东西,无奈只能找各种解决方案,那时就发现了 nuxt,可以在服务端渲染成 html 页面之后再返回给浏览器,后面还专门写了几篇关于 nuxt 的教程,但是毕竟是新玩意,结果隔个几天挂一次,博客没写几篇,也不了了之了。 中间一直想补起来,因为工作了这些年,接触了挺多东西,也走了不少坑,有时忙起来笔记也懒得写,等忙完了有时间了又觉得都用的这么熟了,还写什么笔记,就这样翻来覆去,结果好像也没留下什么,反倒是遗憾多点了。 这次也没有找到理想中博客系统,不知道技术人怎么回事,老想着自己动手一撸就是一个。鉴于以往经验,扼杀了这个可怕的想法,随即用 hexo 搭了一个,先把基本的目的达到,免得又限入这个死循环了。 每次回头看,岁月真是不饶人,一晃已经做开发四年多了,自己也算是钟爱技术的人,却没有留下什么值得自骄的东西,总是想等有时间了,我就怎么怎么,几年过去了,没有改变什么,自己却还在傻傻等时间。而选择现在出发,我想,兴许晚了,兴许也不晚。 最后,以我比较喜欢的一句话结束第一篇吧,祝进步! 我们来到世间,留下一些东西也带走一些东西,我们学习那些好的,批评那些坏的,正视那些该正视的,这是对他们最好的纪念。 ...