dockerfile - Dockerfile 使用 RHEL8 UBI 镜像注册订阅
问题描述
ubi-8-codeready-builder
我需要访问 ubi-8 ( )上 CodeReady 存储库中的几个包。除非我使用 RHEL 订阅,否则我似乎无法访问这些软件包。
构建向 RHEL 订阅注册的 RHEL8 UBI 映像的标准做法是什么?您如何为此构建 Dockerfile?
解决方案
一种解决方案是将 USERNAME 和 PASSWORD 传递到 Dockerfile。
然后使用 args 注册订阅并启用 CodeReady,如下面的 Dockerfile 所示。
# Basing the build image on RHEL UBI image.
# See `docker search registry.access.redhat.com/ubi`
FROM registry.access.redhat.com/ubi8/ubi:8.1
ARG USERNAME
ARG PASSWORD
# CodeReady contains packages required for develpers (i.e. imake)
# Must register system using RHEL subscription in order to access these packages
RUN subscription-manager register --username ${USERNAME} --password ${PASSWORD} \
&& yum repolist \
&& subscription-manager attach --auto \
&& subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms \
&& yum repolist
然后我可以将 USERNAME 和 PASSWORD 作为变量存储在密码文件中(密码应该添加到 .gitignore 中,这样它就不会被推送到任何中央存储库)并调用 docker build 如下:
#!/bin/sh
source passwords
docker build \
-t my-image:v1 \
--build-arg USERNAME=${USERNAME} \
--build-arg PASSWORD=${PASSWORD} \
.
注意:需要注意的一件事是,每次构建映像时,您都会将映像注册到 RedHat。我不完全确定,但我会假设在某些时候它可能会达到注册系统数量的某个限制。
推荐阅读
- express - 如何在基于 NUXT + EXPRESS 的项目中减小 vendor.js 的大小?
- javascript - 如何附加整个 HTML 集合
- database - 在mac中更改mongo db的位置
- highcharts - 有没有办法将多线图表工具提示格式化为单线?
- javascript - 按数组名称查询 Firestore
- c# - WPF Listview 项目模板
- python - 当我尝试“pip install StyleFrame”时遇到这个错误,知道这个错误是关于什么的吗?
- javascript - 如何在使用 React 时将 URL 从浏览器发送到服务器以进行抓取?
- regex - 使用 Java Regex/Matcher API 提取 JSON ID
- python - 熊猫填充日期+多列