主要观点:过去四个月作者在开发自定义容器镜像构建器并与 Outerbounds 合作,分享了可将 S3 用作容器注册表这一令人惊讶的事,还解释了其工作原理、为何 S3 比 ECR 快及存在的注意事项等。
关键信息:
- 可通过暴露 S3 桶并上传镜像文件到特定路径来实现
docker pull
,如创建运行cowsay
的容器镜像并镜像到桶中可成功运行。 - 开发自定义镜像构建器是为提高速度,在 AWS 环境下最易用的容器注册表是 ECR,但测试发现 S3 上传速度比 ECR 快达 8 倍,原因是 S3 允许并行上传单个层的块,而 ECR 按 OCI 分发规范需顺序上传层。
docker pull
本质是通过 HTTP 请求下载文件,只要静态文件服务器有必要文件且设置正确Content-Type
头,就能从其拉取容器,所以精心构建的 S3 桶可成为容器注册表。- 此做法仍处于实验阶段,虽有性能优势但容器注册表仍有其他功能,如验证图像有效性、运行安全扫描等。
重要细节: - 文中用
R2
举例说明可使用类似 S3 的服务,且R2
与 S3 API 兼容,作者用 AWS SDK 将镜像推到R2
。 - 作者通过测试得出不同环境下 S3 和 ECR 的最小和最大观察速度数据。
- 文中提到可通过查看
docker pull
的内部工作原理即 HTTP 请求来理解其从 S3 拉取容器的过程,还可参考相关文章了解“清单”“块”等概念。 - 文末提及在 Hacker News 上对此文章的讨论及相关补充见解,还调侃了关于“鲸鱼”的事(与 docker 标志有关)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。