我需要访问ubi-8 (ubi-8-codeready-builder)上的CodeReady存储库中的几个包。似乎我无法访问这些包,除非我使用RHEL订阅。
构建注册到RHEL8订阅的RHEL镜像的标准实践是什么?如何为此构建Dockerfile?
发布于 2021-03-11 02:09:48
一种解决方案是将用户名和密码传递给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然后,我可以将用户名和密码作为变量存储在密码文件中(密码应该添加到.gitignore中,这样它就不会被推送到任何中央代码库),并调用docker build,如下所示:
#!/bin/sh
source passwords
docker build \
-t my-image:v1 \
--build-arg USERNAME=${USERNAME} \
--build-arg PASSWORD=${PASSWORD} \
.注意:需要注意的一件事是,每次构建映像时,您都会将映像注册到RedHat。我不能完全确定,但我假设在某个时候,它可能会达到系统注册数量的某个限制。
https://stackoverflow.com/questions/66569777
复制相似问题