自定义 Docker 强化镜像
您可以使用 Docker Hub UI 自定义 Docker 强化镜像 (DHI) 以满足您的特定需求。这允许您选择基础镜像、添加包、添加 Artifact 并配置设置。此外,构建管道确保您的自定义镜像安全构建并包含认证。
要将自定义的 Docker 强化镜像添加到您的组织,组织所有者必须首先将 DHI 存储库镜像到您的组织。一旦存储库被镜像,任何有权访问镜像 DHI 存储库的用户都可以创建自定义镜像。
自定义 Docker 强化镜像
要自定义 Docker 强化镜像,请按照以下步骤操作
登录 Docker Hub。
选择我的 Hub。
在命名空间下拉列表中,选择您的拥有镜像 DHI 存储库的组织。
选择强化镜像 > 管理。
对于要自定义的镜像 DHI 存储库,选择最右侧列中的菜单图标。
选择自定义。
此时,屏幕上的说明将指导您完成自定义过程。您可以继续以下步骤以获取更多详细信息。
选择要自定义的镜像版本。
添加包。
在包下拉列表中,选择要添加到镜像的包。
下拉列表中可用的包是所选镜像变体的 OS 系统包。例如,如果您正在自定义 Python DHI 的 Alpine 变体,则列表将包含所有 Alpine 系统包。
在 OCI Artifact 下拉列表中,首先选择包含 OCI Artifact 镜像的存储库。然后,从该存储库中选择要使用的标签。最后,指定要从 OCI Artifact 镜像中包含的特定路径。
OCI Artifact 是您之前构建并推送到与镜像 DHI 相同命名空间中的存储库的镜像。例如,您可以添加自定义根 CA 证书或包含您所需工具的另一个镜像,例如将 Python 添加到 Node.js 镜像中。有关如何创建 OCI Artifact 镜像的更多详细信息,请参阅创建 OCI Artifact 镜像。
当合并包含相同路径的目录和文件的镜像时,列表中靠后的镜像将覆盖靠前镜像中的文件。为了管理这一点,您必须选择要包含的路径,并可选择从每个 OCI Artifact 镜像中排除。这使您能够控制最终自定义镜像中包含哪些文件。
默认情况下,不包含 OCI Artifact 镜像中的任何文件。您必须显式包含您想要的路径。包含路径后,您可以显式排除其下的文件或目录。
注意当运行时必需的文件被 OCI Artifact 覆盖时,镜像构建仍然成功,但您在运行镜像时可能会遇到问题。
选择下一步:配置,然后配置以下选项。
选择创建自定义。
将显示自定义摘要。镜像构建可能需要一些时间。构建完成后,它将显示在存储库的标签选项卡中,您的团队成员可以像拉取任何其他镜像一样拉取它。
编辑或删除 Docker 强化镜像自定义
要编辑或删除 Docker 强化镜像自定义,请按照以下步骤操作
登录 Docker Hub。
选择我的 Hub。
在命名空间下拉列表中,选择您的拥有镜像 DHI 的组织。
选择强化镜像 > 管理。
选择自定义。
对于要管理的自定义 DHI 存储库,选择最右侧列中的菜单图标。在此处,您可以
- 编辑:编辑自定义镜像。
- 新建:基于源存储库创建新的自定义镜像。
- 删除:删除自定义镜像。
按照屏幕上的说明完成编辑或删除。
创建 OCI Artifact 镜像
OCI Artifact 镜像是 Docker 镜像,其中包含您要包含在自定义 Docker 强化镜像 (DHI) 中的文件或目录。这可以包括附加工具、库或配置文件。
在创建用作 OCI Artifact 的镜像时,它应该尽可能最小化,并且只包含必要的文件。
例如,要将自定义根 CA 证书作为受信任 CA 捆绑包的一部分进行分发,您可以使用多阶段构建。这种方法将您的证书注册到系统中并输出更新的 CA 捆绑包,该捆绑包可以提取到最小的最终镜像中。
# syntax=docker/dockerfile:1
FROM <your-namespace>/dhi-bash:5-dev AS certs
ENV DEBIAN_FRONTEND=noninteractive
RUN mkdir -p /usr/local/share/ca-certificates/my-rootca
COPY certs/rootCA.crt /usr/local/share/ca-certificates/my-rootca
RUN update-ca-certificates
FROM scratch
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt您可以按照此模式创建其他 OCI Artifact,例如包含您要包含在自定义 DHI 中的工具或库的镜像。在第一阶段安装必要的工具或库,然后将相关文件复制到使用 `FROM scratch` 的最终阶段。这确保您的 OCI Artifact 最小化且仅包含必要的文件。
将 OCI Artifact 镜像构建并推送到组织命名空间中的存储库,当您选择要添加到自定义 Docker 强化镜像的 OCI Artifact 时,它会自动显示在自定义工作流程中。