Accelerated Container Image是论文“DADI: Block-Level Image Service for Agile and Elastic Application Deployment.USENIX ATC'20”的开源实现。
它是远程容器镜像的解决方案,支持按需获取镜像数据,无需在容器运行前下载和解压整个镜像。
加速的核心是overlaybd,它提供了作为块设备的一系列基于块的层的合并视图。该存储库是加速集装箱图像的组成部分,提供了由iSCSI和overlaybd的实施TCMU。
设置
系统要求
Overlaybd通过iSCSI协议和TCMU提供虚拟块设备,所以需要TCMU内核模块。TCMU 在 Linux 内核中实现并得到大多数 Linux 发行版的支持。
检查并加载 target_core_user 模块。
modprobe target_core_user
从 RPM/DEB 安装
您可以从Release下载我们的 RPM/DEB 包并安装。
二进制文件安装到/opt/overlaybd/bin/
.
运行/opt/overlaybd/bin/overlaybd-tcmu
,日志存储在/var/log/overlaybd.log
.
最好overlaybd-tcmu
作为服务运行,以便在意外崩溃后可以重新启动。
从源代码构建
要求
要从源代码构建overlaybd,需要以下依赖项:
- CMake >= 3.11
- gcc/g++ >= 7
- Libaio、libcurl、libnl3、glib2 和 openssl 运行时和开发库。
- CentOS/Fedora:
sudo yum install libaio-devel libcurl-devel openssl-devel libnl3-devel glib2-devel
- Debian/Ubuntu:
sudo apt install pkg-config libcurl4-openssl-dev libssl-dev libaio-dev libnl-3-dev libnl-genl-3-dev libglib2.0-dev
建造
你需要 git 来检出源代码:
git clone https://github.com/alibaba/overlaybd.git cd overlaybd
整个项目由 CMake 管理。二进制文件和资源文件将安装到/opt/overlaybd/
.
mkdir build cd build cmake .. make -j sudo make install
最后,为overlaybd-tcmu backstore 设置一个systemd 服务。
sudo systemctl enable /opt/overlaybd/overlaybd-tcmu.service sudo systemctl start overlaybd-tcmu
配置
覆盖配置
默认配置文件overlaybd.json
安装到/etc/overlaybd/
.
{ "logLevel": 1, "logPath": "/var/log/overlaybd.log", "registryCacheDir": "/opt/overlaybd/registry_cache", "registryCacheSizeGB": 1, "credentialFilePath": "/opt/overlaybd/cred.json", "ioEngine": 1, "download": { "enable": true, "delay": 120, "delayExtra": 30, "maxMBps": 100 }, "enableAudit": true, "auditPath": "/var/log/overlaybd-audit.log" }
场地 | 描述 |
日志级别 | 调试 0、信息 1、警告 2、错误 3 |
io引擎 | 用于打开本地文件的IO引擎:psync 0、libaio 1、posix aio 2。 |
日志路径 | 日志文件的路径/var/log/overlaybd.log 是默认值。 |
注册表缓存目录 | 远程图像数据的缓存目录。 |
注册表缓存大小GB | 缓存的最大大小,以 GB 为单位。 |
凭证文件路径 | 用于在注册表上获取图像的凭据。/opt/overlaybd/cred.json 是默认值。 |
下载.启用 | 是否启用后台下载。 |
下载延迟 | 在overlaybd 设备启动后等待开始下载任务的秒数。 |
下载.delayExtra | 延迟附加随机额外延迟,避免同时启动过多任务。 |
下载.maxMBps | 下载任务的速度限制(以 MB/s 为单位)。 |
启用审计 | 是否启用审计。 |
审计路径 | 审计文件的路径/var/log/overlaybd-audit.log 是默认值。 |
注意:download
是后台下载的配置。启动overlaybd 设备后,将运行后台任务以将整个blob 提取到本地目录中。下载后,I/O 请求被定向到本地文件。与其他选项不同,下载配置在设备启动时重新加载。
凭证配置
以下是按credentialFilePath
字段描述的凭证文件示例。
{ "auths": { "hub.docker.com": { "username": "username", "password": "password" }, "hub.docker.com/hello/world": { "auth": "dXNlcm5hbWU6cGFzc3dvcmQK" } } }
需要身份验证时会重新加载凭据。如果使用临时凭证,则必须在到期前更新凭证,否则 overlaybd 会不断重新加载,直到设置了有效的凭证。为了测试方便,我们在阿里云ACR上提供了一个公共注册表,见后面的例子。
重要提示:如果注册表不是公开的,则必须在启动设备之前设置相应的凭据。
下一步是什么?
现在我们已经完成了 overlaybd 的设置,让我们回到Accelerated Container Image repo 并开始运行我们的第一个加速容器。