Skip to content

弃用通知

随着 CentOS 7 的 EOL(2024 年 6 月 30 日),此镜像/项目已正式弃用。请相应地调整您的使用。

快速参考

  • 维护者:
    ClefOS 项目

  • 获取帮助的途径:
    Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow

支持的标签和相应的 Dockerfile 链接

无支持的标签

快速参考(续)

  • 问题提交至何处:
    GitHub

  • 支持的架构:(更多信息)
    不支持的架构

  • 已发布的映像工件详细信息:
    repo-info repo 的 repos/clefos/ 目录(历史记录)
    (图像元数据、传输大小等)

  • 图像更新:
    官方镜像仓库的 library/clefos 标签
    官方镜像仓库的 library/clefos 文件(历史记录)

  • 来源:此描述的来源:
    docs 存储库的 clefos/ 目录(历史记录)

ClefOS

ClefOS Linux 是一个社区支持的 IBM Z(又名“大型机”)发行版,源自 CentOS 免费提供给公众的源代码,而 CentOS 又源自 Red Hat Enterprise Linux(RHEL)的 Red Hat 源代码。因此,ClefOS Linux 的目标是在功能上与 CentOS 和 RHEL 兼容。ClefOS 项目主要更改软件包以删除上游供应商的品牌和艺术品。ClefOS Linux 是免费的,可以免费重新分发。每个 ClefOS Linux 版本都根据 CentOS 计划进行维护和发布。

logo

ClefOS 映像文档

clefos:latest 标签始终是当前可用的最新版本。

构建基础镜像

该映像通过 make 命令构建,该命令将创建 tarball 并构建映像。

createBase.sh 脚本用于为 docker 构建命令创建 tarball。该脚本使用带有 tsflags=nodocs 选项的 yum 命令来减小镜像的大小。此外,还从镜像中删除了许多区域设置文件。

VERSION 文件包含当前 ClefOS 版本的 ID,并将作为标签添加到映像中。

滚动构建

ClefOS 项目为所有活跃版本提供定期更新的映像。这些映像将每月更新一次,或根据紧急修复的需要进行更新。这些滚动更新也会标记主要版本号和次要标签。例如,如果 7.4.1708 是最新版本,则构建将生成 clefos:7clefos:7.4.1708 。当下一个次要版本可用时, clefos:7clefos:7.x.yymm 将相同。

Overlayfs 和 yum

最近的 Docker 版本支持 overlayfs 后端,从 Docker 1.13 开始,在大多数支持它的发行版上默认启用。在 ClefOS 7 上,该后端需要安装并启用 yum-plugin-ovl;虽然它在最近的 clefos 映像中默认安装,但如果您更新该文件,请确保在 /etc/yum.conf 中保留 plugins=1 选项;否则,您可能会遇到与 rpmdb 校验和失败相关的错误 - 有关更多详细信息,请参阅 Docker 票证 10180。

包文档

默认情况下,ClefOS 容器是使用 yum 的 nodocs 选项构建的,这有助于减小镜像的大小。如果您安装了一个软件包并发现缺少文件,请注释掉 /etc/yum.conf 中的 tsflags=nodocs 行并重新安装您的软件包。

Systemd 集成

Systemd 未包含在 clefos:7clefos:latest 基础容器中,但可以从这些基础创建:

systemd 基础镜像的 Dockerfile

FROM        clefos:7

ENV         container docker

RUN     yum install -y --setopt=tsflags=nodocs systemd && \
        yum clean all && \
        rm -rf /var/cache/yum/* /tmp/* /var/log/yum.log

RUN         (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
        rm -f /lib/systemd/system/multi-user.target.wants/*;\
        rm -f /etc/systemd/system/*.wants/*;\
        rm -f /lib/systemd/system/local-fs.target.wants/*; \
        rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
        rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
        rm -f /lib/systemd/system/basic.target.wants/*;\
        rm -f /lib/systemd/system/anaconda.target.wants/*;

VOLUME      ["/sys/fs/cgroup"]

CMD         ["/usr/sbin/init"]

Dockerfile 会删除许多可能导致问题的单元文件。从这里,您已准备好构建基础映像。

$ docker build --rm -t local/c7-systemd .

示例 systemd 启用的应用容器

为了使用上面创建的启用了 systemd 的基础容器,您需要创建类似于下面的 Dockerfile

FROM local/c7-systemd
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
EXPOSE 80
CMD ["/usr/sbin/init"]

构建此映像:

$ docker build --rm -t local/c7-systemd-httpd .

运行启用了 systemd 的应用容器

为了使用 systemd 运行容器,您需要从主机挂载 cgroups 卷。下面是一个示例命令,它将运行前面创建的启用了 systemd 的 httpd 容器。

$ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd

此容器在有限的上下文中使用 systemd 运行,并已挂载 cgroups 文件系统。有报告称,如果您使用的是 Ubuntu 主机,则除了 cgroups 挂载之外,还需要添加 -v /tmp/$(mktemp -d):/run

许可证

查看创建此图像的脚本的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证的约束(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 clefos/ 目录中找到。

对于任何预构建的映像使用,映像用户有责任确保对此映像的任何使用都符合其中包含的所有软件的任何相关许可证。