使用 S3 作为容器注册表

主要观点:过去四个月作者在开发自定义容器镜像构建器并与 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 标志有关)。
阅读 10
0 条评论