理解容器镜像层

容器非常了不起。它们允许简单的进程像虚拟机一样运行。这种优雅的背后是一套模式和实践,最终使一切都能正常工作。设计的根源在于。层是存储和分发容器化文件系统内容的基本方式。这种设计既非常简单,同时又非常强大。在今天的文章中,我将解释什么是层,以及它们在概念上是如何工作的。


如何快速学习

人们常说互联网已经实现了教育民主化:人类知识的总和只需要谷歌搜索即可获取!然而,获取信息只是故事的一半;你还需要能够将原始信息转化为可用的技能。

对于我们很多人来说,这两者之间的差距可能会导致类似于 教程地狱 的情况——不断地做一个又一个教程,却从未觉得自己在取得实质性的进展。

学习如何有效地学习是非常重要的,尤其 是作为一名软件开发人员;学习新知识几乎就是整个工作的全部!如果你能快速掌握新语言/框架/工具,你会比一般的开发人员 更高效 。这有点像超级能力。

在这篇博文中,我将分享我关于学习的心得,并展示我如何快速掌握新技能!


从零开始构建容器:层

在 Depot,我们专注于为容器镜像提供最快的构建服务。我们主要通过以下方式实现这一目标:

  1. 提供对强大计算和存储的即时访问。
  2. 优化构建过程本身以使其尽可能快。

我们将 Depot 运行在 AWS 之上,为每个 Depot 项目使用大型 16 核机器。这些机器使用原生 Intel 和 Arm CPU,避免了多平台镜像的仿真。并且我们使用带有 NVMe SSD 的 Ceph 集群为它们提供分布式缓存存储。这一切都使得执行 RUN 语句变得快速,并使缓存查找和写入变得快速。

对于构建过程本身,除了对构建过程进行许多高级优化之外,我们目前正在对构建过程本身进行许多低级优化。

为了更好地理解其中一些优化,了解 OCI 容器镜像层格式本身很有帮助。


使用 Certbot 在内网签发 wildcards(通配符证书)

前置条件

  1. Certbot 和 certbot-dns-cloudflare 插件
  2. 域名的 NS 服务器设置为 CloudFlare, 配置好,大概一天后生效(保守估计)
  3. 内网 DNS 服务器, 如果路由器支持定义局域网域名,可以不安装,我用的是 adguard
  4. 内网 Ubuntu 服务器
  5. Ubuntu 安装 Nginx

使用 Caddy 和 CloudFlare 在内网自动签发 https 证书

前置条件

  1. Caddy 和 dns-cloudflare 插件,需要构建自己的 Docker 镜像
  2. 域名的 NS 服务器设置为 CloudFlare, 配置好,大概一天后生效(保守估计)
  3. 内网 DNS 服务器, 如果路由器支持定义局域网域名,可以不安装,我用的是 adguard
  4. 内网 Ubuntu 服务器
  5. Ubuntu 安装 Docker

你正在错过的最新 Docker BuildKit 功能

随着 BuildKit 的引入,Docker 的构建后端得到了显著改进,并增添了许多强大的新功能。然而,很多用户并不了解这些新功能。因此,本文将向你介绍那些你绝对应该了解并开始使用的 BuildKit 功能,助你更好地利用 Docker。


关于 Git 错误信息的说明

在写关于 Git 的文章时,我注意到很多人都在纠结 Git 的错误信息。我已经习惯这些错误信息很多年了,所以花了很长时间才明白大家为什么会困惑:

  1. 有时我确实被错误信息弄糊涂了,我只是习惯了被弄糊涂而已
  2. 当 Git 给我的错误信息不是很有参考价值时,我有很多策略来获取更多信息。

所以,在这篇文章里,我将逐一分析 Git 的错误信息,列出每条信息中我认为容易混淆的地方,并谈谈当我被错误信息弄糊涂时该怎么做。


你应该使用的现代 Git 命令和功能

我们所有软件工程师每天都在使用 git,但大多数人只接触过最基本的命令,如 addcommitpush 或者 pull,好像还停留在 2005 年。

不过,Git 从那时起引入了许多功能,使用它们能让你的生活变得更轻松,下面就让我们来了解一下最近添加的一些现代 Git 命令。


我不再使用 React.setState 的 3 个理由

Michel Weststrate

CloudBoost

Michel Weststrate published in CloudBoost · Jun 15, 2016

自几个月前,我已在所有我新写的 React 组件弃用 React 的 setState 。别误会我,我没有弃用本地组件状态,我只是不再用 React 去管理它,并且令人愉快!

使用 setState 对初学者来说很棘手。即使经验丰富的 React 程序员在使用 React 自有状态机制时,也很容易引入微妙的 bug,例如:

忘记 React 状态是异步的而引入了 bug,日志输出总是在后面一项。

这篇优秀的 React 文档总结了错误使用 setState 的各种情况:


AI 网页爬虫实验(用 GPT-4 解析 HTML)

从网络搜索结果中解析数据往往是一件麻烦事。但如果有一种方法能让这一艰苦的过程变得轻而易举呢?让我们尝试一下 OpenAI 的新人工智能模型吧。

Hilman Ramadhan

Hilman Ramadhan


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×