我的主机系统是 Windows 10,我想基于 rhel7-atomic 构建一个 Docker 镜像。
Dockerfile:
FROM registry.access.redhat.com/rhel7-atomic
RUN microdnf --enablerepo=rhel-7-server-rpms \
install java-1.8.0-openjdk-headless --nodocs ;\
microdnf clean all
来源:介绍 Red Hat Enterprise Linux Atomic 基础映像
输出:
$ docker build --force-rm=true --no-cache=true -t=rhel .
Sending build context to Docker daemon 5.632kB Step 1/2 : FROM
registry.access.redhat.com/rhel7-atomic ---> 4364d4c393ff Step 2/2 :
RUN microdnf --enablerepo=rhel-7-server-rpms install
java-1.8.0-openjdk-headless --nodocs ;microdnf clean all ---> Running
in 87b753f6bded
(process:6): librhsm-WARNING **: 07:20:18.402: Found 0 entitlement
certificates
(process:6): librhsm-WARNING **: 07:20:18.404: Found 0 entitlement
certificates error: (--enablerepo) repo rhel-7-server-rpms not found
(process:8): librhsm-WARNING **: 07:20:18.433: Found 0 entitlement
certificates
(process:8): librhsm-WARNING **: 07:20:18.435: Found 0 entitlement
certificates Complete. Removing intermediate container 87b753f6bded
---> 77d1aebf6942 Successfully built 77d1aebf6942 Successfully tagged rhel:latest
我也尝试使用 yum 但出现同样的错误。
问题是,我需要为我的主机订阅。我在 developers.redhat.com 上注册了自己,但我无法在 dockerfile 中运行 subscription-manager,因为找不到该命令。我在这里发现了另一个问题,指出主机必须有订阅:Rhel7 原子 docker 基础镜像订阅
因此,看来注册我的主机并附加有效订阅的唯一方法是下载官方 rhel ISO 映像并在 VM 上运行它,将 VM 中的此主机系统订阅到 redhat 并在那里构建我的 docker 映像。
我不喜欢这种方式的原因是,由于缺少订阅,我必须下载 7 GB 的 rhel 映像并启动 VM
这是正确的吗?还是还有其他我遗漏的方法?
使用 CentOS 或 Fedora 作为 docker 构建的基础镜像是否是更好的解决方案?
或者不是订阅的问题而是 Windows 10 上的 docker 安装的问题:https://access.redhat.com/discussions/3219221
答案1
问题是 Windows 10 上的 Docker 不知道 Red Hat 秘诀,并且主机没有提供容器要继承的订阅。要实现这一点,您需要使用 Red Hat yum 存储库中的 docker 包在具有订阅的主机上运行构建。
我建议首先使用 CentOS,假设您需要 Red Hat 兼容性。例如,这可能是需要在生产中在 RHEL 映像/主机上运行的 POC。