FEATURED · 精选文章

CentOS7 Docker镜像换源、构建与排错实践指南

发布时间 / 2026/9/18 12:08:55
来源 / 创域科博编辑部
栏目 / 资讯中心
CentOS7 Docker镜像换源、构建与排错实践指南 1. 为什么 CentOS7 镜像到今天还有人天天在用先说结论Docker 镜像仓库里那几款常用的 CentOS7 镜像到现在依然是很多公司内网、老项目、离线环境里的主力基础镜像。我在几个不同的项目里都反复用过centos:7、centos:7.9.2009这类标签也踩过 yum 源失效、时区不对、systemd 起不来这些坑。这篇文章就是把这些年攒下来的东西一次讲清楚CentOS7 镜像有哪些常用版本、它们之间到底差在哪、怎么拉、怎么改源、怎么自己构建一个能长期用的基础镜像以及出问题的时候该从哪儿查。如果你是刚接触 Docker 的新手这篇能让你少走至少一晚上的弯路如果你已经用了几年容器里面关于 vault 源、体积优化和 systemd 容器的部分大概率也能给你补上几块拼图。我会尽量说人话把每个操作为什么这么干讲明白而不是丢一堆命令让你自己猜。1.1 停更不等于不能用先把现状说清楚CentOS7 在 2024 年 6 月 30 日结束了官方维护周期这件事的直接影响不是系统不能跑了而是官方不再更新软件仓库的常规地址了。操作系统本身仍然可以正常运行内核、glibc、systemd 这些组件都还在跑一个 Java 服务、一个 Nginx、一个 Python 脚本完全没问题。真正出问题的是包管理这条路原本mirrorlist指向的常规仓库地址被下架yum install会直接报找不到元数据。很多人第一次遇到这个情况会以为镜像坏了其实镜像本身好好的坏的是它里面那份默认的 repo 配置文件。这个区别非常重要因为它决定了你的解决方案是换镜像还是改一行配置。绝大多数场景下改配置就够了完全不需要换成 Rocky、Alma 这些替代品——除非你有明确的合规或长期维护要求。我个人的判断标准很简单这套环境是不是还要跑三年以上如果只是把老应用容器化跑起来、或者做个临时验证环境CentOS7 完全够用改个源就能长期稳定工作。如果是要新建一套面向未来的基础设施那确实该考虑替代发行版这个后面会展开说。1.2 官方镜像仓库里那几个标签到底啥关系在 Docker Hub 上搜 CentOS你会看到一堆标签容易看花眼。实际常用的就三类centos:7、centos:7.9.2009以及带日期后缀的其他 7.x 版本。centos:7是一个滚动标签历史上它会指向 7 系列的最新小版本而centos:7.9.2009是固定标签锁定在 7.9 这个最终版本上不会漂移。这个区别在生产环境里是要命的。如果你的 Dockerfile 写的是FROM centos:7理论上上游把标签重新指向别的版本时你的构建结果会变。虽然 CentOS7 已经不再更新漂移的可能性几乎为零但养成锁定具体版本号的习惯依然值得——这是可复现构建的基本功。我现在的习惯是开发阶段可以用centos:7图省事一旦写进正式仓库的 Dockerfile一律改成centos:7.9.2009。另外要提醒一句CentOS 官方镜像本身是极简的只有最基础的一套包连which、curl、vi这些常用工具都没有。很多人第一次进去发现怎么啥都没有不是镜像坏了是它本来就长这样。设计意图是让你按需安装保持体积小。这个取向我觉得是对的但确实需要你在构建时补上常用工具后面我会给一份清单。1.3 选镜像之前必须先问自己的三个问题第一个问题这个容器需不需要联网装包如果需要你就必须处理 yum 源问题无论用哪款 CentOS7 镜像都一样。第二个问题目标机器是什么 CPU 架构x86_64 和 arm64 的镜像不是同一个龙芯这类平台又更特殊拉错了会直接报exec format error。第三个问题容器里的进程是单个前台进程还是需要 systemd 托管一堆服务如果是后者镜像的启动方式和你平时写的完全不一样。这三个问题决定的东西非常多。比如同样是用 CentOS7 镜像只跑一个 Java 进程的话一个 200MB 的镜像就够了但如果要跑 systemd 带一堆常驻服务你就得加--privileged、挂载 cgroup镜像体积也会奔着 400MB 去。我见过有人花了整整两天排查容器里服务起不来最后发现是根本没用 systemd 启动方式白折腾。2. 几款常用 CentOS7 镜像横向拆解2.1 官方 centos:7.9.2009最稳的那个选择centos:7.9.2009是我用得最多的一款。它是 7 系列的最终版本2020 年 9 月发布之后 CentOS7 只做安全补丁不再加新特性。用它的最大好处是冻结——你知道自己拿到的是什么不会因为上游变动而在某个深夜收到构建失败的告警。它的默认内容大概是这样的一个有bash、coreutils、yum、rpm的最小系统root 密码没有设置容器里也不需要默认工作目录是根目录CMD是/bin/bash。整个镜像解压后大约 200MB 出头压缩传输时 70MB 左右。这个体积在今天看不算小但对比 Ubuntu 的完整镜像也不算离谱。需要注意的一个细节是它的/etc/yum.repos.d/目录里默认有三个 repo 文件CentOS-Base.repo、CentOS-CR.repo、CentOS-Sources.repo。其中前两个在停更后都会指向失效地址。你不需要全部删掉只要把 Base 换掉、把 CR 禁用掉日常装包就够用了。Sources 那个是给需要重新编译源码的人用的一般场景留着不影响。2.2 标签对照与体积参考下面这张表是我在自己机器上实际docker images出来的数据x86_64 架构仅供参考。不同时间拉取结果会有细微差别但量级不会变。镜像标签内容说明压缩体积约解压体积约适用场景centos:7.9.20097 系列最终版最稳定75MB205MB生产构建首选centos:7滚动标签现指向 7.9.200975MB205MB临时验证、本地测试centos:7.8.2003较早小版本72MB200MB复现老项目环境centos:7.6.1810更早版本部分老软件依赖70MB195MB特殊兼容需求自构建精简版去掉文档、man、缓存60MB160MB对体积敏感的交付这里有个经验越老的标签仓库里残留的可用性越差因为老的 vault 路径和当前的镜像源结构有时候对不上。如果你没有强烈的必须复现某个历史环境的需求直接用 7.9.2009别为了省几 MB 去挑老版本后面装包的时候会哭。2.3 替代方案什么情况下该换掉 CentOS7说完 CentOS7 本身得聊聊什么时候不该用它。如果你的项目是新建的、预期生命周期超过三年或者公司有明确的软件供应链合规要求那么继续用已经停更的发行版是在给自己埋雷。现在常见的替代路径有几条Rocky Linux 和 AlmaLinux 都是 RHEL 的下游重建版命令、包名、配置方式跟 CentOS7 高度接近迁移成本主要在版本跨度上8/9 的差异比 7 到 8 更大。openEuler 在国内一些场景下也有人用尤其是国产化环境。这些发行版的官方 Docker 镜像都维护得不错rockylinux:9这类标签拉下来基本能无缝替代大部分 CentOS7 用法。但要注意一点替代发行版解决的是未来维护问题不解决历史兼容问题。老项目依赖的具体某个 rpm 包版本、某个特定的 glibc 行为换发行版后不一定还对。所以我的建议是分而治之——新项目用新发行版老项目继续用 CentOS7 镜像加 vault 源不要为了统一而强行迁移那个成本往往比想象中高。2.4 第三方精简镜像值不值得用社区里还有一些基于 CentOS7 做的精简镜像体积能压到 100MB 以内。它们的做法通常是删掉文档、locale、多余的 rpm 数据只保留最小可运行集合。听起来很香但我个人的态度是谨慎。原因有两个。第一是来源不可控你不知道制作者删了什么、留了什么某些包在特定场景下会莫名报错排查起来非常费劲。第二是这类镜像往往不跟进安全更新——虽然 CentOS7 本身也不更新了但至少官方镜像的结构是透明可审计的。如果你对体积真的很敏感我建议的路径是基于官方centos:7.9.2009自己写 Dockerfile 裁剪这样每一处删减你都心里有数出了问题也知道去哪儿找。如果实在要用第三方镜像务必做两件事一是确认它的基础标签能追溯到具体版本二是本地跑一遍你的完整业务流程再上生产。别看着体积小就直接用省下的几十 MB 换来半夜被叫起来排查不值。3. 把镜像拉下来并跑通完整实操流程3.1 Docker 环境准备与守护进程配置先把 Docker 装好。Linux 上用官方脚本或者系统包管理器都行Windows 和 macOS 上装 Docker Desktop 也可以注意 Windows 家庭版需要开启虚拟化支持否则会提示虚拟化相关错误。装完之后跑一句docker version能看到 Client 和 Server 两段输出才算真正装好——只看到 Client 说明守护进程没起来。守护进程配置里我最常改的是两处。一是数据目录默认在/var/lib/docker如果根分区小可以改到数据盘上配置写在/etc/docker/daemon.json{ data-root: /data/docker, log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } }二是日志上限这个太重要了。默认不限制日志大小一个疯狂输出日志的容器能在几天内把磁盘写满。上面这段配置把单文件限制在 100MB、最多保留 3 个基本够用。改完记得systemctl daemon-reload systemctl restart docker。如果你的环境访问 Docker Hub 比较慢可以配置一个 Registry 加速地址。这个配置同样写在daemon.json里的registry-mirrors字段填国内云厂商公开提供的加速地址即可。配好之后docker pull的速度会有明显改善。注意这个字段是数组可以填多个Docker 会按顺序尝试。3.2 拉取镜像与标签固定拉镜像这件事看起来简单其实有讲究。最省事的写法是docker pull centos:7.9.2009但如果你不确定某个标签存不存在可以先搜一下或者直接拉centos:7看它解析到哪儿。我习惯的做法是拉完之后立刻打一个自己的本地标签方便后续引用docker pull centos:7.9.2009 docker tag centos:7.9.2009 registry.internal/base/centos7:7.9.2009把镜像推到自己的私有仓库这一步在很多内网环境里是必须的。因为生产机器往往不能直接访问外部仓库所有镜像都要走内部流转。打标签的时候建议带上完整的版本号别用latest这是基本功。还有一点如果你在 arm64 的机器上拉centos:7.9.2009可能会遇到 manifest 不匹配的问题因为官方镜像的 arm64 支持并不完整。这种情况下要么改用支持多架构的替代发行版要么用 QEMU 做跨架构构建这个后面在问题排查里会细说。3.3 启动容器与基础验证拉完镜像先别急着写 Dockerfile直接跑一个交互式容器进去看看是最快的验证方式docker run -it --rm --name c7test centos:7.9.2009 /bin/bash进去之后依次看几样东西cat /etc/redhat-release确认版本uname -m确认架构ls /etc/yum.repos.d/看仓库文件然后直接跑一次yum makecache。如果这一步报错说明源的问题已经来了别急下一小节的解法就是针对它的。验证的时候还有个容易忽略的点cat /etc/os-release里的VERSION_ID是不是7。有些精简镜像会改这个字段导致后续脚本判断发行版版本的时候走错分支。我自己写过一个安装脚本就因为某个镜像把VERSION_ID改成了别的值脚本直接跑到错误分支上去排查了半天。3.4 换源让 yum 重新可用这是整篇文章里最实用的一段务必记牢。CentOS7 停更后常规仓库地址失效标准解法是把 repo 指向 vault 归档地址。手动改的话编辑/etc/yum.repos.d/CentOS-Base.repo把每一段里的mirrorlist行注释掉启用baseurl并指向 vault 地址。手改容易漏我更推荐直接用 sed 批量处理sed -i s|^mirrorlist|#mirrorlist|g /etc/yum.repos.d/CentOS-Base.repo sed -i s|^#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-Base.repo sed -i s|^enabled1|enabled0|g /etc/yum.repos.d/CentOS-CR.repo yum clean all yum makecache这几行做完yum install就应该恢复正常了。国内环境如果访问 vault 速度慢可以把地址换成国内公共镜像的 vault 路径比如各大云厂商和高校提供的归档目录速度会快很多。下面这个写法更稳直接从源头换掉整个 repo 文件rm -f /etc/yum.repos.d/*.repo cat /etc/yum.repos.d/CentOS-Base.repo EOF [base] nameCentOS-7 - Base baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [updates] nameCentOS-7 - Updates baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [extras] nameCentOS-7 - Extras baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 EOF yum clean all yum makecache注意$basearch这个变量必须保留它会被 yum 自动替换成当前架构写死了会导致跨架构构建失败。另外gpgcheck1时一定要确认对应 key 文件存在否则会报签名验证失败。3.5 网络、时区、语言的一次性配置容器里默认是 UTC 时区跟国内差八小时日志时间全是错的。修复很直接ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo Asia/Shanghai /etc/timezone注意tzdata包得先装上基础镜像里不一定有。如果用yum install -y tzdata装完再设软链顺序别搞反。语言和编码这块CentOS7 基础镜像默认只有POSIXlocale跑一些 Java 应用或者处理中文文件名会出乱码。装glibc-common之后会带上一批 locale然后设置环境变量yum install -y glibc-common localedef -i zh_CN -f UTF-8 zh_CN.UTF-8 echo LANGzh_CN.UTF-8 /etc/locale.conf如果只是跑后端服务不需要中文输出用en_US.UTF-8更省事也避免一些程序的兼容问题。我自己的习惯是面向国内业务且会输出中文的设zh_CN.UTF-8纯后端接口服务一律en_US.UTF-8。网络配置方面容器默认走 bridge 网络能出网就能装包。如果公司内网需要 HTTP 代理才能访问外部可以在构建时通过build-arg传入或者直接在 Dockerfile 里写死代理环境变量——但记得最终镜像里要把代理变量删掉否则运行时会带着无效配置去连代理引起莫名其妙的超时。4. 手搓一个可复用的 CentOS7 基础镜像4.1 Dockerfile 完整写法与逐行解读前面在容器里手动改的东西全部固化进 Dockerfile 才算真正可复用。下面这份是我目前用得比较顺手的版本FROM centos:7.9.2009 LABEL maintaineropsexample.com \ descriptionCentOS7 base image with aliyun vault repo, tzdata and common tools ENV LANGen_US.UTF-8 \ LC_ALLen_US.UTF-8 \ TZAsia/Shanghai # 1. 换源用 vault 归档地址替换失效的官方源 RUN rm -f /etc/yum.repos.d/*.repo \ curl -fsSL -o /etc/yum.repos.d/CentOS-Base.repo \ https://mirrors.aliyun.com/repo/Centos-7.repo \ sed -i s|^mirrorlist|#mirrorlist|g /etc/yum.repos.d/CentOS-Base.repo \ sed -i s|^#baseurlhttp://mirror.centos.org|baseurlhttps://mirrors.aliyun.com/centos-vault|g \ /etc/yum.repos.d/CentOS-Base.repo # 2. 安装基础工具同一层里完成并清理缓存 RUN yum install -y \ tzdata \ glibc-common \ curl \ wget \ vim-enhanced \ less \ which \ tar \ gzip \ unzip \ net-tools \ iproute \ procps-ng \ ca-certificates \ yum clean all \ rm -rf /var/cache/yum/* /tmp/* /var/tmp/* # 3. 时区与 locale RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ echo Asia/Shanghai /etc/timezone \ localedef -i en_US -f UTF-8 en_US.UTF-8 || true CMD [/bin/bash]逐行说几个关键点。rm -f /etc/yum.repos.d/*.repo这一步是必要的因为基础镜像自带的 repo 文件里既有失效地址也有 CR 仓库与其一个个改不如全部清掉重写逻辑更干净。curl -o下载的 repo 文件本身可能还是旧地址所以后面两行 sed 不能省。安装工具的时候yum clean all和rm -rf /var/cache/yum/*一定要放在同一个RUN里。如果分成两个 RUN前一层已经把缓存写进镜像了后面的删除只是在上面盖了一层白文件体积并不会真正减小。这是 Docker 分层机制决定的新手最容易在这儿吃亏。4.2 体积优化从 205MB 压到 160MB 的几个动作基础镜像的体积优化核心思路只有一个让所有产生临时文件的动作都在同一层里完成并清理。除了上面说的 yum 缓存还有几处可以下手。第一是去掉文档和 man 页。可以在 yum 命令里加--setopttsflagsnodocs这样安装包时不会带上/usr/share/doc下的说明文件能省十几 MBRUN echo tsflagsnodocs /etc/yum.conf \ yum install -y ...第二是清理 locale 里用不到的语言包。glibc-common装完会带上几百个 locale 定义如果只需要中英文可以只保留这两个RUN localedef -i zh_CN -f UTF-8 zh_CN.UTF-8 \ localedef -i en_US -f UTF-8 en_US.UTF-8 \ rm -rf /usr/share/locale/*第三是检查有没有残留的日志和临时目录。/var/log/下的 yum 日志、/tmp下的构建中间产物都在同一个 RUN 里清掉。这几步做下来一个带常用工具的基础镜像能控制在 160MB 上下比官方原版省了 40MB 左右。听起来不多但如果你的镜像会被分发到几十上百台机器上累积起来的传输和存储成本是可观的。4.3 构建、验证与推送构建命令没什么花哨的docker build -t registry.internal/base/centos7:7.9.2009-1 -f Dockerfile . docker run --rm registry.internal/base/centos7:7.9.2009-1 yum repolist第二条命令是我每次构建完必跑的验证yum repolist能直接反映源配好没有比进去手动敲快得多。输出里应该能看到 base、updates、extras 三个仓库且状态是 enabled。再验一下时区和编码docker run --rm registry.internal/base/centos7:7.9.2009-1 date docker run --rm registry.internal/base/centos7:7.9.2009-1 localedate输出应该是北京时间locale里LANG应该是你设的值。这两个都对基础镜像就基本没问题了。推送之前记得先在daemon.json里配置好私有仓库的地址如果私有仓库是 HTTP 而非 HTTPS还需要在insecure-registries里加上并重启 Docker 守护进程。推的时候用docker push加完整标签推完在仓库界面确认镜像层完整。4.4 让容器跑 systemd 的正确姿势有些老应用的部署方式是一堆服务交给 systemd 托管容器化时就得让 systemd 在容器里跑起来。这件事跟常规容器用法差别很大我踩过的坑可以单独写一篇。核心命令长这样docker run -d --name c7systemd \ --privileged \ --cgroupnshost \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /etc/localtime:/etc/localtime:ro \ registry.internal/base/centos7:7.9.2009-1 \ /usr/sbin/init几个要点必须说清楚。--privileged是必须的systemd 需要访问大量设备节点--cgroupnshost在使用 cgroup v2 的新内核上是必须的否则 systemd 会因为看不到 cgroup 层级而启动失败挂载/sys/fs/cgroup时用只读模式就够了不要给它写权限。注意能用单进程方式跑就绝对不要用 systemd 容器。--privileged意味着容器基本没有隔离安全边界形同虚设。只有在迁移遗留系统、时间紧任务重的时候才考虑并且这类容器不要暴露到公网。镜像层面还要做一件事Dockerfile 里得把 systemd 相关的包装全并且解开被官方最小化镜像屏蔽的某些 unit。通常在RUN里加一句systemctl mask的反向操作或者干脆装systemd-sysv之类的包来补齐初始化脚本。具体哪些 unit 要处理取决于你要跑的服务没法一概而论进去之后看systemctl --failed逐个修比较实际。5. 踩坑实录与常见问题速查5.1 yum 相关报错速查表下面这些是我自己遇到过的报错按出现频率排序方便你对照排查。报错信息关键词根本原因解决方式Failed to download metadata for repo baserepo 地址失效换成 vault 归档地址Cannot find a valid baseurl for repo$releasever解析异常检查 repo 里是否写死版本号Could not resolve host: mirror.centos.orgDNS 解析失败检查容器 DNS 配置repomd.xml signature could not be verifiedGPG key 缺失或过期重新导入 RPM-GPG-KEY-CentOS-7Error: Nothing to do包名拼错或仓库不含该包用yum search确认包名No space left on device容器磁盘配额用尽清理缓存或扩容其中$releasever那条特别隐蔽。CentOS7 基础镜像里$releasever会解析成7如果你把 vault 地址写成了7.9.2009的固定路径但同时又保留了$releasever变量路径就会拼成/7.9.2009/7/这种无效结构。要么全程用固定路径要么全程用变量别混着来。5.2 网络与 DNS 类问题容器里装不了包有时候不是源的问题是网络的问题。排查顺序建议这样先ping一个域名看能不能解析出 IP能解析说明 DNS 正常然后curl -I一个 HTTP 地址看能不能连通能连通说明出网正常。如果ping不通但curl通那大概率是 ICMP 被禁了不影响装包不用管。DNS 配置方面Docker 默认会把宿主机的 DNS 配置拷进容器。如果宿主机用的是 systemd-resolved 那套容器里可能会拿到127.0.0.53这个地址而容器内部访问不通这个地址表现就是域名解析全失败。解法是在daemon.json里显式指定 DNS{ dns: [223.5.5.5, 119.29.29.29] }配完重启 Docker新建的容器就会用这两个 DNS。已有的容器需要重新创建才生效restart是不行的。还有一类问题是代理。如果容器构建时通过build-arg注入了代理地址但最终镜像里没清理这些环境变量运行时就会一直尝试走一个不存在的代理表现为各种连接超时。检查方式很简单docker run --rm image env | grep -i proxy有输出就说明得清理。5.3 时间、编码与架构类问题时间问题最常见的是差八小时前面说过的软链方式能解决。但有一种情况例外某些程序不读/etc/localtime只看TZ环境变量。所以稳妥的做法是两个都设——既做软链也设TZ环境变量。编码问题表现为中文变问号或者 Java 程序读文件报编码异常。检查locale输出如果LANG是空的或者POSIX那就是没设。注意设完LANG之后还得确认对应的 locale 定义已经生成否则程序会退回默认编码设了也白设。架构问题最典型的是exec format error。这个报错的意思是你拉了一个不同 CPU 架构的镜像比如在 arm64 机器上跑了 amd64 的镜像。确认方式是看docker info里的架构信息跟镜像里的uname -m对比。跨架构构建需要 QEMU 支持或者用buildx做多架构构建这块内容比较多我一般是直接找对应架构的镜像来源能省事就省事。还有一个很隐蔽的坑shell 脚本在 Windows 上编辑后带到 Linux行尾是 CRLF运行时直接报no such file or directory但其实文件明明存在。解法是用dos2unix转一下或者在编辑器里设成 LF。这个问题在构建 entrypoint 脚本时特别容易撞上我在这个坑里至少栽过三次。5.4 几条交了学费才记住的经验第一条永远给基础镜像打上带日期的标签。我吃过一次亏某个基础镜像更新后没改标签所有依赖它的业务镜像重新构建时行为都变了排查了两天才定位到是基础镜像的 locale 配置被改了。后来我的规矩是centos7:7.9.2009-20240601这种格式日期一改就是新镜像旧的不动。第二条把换源、装工具、设时区这些动作全部固化成 Dockerfile不要依赖进容器手动改。手动改的东西只在那个容器实例里有效容器一删就没了。我见过太多人每次起新容器都要重新配一遍效率极低还容易漏步骤。第三条验证一定要在构建阶段做。yum repolist、date、locale这几条检查最好写进 Dockerfile 最后的 RUN 里或者做成构建后的自动化检查脚本。让镜像自己证明自己是好的而不是等到上线才发现源是坏的。第四条容器里的东西越少越好。基础镜像装vim是为了调试方便这个可以接受但如果装了一堆业务不可能用到的工具那就是纯粹的体积浪费和攻击面扩大。我现在的做法是维护两个版本——带调试工具的debug标签给开发用精简的正式标签给生产用各取所需。第五条关于国密和合规如果你的项目涉及特定的加密算法要求基础镜像里的openssl版本和算法支持需要提前确认CentOS7 自带的 openssl 版本较老某些新算法不支持。这种场景下要么自己编译要么换发行版别指望在 CentOS7 上原地解决。我个人在多个项目里反复用下来觉得 CentOS7 镜像的定位很清楚它是老环境的稳定容器化载体不是面向未来的新建基础设施选型。把它的边界认清楚用起来其实很省心——换好源、设好时区、固定住标签一套流程走下来能安稳跑很久。真正会让人头疼的从来不是镜像本身而是那些没想清楚的选型决定和没固化的手动操作。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻