Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

8.3. 修改 OpenStack Platform 容器

红帽通过 Red Hat Container Catalog (registry.redhat.io)提供了一组预构建的容器镜像。可以修改这些镜像并向其中添加其他层。这对于向容器添加认证第三方驱动程序的 RPM 非常有用。

注意

为确保继续支持修改后的 OpenStack Platform 容器镜像,请确保生成的镜像符合 "Red Hat Container Support Policy"

本例演示了如何自定义最新的 openstack-keystone 镜像。但是,这些说明也可以应用到其他镜像:

  1. 拉取您要修改的镜像。例如,对于 openstack-keystone 镜像:

    $ sudo docker pull registry.redhat.io/rhosp13/openstack-keystone:latest
  2. 检查原始镜像上的默认用户。例如,对于 openstack-keystone 镜像:

    $ sudo docker run -it registry.redhat.io/rhosp13/openstack-keystone:latest whoami
    root
    注意

    openstack-keystone 镜像使用 root 作为默认用户。其他镜像使用特定用户。例如,openstack-glance-apiglance 用于默认用户。

  3. 创建 Dockerfile 以在现有容器镜像上构建额外层。以下示例从 Container Catalog 拉取最新的 OpenStack Identity (keystone)镜像,并将自定义 RPM 文件安装到镜像中:

    FROM registry.redhat.io/rhosp13/openstack-keystone
    MAINTAINER Acme
    LABEL name="rhosp13/openstack-keystone-acme" vendor="Acme" version="2.1" release="1"
    
    # switch to root and install a custom RPM, etc.
    USER root
    COPY custom.rpm /tmp
    RUN rpm -ivh /tmp/custom.rpm
    
    # switch the container back to the default user
    USER root
  4. 构建并标记新镜像。例如,使用保存在 /home/stack/keystone 目录中的本地 Dockerfile 进行构建,并将其标记为 undercloud 的本地 registry:

    $ docker build /home/stack/keystone -t "192.168.24.1:8787/rhosp13/openstack-keystone-acme:rev1"
  5. 将生成的镜像推送到 undercloud 的本地 registry:

    $ docker push 192.168.24.1:8787/rhosp13/openstack-keystone-acme:rev1
  6. 编辑 overcloud 容器镜像环境文件(通常为 overcloud_images.yaml)并更改适当的参数,以使用自定义容器镜像。
警告

容器目录发布容器镜像,其中包含内置于其中的完整软件堆栈。当容器目录发布包含更新和安全修复的容器镜像时,您现有的自定义容器将 不包括 这些更新,且需要使用从 Catalog 中的新镜像版本重建。