2.7. 修改容器镜像
红帽通过 Red Hat Container Catalog (registry.redhat.io
)提供了一组预构建的容器镜像。可以修改这些镜像并向其中添加其他层。这对于向容器添加认证第三方驱动程序的 RPM 非常有用。
为确保继续支持修改后的 OpenStack Platform 容器镜像,请确保生成的镜像符合 "Red Hat Container Support Policy"。
本例演示了如何自定义最新的 openstack-keystone
镜像。但是,这些说明也可以应用到其他镜像:
流程
拉取您要修改的镜像。例如,对于
openstack-keystone
镜像:$ sudo docker pull registry.redhat.io/rhosp13/openstack-keystone:latest
检查原始镜像上的默认用户。例如,对于
openstack-keystone
镜像:$ sudo docker run -it registry.redhat.io/rhosp13/openstack-keystone:latest whoami root
注意openstack-keystone
镜像使用root
作为默认用户。其他镜像使用特定用户。例如,openstack-glance-api
将glance
用于默认用户。创建
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
构建并标记新镜像。例如,使用保存在
/home/stack/keystone
目录中的本地Dockerfile
进行构建,并将其标记为 undercloud 的本地 registry:$ docker build /home/stack/keystone -t "192.168.24.1:8787/rhosp13/openstack-keystone-acme:rev1"
将生成的镜像推送到 undercloud 的本地 registry:
$ docker push 192.168.24.1:8787/rhosp13/openstack-keystone-acme:rev1
-
编辑 overcloud 容器镜像环境文件(通常为
overcloud_images.yaml
)并更改适当的参数,以使用自定义容器镜像。
容器目录发布容器镜像,其中包含内置于其中的完整软件堆栈。当容器目录发布包含更新和安全修复的容器镜像时,您现有的自定义容器将 不包括 这些更新,且需要使用从 Catalog 中的新镜像版本重建。