跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    Fedora 容器与 rootless

    在 Fedora 上搭容器工作流,第一步不是背命令,而是先看清官方给的清单里有什么——Fedora 的容器文档区与你从别处带来的习惯并不完全一样。本页按「清单 → 引擎 → rootless 与 SELinux → 起点镜像 → 与 EL 系分工」的顺序走。

    工具链清单:官方文档区给了什么

    Section titled “工具链清单:官方文档区给了什么”

    官方容器文档区的 Tools 与 Ecosystem 清单列出 Podman、Buildah、Skopeo、OKD、CRI-O 与 Kubernetes;rootless 与 SELinux 的用法以该文档区与 SELinux 文档为准,装工具与查版本回到 dnf 这条线。

    这张清单值得逐项对照你的工作流:

    • 跑容器:Podman——如果你的肌肉记忆来自 docker,先确认对应操作在这份清单里由哪个工具承担,别假设参数一一对应。
    • 构建镜像:Buildah——面向构建环节,和运行容器不是同一个工具。
    • 搬运与检查镜像:Skopeo——在仓库之间复制、查看镜像信息。
    • 运行时与平台层:CRI-O、Kubernetes,以及清单里同样列出的 OKD。
    • 不可变系统形态:清单里还有 Fedora Silverblue 与 Fedora CoreOS,属于用容器思路组织的系统,见Atomic 桌面与不可变系统。

    引擎选择:Podman 与 docker 的关系

    Section titled “引擎选择:Podman 与 docker 的关系”

    官方清单给出的引擎是 Podman,而不是 docker。这不意味着你不能用别的工具,而是意味着排障时要先确认自己在用哪一条链:

    • 命令像不等于行为像:镜像、卷、网络与权限的默认值都可能不同,迁移脚本前先逐条核对。
    • 守护进程模型不同:一个依赖常驻服务、一个可以按需拉起——这直接影响你在 systemd 侧怎么写单元。
    • 团队协作:如果团队里两种习惯并存,至少把「用哪个引擎跑生产负载」写成明文约定,而不是靠口头默认。

    rootless 与 SELinux:两个必须先查官方的地方

    Section titled “rootless 与 SELinux:两个必须先查官方的地方”

    这两块不要靠记忆:官方容器文档区负责工具与用法,SELinux 的状态与模式另有专页。遇到权限被拒、卷挂载后容器看不到文件这类问题时,正确顺序是先查这两处,再改配置。

    • rootless:容器以你的普通用户身份运行,而不是以 root 身份;具体限制与用法看官方容器文档区。
    • SELinux:容器与宿主机共享文件时的标签问题属于 SELinux 范畴;查询状态与切换模式的做法见官方 SELinux 页。
    • 不要靠关掉安全机制排障:把 SELinux 设成宽松或直接关闭,会把一个问题变成两个问题。

    起点镜像:Base、Minimal Base 与 Toolbox

    Section titled “起点镜像:Base、Minimal Base 与 Toolbox”

    官方下载页列出的容器镜像有 Fedora Container Base、Fedora Container Minimal Base 与 Fedora Container Toolbox 三类;起点选得越薄,你在里面用 dnf 补依赖的动作就越多。

    • Base:通用起点,适合大多数构建与运行场景。
    • Minimal Base:更小的起点,适合对体积敏感、且清楚自己要补哪些依赖的场景。
    • Container Toolbox:面向开发环境的那一类,对应做法见用 Toolbox 做隔离开发环境。
    • 别自己造起点:从发行版官方镜像出发,比从零拼一个根文件系统更容易维护,也更容易解释给同事听。

    容器本身是可移植的,但工具链与文档是跟着发行版走的:

    • 验证新运行时:Fedora 与 EL 系节奏不同,适合先把新工具链与构建流程在这里跑通,再把结论带回 EL 系。
    • 长期在线的负载:把需要长期稳定运行的那一份放在生命周期更长的发行版上,Fedora 侧保留开发与验证环境;节奏差异见Fedora 发布节奏与支持窗口。
    • 服务器场景的取舍:哪些服务适合放在 Fedora 上、哪些不适合,见把 Fedora 用成服务器。
    • 不要把两边的命令当等价物:清单、默认值与策略层的差异,都属于必须回查官方文档的范围。
    • 「docker 命令能跑,所以两边一样」:官方清单给出的引擎是 Podman;参数与默认行为的差异要单独确认。
    • 「rootless 是功能受限的降级方案」:它是常规运行方式,限制点以官方文档为准,而不是靠猜。
    • 「镜像都差不多,随便挑一个起点」:官方清单里的三类镜像对应不同的体积与维护取舍。
    • 「容器里出问题就先关 SELinux」:那只会让你同时面对两个问题。